在不搭建新测试环境的前提下,可以将Standby DB激活后进行测试,但是激活后的Standby DB将不能再用于容灾,必须重建Standby DB。
在实际运营环境中,,我们经常碰到类似这样的需求,譬如想不影响现网业务评估DB补丁在现网环境中运行的时间,或者是想在做DB切换前想连接Standby DB做实际业务运行的测试,如果在9i版本的时候,想做到这样,在不搭建新测试环境的前提下,可以将Standby DB激活后进行测试,但是激活后的Standby DB将不能再用于容灾,必须重建Standby DB。在10g以及11g之后,可以利用新特性很好的解决这个问题,激活的Standby DB可以闪回到激活前的状态,继续参与容灾,而不需要重建。
下面简单说明下实施的步骤:
Oracle 10g环境下:
1:确保设置了Flash Recovery Area。
SQL> show parameter db_recovery
NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
db_recovery_file_dest string /data1/flash_recovery_area
db_recovery_file_dest_size big integer 80G
如果没设置,请使用alter system命令进行设置,需要重启DB。
2:取消Standby DB的同步,创建可保障的还原点。
SQL> alter database recover managed standby database cancel;
SQL> create restore point beforetest guarantee flashback database;
3:激活Standby库进行测试
SQL> alter database activate standby database;
SQL> alter database open;
测试Standby DB已激活并可写打开,之后可以开始进行测试。
4:将激活的Standby 库闪回并重新转换为Standby DB。
SQL> startup mount force
SQL> flashback database to restore point beforetest;
SQL> alter database convert to physical standby ;
5:删除之前创建的还原点并重新开启同步
SQL> startup mount force
SQL> drop restore point beforetest;
SQL> alter database recover managed standby database disconnect from session;
说明在这个过程中,主库到备库的日志传输会报错,建议在主库上将到Standby DB的日志传输先停止:
SQL> alter system set log_archive_dest_state_2=defer;
等闪回后再重新启用日志传输:
SQL> alter system set log_archive_dest_state_2=enable;
oracle 11g环境下:
步骤更简单,11g中加入了Snapshot Standby Database的新特性,其实也就是上面10g功能的一个包装而已,唯一不同的是在转换为读写模式后任然可以继续接受主库过来的归档日志。
步骤如下:
1:取消日志应用
SQL> alter database recover managed standby database cancel;
2:重启并转换成Snapshot Standby Database。
SQL> shutdown immediate;
SQL> startup mount
SQL> alter database convert to snapshot standby;
3:打开后可进行读写相关测试
SQL> alter database open;
4:重新转换成physical Standby并开启同步
SQL > shutdown immediate
SQL> startup mount
SQL> alter database convert to physical standby;
SQL> shutdown immediate;
SQL> startup nomount
SQl> alter database mount standby database;
SQL> alter database open;
SQL> alter database recover managed standby database disconnect from session;
需要注意的点:
10g中创建的还原点必须在闪回后进行删除,否则闪回恢复区可能会被撑满,导致DB Hang住。11g中不用担心这个问题,在重新转换为physical standby时会自动进行还原点删除。
相关阅读:
Oracle DG 修改逻辑Standby端数据
Oracle DG 逻辑Standby创建说明
Oracle DG 逻辑Standby的相关视图管理
Oracle 10g rac Standby 归档日志自动删除脚本
DataGuard 之物理Standby 的监控与管理