ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Oracle 9I dataguard 摘自xiayulai的blog

Oracle 9I dataguard 摘自xiayulai的blog

原创 Linux操作系统 作者:zergduan 时间:2008-03-20 13:48:00 0 删除 编辑

Oracle 9I dataguard

一个主数据库可以有物理standby或逻辑的standby,也可以有两者都有。数据的同步主要是主库将archive log 传送到standby系统上面,然后standby上将archive log恢复(即物理的standby)或者使用logmnr生成sql语句写到standby库上(即逻辑的standby),这样的机制数据是不会立即从主库上到standby上面,不能提供实时性要求高的查询。逻辑standby的数据库可以提供查询功能,物理的standby需要先切换到readonly模式下才能提供查询功能。

物理standby

物理standby在read only状态下不能够恢复redo log,但是可以继续从主库上接收redo log,如果需要的话可以重复转换readonly状态和recovery(redo apply)状态。

物理standby可以作为一个工具去克隆一个新的数据库和原来的一模一样,克隆完了可以直接open(read/write),此时不能接收redo data 从主库上,也不能提供灾难保护。

物理standby 的优点:

1、灾难恢复和高可用性

当主库发生问题时,容易的主备切换机制,可以立即切换到standby,保证最短的宕机时间。

2、数据保护

可以确保数据不丢失,其支持主库支持的任何数据类型、对象以及sql。主库上存储级的物理错误不会被传递到standby上面。Standby在应用日志的时候还会去校验一下redo log的。

3、减低主库的工作压力

首先备份可以使用standby去备份,standby还可以打开刀readonly状态提供查询。

4、性能

应用日志是使用底层的机制去恢复数据,绕过了sql级的代码层,所以对于大量的数据来说它是最有效的恢复机制。

逻辑standby

逻辑standby初始时拷贝了一个和主库一样的数据库,逻辑数据库是执行sql语句生成的数据,即它是处在open的状态下的,可以read/write,但是通过sql重新生成的表是只读的。当表被更新生成时也是可以查询生成报表的,当然可以另外的创建索引去提高性能。逻辑standby是有数据类型、表的类型及sql类型等的限制的。

逻辑standby的优点:

有效的使用了standby库的硬件资源

降低主库的压力

测试例子:

主库: primarydb net service:pdb

备库: standbydb net service:sdb

第一阶段:创建一个物理的standby:

1、修改主库的初始化参数

LOG_ARCHIVE_DEST_2=’SERVICE=sdb optional reopen=180’

LOG_ARCHIVE_DEST_STATE_2=ENABLE

STANDBY_FILE_MANAGEMENT=AUTO

FAL_SERVER=SDB

FAL_CLIENT=PDB

LOG_ARCHIVE_DEST_2作为主库角色时,说明了主库会将日志通过net8传输到net service name为sdb的数据库上,即备库上。Optional是指当主库的联机重做日志没有成功的归档到该地(sdb),也可以被循环使用。此处还有参数mandatory,强制规定联机重做日志归档到该位置后才能够被循环使用。Reopen是指归档过程中发生故障,是否是强制尝试重新归档到目标,此处的reopen=180,是指经过180秒后将尝试重新归档。STANDBY_FILE_MANAGEMENT=AUTO 说明了主库的数据文件的增加删除会自动地应用到备库。FAL_SERVER参数是说明本库作为standby角色时,日志出现传输丢失,告诉standby去哪一个主库去取日志。FAL_CLIENT参数是说明从主库取回日志后送到哪个standby去。

如果主库和备库的数据文件目录不一致,需要在初始化参数中增加:

DB_FILE_NAME_CONVERT=’/data/oradata/primarydb/’,’/data/oradata/standbydb/’

LOG_FILE_NAME_CONVERT=’/arch1/pdb/’,’/arch1/sdb/’,’/arch2/pdb/’,’/arch2/sdb/’

2、主库处于归档模式运行,如果不是请更改为归档模式:

sql>shutdown immediate

sql>startup mount;

sql>alter database archivelog;

sql>alter database open;

sql>

修改初始化参数文件,增加:

LOG_ARCHIVE_DEST_STATE_1=ENABLE

LOG_ARCHIVE_DEST_1=/arch/oradata/

LOG_ARCHIVE_START=TRUE

3、备份主库:冷备或者rman

冷备:将主库shutdown,拷贝数据文件、归档日志文件、在线日志文件。

Rman:

备份数据文件:

Backup database filesperset 2 format='/disk3/oradata/backup/%U_%s.bak';

归档当前日志:

sql "Alter System Archive Log Current";

检查归档日志删除过期的:

Crosscheck archivelog all;

Report obsolete;

Delete noprompt expired archivelog all;

Delete noprompt obsolete;

创建控制文件并备份控制文件和归档日志:

Backup filesperset 10 archivelog all format=’/disk3/oradata/backup/%U_%s.log’;

在sql环境下执行:

Alter database create standby controlfile as ‘/data/oradata/test2/control01.ctl’;

4、给备库准备初始化参数文件

在主库上执行:

sql>create pfile=’/tmp/initpdb.ora’ from spfile;

将该初始化参数文件搞到备库上去。

备库上的目录环境如果按照主库上的一样,则可以不用修改,如果不一样,请修改为备库上的目录环境,主要是控制文件的位置,db_file_name_convert和log_file_name_convert是根据需要来设定的。

Log_archive_dest_1=’location=/arch/sdb/’

Log_archive_dest_2=’service=pdb optional reopen=180’

Fal_server=pdb

Fal_client=sdb

Standby_file_management=auto

当作为standby角色时Log_archive_dest_1这个参数是说明从主库传过来的日志放到的位置,Log_archive_dest_2作为standby角色时是被忽略掉的。

5、将主库备份的数据文件拷到备库

在备库上创建与主库一致的路径(也可以不一致,但是需要和初始化参数文件中指定的一致),将主库的密码文件拷贝到备库,放到相应的位置:$ORACLE_HOME/dbs/。将3步中生成的standby的控制文件拷到对应的目录下,注意要和初始化参数文件中指定的路径数量一致。

启动standby数据库:

sql>Startup nomount pfile=’/opt/oracle/products/9.2.0/dbs/initinstancename.ora’

sql>alter database mount standby database;

如果是冷备,将相应的文件拷贝到对应的位置;

如果是rman备份,使用rman命令进行

rman>restore database;

rman>recover database;此时可能会出现错误,需要手工将主库日志归档,然后拷到备库的日志对应的路径,然后注册alter database register logfile ‘..’,再进行恢复recover automatic standby database until cancel;。

完毕后,将数据库直接启动到自动恢复模式即可:

Alter database recover managed standby database disconnect from session;

至此物理的standby搭建完毕.

可以进行日志切换来测试是否配置成功,alter system switch logfile;

第二阶段:主备库切换

下面介绍物理standby进行相互转换得过程,如上配置已经完全满足了主备库相互转换的要求。

在主库上执行:

sql>alter database commit to switchover to physical standby with session shutdown;

sql>hutdown immediate

sql>tartup nomount pfile=’’

sql>alter database mount standby database;

sql>alter database recover managed standby database disconnect from session;

在备库上执行:

Sql>alter database commit to switchover to primary;

Sql>shutdown immediate

Sql>startup

第三阶段:恢复模式和只读模式切换

Standby从shutdown状态到read only状态。

SQL> STARTUP NOMOUNT pfile=initSTANDBY.ora

SQL> ALTER DATABASE MOUNT STANDBY DATABASE;

SQL> ALTER DATABASE OPEN READ ONLY;

Standby从manual recovery模式下到read only状态

SQL> RECOVER CANCEL

SQL> ALTER DATABASE OPEN READ ONLY;

Standby从managed recovery模式下到read only状态

SQL> RECOVER MANAGED STANDBY DATABASE CANCEL

SQL> ALTER DATABASE OPEN READ ONLY;

从只读模式转到自动恢复模式

SQL> RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION

从只读模式转到手工恢复模式

SQL> RECOVER STANDBY DATABASE DISCONNECT FROM SESSION

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/386081/viewspace-213875/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: OPatch
请登录后发表评论 登录
全部评论

注册时间:2008-03-12

  • 博文量
    77
  • 访问量
    757960