配置了备库就应该设置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;
- SELE