Oracle ADG物理备库环境,应用有变更需求,主备库均开启闪回功能创建还原点,由于应用变更失败,要求回退。所以主库要闪回到指定还原点,这种情况备库同样也需要闪回到还原点,之后主备库正常工作,不需要重新搭建备库环境。
实验环境: RedHat 7.x Oracle Database 12.1.0.2 主库pcdbn (rac) 备库pcdbns (single instance) |
1. 主备库开启flashback特性
--pcdbnALTER SYSTEM SET DB_RECOVERY_FILE_DEST_SIZE = 10G SID='*';ALTER SYSTEM SET DB_RECOVERY_FILE_DEST = '+RECO' SID='*';ALTER DATABASE FLASHBACK ON;--pcdbnsrecover managed standby database cancel;ALTER SYSTEM SET DB_RECOVERY_FILE_DEST_SIZE = 10G SID='*';ALTER SYSTEM SET DB_RECOVERY_FILE_DEST = '+RECO' SID='*';ALTER DATABASE FLASHBACK ON;recover managed standby database disconnect;
2. 主库创建还原点,记住还原点SCN
--pcdbnCREATE RESTORE POINT before_change GUARANTEE FLASHBACK DATABASE;SELECT NAME, SCN, STORAGE_SIZE FROM V$RESTORE_POINT WHERE GUARANTEE_FLASHBACK_DATABASE = 'YES';NAME SCN STORAGE_SIZE------------------------------ ----------------- ------------BEFORE_CHANGE 4171186 52428800alter system switch logfile;
3. 应用开始做变更,数据改变
SQL> select * from tt;ID----------1233 rows selected.--after application data changeSQL> select * from tt;ID----------11001000
4. 应用变更失败,要求回滚数据库到变更前,停止应用服务。
5. 停止备库sql应用
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
6. 闪回主库到还原点
srvctl stop database -d pcdbnexport ORACLE_SID=pcdbn1sqlplus / as sysdbastartup mountflashback database to SCN 4171186; --> 这里的SCN指之前创建还原点时的SCNalter database open read only; -->以只读模式启动,用于验证数据正确性alter database open resetlogs; -->验证数据后以读写模式启动
7. 闪回备库
SELECT CURRENT_SCN FROM V$DATABASE;FLASHBACK STANDBY DATABASE TO SCN 4171186-2; ---->>>>此处的SCN为主库创建还原点时的SCN-2SELECT CURRENT_SCN FROM V$DATABASE;ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;
这样主备库就又处于同步状态了。希望以上内容能够对您有所帮助。
参考:
How To Flashback Primary Database In Standby Configuration (Doc ID 728374.1)
文章转载自长河的笔记,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




