假设我们的数据库主库为newtest2,备库为snewtest2 在备库snewtest2上开启闪回,在备库上MRP可以实时接受数据变化。 SQL> alter database open; Database altered.
SQL> SQL> alter database flashback on; Database altered.
得到一个参考的SCN SQL> select current_scn from v$database; CURRENT_SCN ----------- 1765837 查看闪回数据库特性是打开的。 SQL> select flashback_on from v$database; FLASHBACK_ON ------------------------------------ YES
然后我们在备库上开始failover DGMGRL> DGMGRL> failover to snewtest2; Performing failover NOW, please wait... Failover succeeded, new primary is "snewtest2" DGMGRL> 操作很快完成,我们查看备库此时的状态和角色 SQL> select open_mode,database_role from v$database; OPEN_MODE DATABASE_ROLE ---------------------------------------- -------------------------------- READ WRITE PRIMARY 当然这个步骤可以做一些读写操作之类的。 然后我们开始计划切回备库。 SQL> shutdown immediate
SQL> startup mount
然后开启闪回数据库,恢复到指定的SCN,这个时候要注意,此时还是主库。 SQL> flashback database to scn 1765837; Flashback complete. 我们需要切换为备库,这个时候切换的命令就是关键,不是使用switchover的方式。 SQL> alter database convert to physical standby; Database altered. 当然这个时候数据库在nomount阶段,我们需要重启备库。 SQL> alter database mount; alter database mount * ERROR at line 1: ORA-00750: database has been previously mounted and dismounted
SQL> shutdown immediate SQL> startup mount
重新配置一下DG Broker即可,可以设置dg_broker_start=false,停掉dmon,然后删掉$ORACLE_HOME/dbs下的dr*newtest2.dat的配置文件,重新配置DG Broker即可。 配置起来都是老套路。 简单配置后,DG Broker的检查就正常了。 DGMGRL> DGMGRL> show configuration; Configuration - dg_newtest2 Protection Mode: MaxPerformance Databases: newtest2 - Primary database snewtest2 - Physical standby database Fast-Start Failover: DISABLED Configuration Status: SUCCESS DGMGRL> 对应的数据库日志中可以看到后台已经开始应用日志了。 RFS[2]: Assigned to RFS process 44981 RFS[2]: Selected log 5 for thread 1 sequence 48 dbid 795252212 branch 921251959 Tue Aug 30 21:32:01 2016 Archived Log entry 5 added for thread 1 sequence 48 ID 0x2f7352f8 dest 1: Tue Aug 30 21:32:01 2016 Media Recovery Log /U01/app/oracle/fast_recovery_area/SNEWTEST2/archivelog/2016_08_30/o1_mf_1_48_cwc2pk57_.arc Media Recovery Waiting for thread 1 sequence 49 (in transit) Recovery of Online Redo Log: Thread 1 Group 4 Seq 49 Reading mem 0 Mem# 0: /U01/app/oracle/fast_recovery_area/SNEWTEST2/onlinelog/o1_mf_4_cwc0lmr7_.log 当实现这个看起来有些特殊的需求的时候,我真心内心充满了喜悦,也着实惊叹Oracle的闪回给备库带来了如此多的改进。