配置了备库就应该设置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)
阅读(5648) | 评论(0) | 转发(0) |