Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2076021
  • 博文数量: 437
  • 博客积分: 1860
  • 博客等级: 上尉
  • 技术积分: 4854
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-07 08:51
个人简介

偶尔有空上来看看

文章分类

全部博文(437)

文章存档

2021年(166)

2020年(115)

2019年(11)

2018年(9)

2017年(9)

2016年(17)

2015年(7)

2014年(4)

2013年(1)

2012年(11)

2011年(27)

2010年(35)

2009年(11)

2008年(11)

分类: Oracle

2021-08-15 22:20:28

配置了备库就应该设置force_logging为YES,不然如果有sqlldr等nologging操作有可能会导致备库出现坏块。为了修复还得把整个文件重新同步。



  1. -- 1.备库上检查哪些文件发生过nologging
  2. col FIRST_NONLOGGED_SCN for 999999999999
  3. SELECT FILE#, FIRST_NONLOGGED_SCN FROM V$DATAFILE WHERE FIRST_NONLOGGED_SCN > 0;

  4. -- 2.备库上offline这些文件
  5. --RECOVER MANAGED STANDBY DATABASE CANCEL; --停mrp
  6. ALTER DATABASE DATAFILE 4 OFFLINE FOR DROP; --根据步骤1检查的结果,可能有多个文件
  7. --RECOVER MANAGED STANDBY DATABASE using CURRENT LOGFILE DISCONNECT;

  8. -- 3.主库上备份那些文件(根据步骤1的检查结果)
  9. BACKUP INCREMENTAL FROM SCN 225979 DATAFILE 4 FORMAT '/tmp/ForStandby_%U' TAG 'FOR STANDBY';
  10. scp /tmp/ForStandby_* 备库:/tmp

  11. -- 4.备库上恢复这些增量备份
  12. CATALOG START WITH '/tmp/ForStandby_';
  13. --RECOVER MANAGED STANDBY DATABASE CANCEL;
  14. ALTER DATABASE DATAFILE 4 ONLINE;
  15. RECOVER DATAFILE 4,5,6,7,8 NOREDO;
  16. SELECT FILE#, FIRST_NONLOGGED_SCN FROM V$DATAFILE WHERE FIRST_NONLOGGED_SCN > 0;

  17. -- 5.重新创建备库控制文件(Doc ID 459411.1)
  18. 主库
  19. alter database create standby controlfile as '/tmp/ForStandby_Ctl';
  20. scp /tmp/ForStandby_Ctl 备库:/tmp/
  21. 备库
  22. mv /tmp/ForStandby_Ctl /oradata/orcl/control01.dbf
  23. startup mount

  24. -- 6.备库恢复同步
  25. DELETE BACKUP TAG 'FOR STANDBY';
  26. RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT;


清理主库的文件
rm -fr /tmp/ForStandby_*

如果是12c的话,前5步通过一个命令即可完成
  --备库上
  1. recover database from service TNS_PRIM noredo using compressed backupset;


参考:
使用 RMAN 增量备份前滚备用数据库以修复 Nologging 更改(文档 ID 958181.1)
阅读(2436) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~