当logfile被误删除后
数据库的logfile被rm删除,每个logfile group仅有一个logfile member,当该logfile变为current时发现问题。
数据库仍然可以正常运行,但是LNS进程报错称找不到被删除的logfile。我们使用lgwr async模式传输redo到远端physical standby,physical standby无法得到被删除的logfile。
从pfiles中可以看出,因为lgwr进程每时每刻都获得所有logfile的文件句柄,所以虽然该logfile被删除,lgwr还是可以正常读写该logfile,数据库还是可以正常的运行。
但是lns进程只是获得当前的文件句柄,所以当切换到被删除的logfile时,lns进程不能访问该文件。
XFAN primary$> ps -ef |grep lns1|grep XFAN
oracle 17579 1 0 03:02:06 ? 0:01 ora_lns1_XFAN
XFAN primary$> pfiles 17579 | grep redo
/oracle/SCRATCH/data03/XFAN/redo/.redo2.log::cdev:vxfs: ― LNS process only hold redo2.log’s handler
XFAN primary$> ps -ef |grep lgwr|grep XFAN
oracle 16377 1 0 02:44:54 ? 0:01 ora_lgwr_XFAN
XFAN primary$> pfiles 16377 |grep redo
/oracle/SCRATCH/data03/XFAN/redo/.redo1.log::cdev:vxfs:
/oracle/SCRATCH/data03/XFAN/redo/.redo2.log::cdev:vxfs:
/oracle/SCRATCH/data03/XFAN/redo/.redo3.log::cdev:vxfs:
/oracle/SCRATCH/data03/XFAN/redo/.redo4.log::cdev:vxfs: ― LGWR process hold all redo log files’ handler
首先做的是在primary数据库上清除该logfile,过程如下:
1. 切换到好的logfile group
alter system switch logfile;
2. checkpoint,使该logfile的状态从active变为inactive
alter system checkpoint;
3. 清除该logfile,因为不能被归档,所以要加上unarchived
alter database clear unarchived logfile group x;
因为中间少了一个archive log,所以physical standby不能继续recover。
使用incremental backup来修复该physical standby,大约花费6个小时。如果重新build standby,大约需要花费一个星期。
建议继续学习:
- 用 LD_PRELOAD 挽救被误删的 libc.so.6 (阅读:4155)
- MySQL从压缩文件恢复数据 (阅读:3677)
- 参数_smon_internal_errlimit与数据库恢复 (阅读:3174)
- MySQL 备份和其恢复机制原理简述 (阅读:3109)
- 用bin日志中恢复MySQL数据库 (阅读:2680)
- 用CloneZilla制作紧急恢复分区 (阅读:2631)
- Zmanda让MySQL的备份与恢复更加方便快捷灵活 (阅读:2322)
- EXT文件系统误删除数据恢复指南 (阅读:2161)
- Oracle数据库恢复:存储故障导致的数据损坏 (阅读:2003)
- Oracle数据库恢复:归档日志损坏案例一则 (阅读:1897)
扫一扫订阅我的微信号:IT技术博客大学习
- 作者:Eagle Fan 来源: eagle's home
- 标签: logfile 恢复
- 发布时间:2010-04-01 13:29:20
- [66] Go Reflect 性能
- [65] Oracle MTS模式下 进程地址与会话信
- [64] 如何拿下简短的域名
- [59] android 开发入门
- [59] IOS安全–浅谈关于IOS加固的几种方法
- [58] 图书馆的世界纪录
- [58] 【社会化设计】自我(self)部分――欢迎区
- [53] 视觉调整-设计师 vs. 逻辑
- [47] 界面设计速成
- [46] 读书笔记-壹百度:百度十年千倍的29条法则