配置了备库就应该设置force_logging为YES,不然如果有sqlldr等nologging操作
有可能会导致备库出现坏块。为了修复还得把整个文件重新同步。
-
-
-- 1.备库上检查哪些文件发生过nologging
-
col FIRST_NONLOGGED_SCN for 999999999999
-
SELECT FILE#, FIRST_NONLOGGED_SCN FROM V$DATAFILE WHERE FIRST_NONLOGGED_SCN > 0;
-
-
-- 2.备库上offline这些文件
-
--RECOVER MANAGED STANDBY DATABASE CANCEL; --停mrp
-
ALTER DATABASE DATAFILE 4 OFFLINE FOR DROP; --根据步骤1检查的结果,可能有多个文件
-
--RECOVER MANAGED STANDBY DATABASE using CURRENT LOGFILE DISCONNECT;
-
-
-- 3.主库上备份那些文件(根据步骤1的检查结果)
-
BACKUP INCREMENTAL FROM SCN 225979 DATAFILE 4 FORMAT '/tmp/ForStandby_%U' TAG 'FOR STANDBY';
-
scp /tmp/ForStandby_* 备库:/tmp
-
-
-- 4.备库上恢复这些增量备份
-
CATALOG START WITH '/tmp/ForStandby_';
-
--RECOVER MANAGED STANDBY DATABASE CANCEL;
-
ALTER DATABASE DATAFILE 4 ONLINE;
-
RECOVER DATAFILE 4,5,6,7,8 NOREDO;
-
SELECT FILE#, FIRST_NONLOGGED_SCN FROM V$DATAFILE WHERE FIRST_NONLOGGED_SCN > 0;
-
-
-- 5.重新创建备库控制文件(Doc ID 459411.1)
-
主库
-
alter database create standby controlfile as '/tmp/ForStandby_Ctl';
-
scp /tmp/ForStandby_Ctl 备库:/tmp/
-
备库
-
mv /tmp/ForStandby_Ctl /oradata/orcl/control01.dbf
-
startup mount
-
-
-- 6.备库恢复同步
-
DELETE BACKUP TAG 'FOR STANDBY';
-
RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT;
-
清理主库的文件
rm -fr /tmp/ForStandby_*
如果是12c的话,前5步通过一个命令即可完成
--备库上
-
recover database from service TNS_PRIM noredo using compressed backupset;
参考:
使用 RMAN 增量备份前滚备用数据库以修复 Nologging 更改(文档 ID 958181.1)
阅读(5913) | 评论(0) | 转发(0) |