本文共 3117 字,大约阅读时间需要 10 分钟。
我们来通过实战演练一下,当然这个操作需要保证主备库都开启了闪回数据库的特性,在11g中开启已经不再需要重启数据库,open阶段即可随时开关。
主库的操作如下:
我们创建一个表test,插入2行记录。
SQL> select count(*)from n1.test; COUNT(*) ---------- 2 然后我们得到一个初始的SCN值。 SQL> select current_scn,database_role,flashback_on from v$database; CURRENT_SCN DATABASE_ROLE FLASHBACK_ON ----------- ------------------------------ ------------------------------------ 2084486 PRIMARY YES 检查DG Broker的状态,这里snewtest2是主库,newtest2是备库。 DGMGRL> show configuration; Configuration - dg_newtest2 Protection Mode: MaxPerformance Databases: snewtest2 - Primary database newtest2 - Physical standby database Fast-Start Failover: DISABLED Configuration Status: SUCCESS 然后我们开始测试这个方案。备库的操作如下:
DGMGRL> switchover to newtest2; Performing switchover NOW, please wait... New primary database "newtest2" is opening... Operation requires startup of instance "newtest2" on database "snewtest2" Starting instance "newtest2"... ...切换之后查看DG Broker的状态,也看到主备库的角色已经调整过来了。
DGMGRL> show configuration;
Configuration - dg_newtest2 Protection Mode: MaxPerformance Databases: newtest2 - Primary database snewtest2 - Physical standby database Fast-Start Failover: DISABLED Configuration Status: SUCCESS 这个时候我们查看表test的数据。 SQL> select count(*)from n1.test; COUNT(*) ---------- 2然后开始破坏。直接truncate
SQL> truncate table n1.test; Table truncated.这个时候业务层面发现了数据的连锁错误,准备开始回退到初始的状态。
SQL> shutdow immediate SQL> startup mount开始闪回数据库,恢复到初始的数据状态
SQL> flashback database to scn 2084486;
Flashback complete.这个时候需要resetlogs
SQL> alter database open resetlogs; Database altered.原来的主库操作如下:先初步验证,发现这个时候DG Broker验证失败。
DGMGRL> show configuration; Configuration - dg_newtest2 Protection Mode: MaxPerformance Databases: newtest2 - Primary database snewtest2 - Physical standby database Error: ORA-16810: multiple errors or warnings detected for the database Fast-Start Failover: DISABLED Configuration Status: ERROR 我们关闭日志的应用。 SQL> recover managed standby database cancel;然后开始闪回到指定的SCN
SQL> flashback database to scn 2084486; Flashback complete. 完成之后,重新开启日志应用。 SQL> recover managed standby database disconnect from session; Media recovery complete.这个时候操作成功,我们就直接开启ADG,把数据库开启到open状态。
SQL> alter database open;稍作等待,就会发现备库的状态为READ ONLY WITH APPLY.
SQL> select open_mode from v$database;
OPEN_MODE ---------------------------------------- READ ONLY WITH APPLY 这个时候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 这个过程让我对闪回的强大功能又有了新的认识和了解,希望在一些极端场景中依然能够帮助到你们。来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/23718752/viewspace-2124543/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/23718752/viewspace-2124543/