如何临时激活standby库用于测试:
在实际运营环境中,我们经常碰到类似这样的需求,譬如想不影响现网业务评估DB补丁在现网环境中运行的时间,或者是想在做DB切换前想连接Standby DB做实际业务运行的测试。
10g可以通过创建闪回点来实现,将激活的Standby DB闪回到激活前的状态:
1.确保设置了Flash Recovery Area。
SYS@stddb>show parameter db_recoveryNAME TYPE VALUE
db_recovery_file_dest string /u01/app/oracle/fast_recovery_areadb_recovery_file_dest_size big integer 4182M
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;SYS@stddb>select open_mode from v$database;OPEN_MODEREAD WRITE
测试Standby DB已激活并可写打开,之后可以开始进行测试。
4:将激活的Standby 库闪回并重新转换为Standby DB。
SQL> startup mount forceSQL> flashback database to restore point beforetest;SQL> alter database convert to physical standby ;
5:删除之前创建的还原点并重新开启同步
SQL> startup mount forceSQL> 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;
11g中加入了Snapshot Standby Database的新特性,其实也就是上面10g功能的一个包装而已,唯一不同的是在转换为读写模式后仍然可以继续接受主库过来的归档日志。
步骤如下:
1:取消日志应用
SQL> alter database recover managed standby database cancel;
2:重启并转换成Snapshot Standby Database。
SQL> shutdown immediate;SQL> startup mountSQL> alter database convert to snapshot standby;
3:打开后可进行读写相关测试
SQL> alter database open;SYS>select open_mode from v$database;OPEN_MODE--------------------READ WRITE
4:重新转换成physical Standby并开启同步
SQL > shutdown immediateSQL> startup mountSQL> alter database convert to physical standby;SQL> shutdown immediate;SQL> startup nomountSQl> 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时会自动进行还原点删除。