[转]ORACLE联机日志文件无故全部消失
http://space.itpub.net/519536/viewspace-606533
操作系统: Windows XP
数据库版本: Oracle 10.2.0.1
归档模式: 非归档
备份策略: 没有任何的备份策略,无备份可用
用途: 测试数据库
【故障描述】
今天在启动本机测试用数据库时惊现数据库无法启动,提示如下:
C:\>sqlplus / as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on Tue Jun 16 18:25:43 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup;
ORACLE instance started.
Total System Global Area 167772160 bytes
Fixed Size 1247876 bytes
Variable Size 75498876 bytes
Database Buffers 83886080 bytes
Redo Buffers 7139328 bytes
Database mounted.
ORA-00313: open failed for members of log group 1 of thread 1
ORA-00312: online log 1 thread 1: 'C:\ORACLE\PRODUCT\10.2.0\ORADATA\SEC\REDO01.LOG'
SQL>
如上提示,系统找不到联机日志文件,一身冷汗,就算是测试数据库也不能就这样“挂”了啊!
顺着错误提示的目录,进入到日志文件所在的目录,哇塞,全部的日志文件都不见了!(现在想想,可能是因为这个测试数据库我好久没有问津了,也许在某一次的C盘文件批量整理的过程中连带这些重要的文件一同“整理”掉了),心中不免有些紧张,转念一想幸好是测试数据库,释然一下下,于是……我决定————恢复之,现把整个的恢复过程记录如下,希望屏幕前的您不要再犯我这样的错误了,作为一位DBA是绝对不应该允许自己犯这样的错误,即使是纯纯的测试数据库。
【故障分析】
因为是全部的日志文件都被删除了,所以既包含当前联机日志,也包含非当前联机日志,我恢复的顺序是:先通过Clear的方式恢复非当前联机日志,再通过设置隐含参数_allow_resetlogs_corruption=TRUE的方式恢复当前联机日志(使用这种极端的恢复方式是我不想看到的,没有办法,谁叫我没有备份呢,找了半天连冷备都没做过。如果您有备份,记住要优先考虑使用备份进行恢复)。
【故障处理】
1.通过v$log视图确定哪些是当前联机日志和非当前联机日志
SQL> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIM
------- ------- ---------- -------- ------- --- -------- ------------- ---------
1 1 2 52428800 1 NO CURRENT 272945 16-JUN-09
3 1 1 52428800 1 NO INACTIVE 252940 16-JUN-09
2 1 0 52428800 1 YES UNUSED 0
确定如下:
group 1是当前联机日志
group 2 和group 3是非当前联机日志
2.通过Clear方式恢复非当前联机日志group 2 和group 3
SQL> alter database clear logfile group 2;
Database altered.
SQL> alter database clear logfile group 3;
Database altered.
此时查看日志文件所在的目录会依次恢复出两个50M的日志文件REDO02.LOG和REDO03.LOG
(注释:如果是该日志组还没有归档,则需要用如下的SQL命令进行操作
alter database clear unarchived logfile group 2;)
3.恢复当前联机日志 group 1,先演示确认一下通过clear的方式无法恢复当前联机日志
SQL> alter database clear logfile group 1;
alter database clear logfile group 1
*
ERROR at line 1:
ORA-00313: open failed for members of log group 1 of thread 1
ORA-00312: online log 1 thread 1: 'C:\ORACLE\PRODUCT\10.2.0\ORADATA\SEC\REDO01.LOG'
ORA-27041: unable to open file
OSD-04002: unable to open file
O/S-Error: (OS 2) The system cannot find the file specified.
4.设置隐含参数_allow_resetlogs_corruption为“TRUE”
生成pfile
SQL> create pfile from spfile;
File created.
停掉数据库
SQL> shutdown immediate;
ORA-01109: database not open
Database dismounted.
ORACLE instance shut down.
在生成的pfile(对应文件是C:\oracle\product\10.2.0\db_1\database\INITsec.ORA)最后一行添加如下内容,保存退出
_allow_resetlogs_corruption=TRUE
5.使用pfile启动数据库到mount状态
SQL> startup mount pfile=C:\oracle\product\10.2.0\db_1\database\INITsec.ORA;
ORACLE instance started.
Total System Global Area 167772160 bytes
Fixed Size 1247876 bytes
Variable Size 75498876 bytes
Database Buffers 83886080 bytes
Redo Buffers 7139328 bytes
Database mounted.
6.利用until cancel进行恢复
SQL> recover database until cancel;
ORA-00279: change 274548 generated at 06/16/2009 19:15:54 needed for thread 1
ORA-00289: suggestion : C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\SEC\ARCHIVELOG\2009_06_16\O1_MF_1_1_%U_.ARC
ORA-00280: change 274548 for thread 1 is in sequence #1
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
cancel
ORA-01547: warning: RECOVER succeeded but OPEN RESETLOGS would get error below
ORA-01194: file 1 needs more recovery to be consistent
ORA-01110: data file 1: 'C:\ORACLE\PRODUCT\10.2.0\ORADATA\SEC\SYSTEM01.DBF'
ORA-01112: media recovery not started
7.resetlogs方式打开数据库
SQL> alter database open resetlogs;
Database altered.
这时在日志文件所在的目录中就可以看到被恢复出来的当前联机日志REDO01.LOG
8.到此,恢复过程完成,后续任务一:进行全库的EXP备份
C:\>exp system/system file=exp_full_backup.dmf log=exp_full_backup.log full=y
9.后续任务二:取消隐含参数_all_resetlogs_corrupt
10.后续任务三:重建数据库
11.后续任务四:使用IMP将刚刚备份的文件导入到数据库中
12.检查一下是否有无效的对象,处理之
13.搞定!
【总结】
针对这个测试库,如果我有备份,恢复过程将大大简化,也许只需要此恢复过程的1/10时间。
所以,
请每一位亲爱的DBA记住,为了缩短故障时间,最有效的方法就是——————备份!制定有效的备份策略,即便这个数据库仅仅用于测试和娱乐。
转载于:https://www.cnblogs.com/einyboy/archive/2012/07/25/2608748.html
[转]ORACLE联机日志文件无故全部消失相关推荐
- ORACLE联机日志文件丢失或损坏的处理方法(转)
经验总结: 联机日志分为当前联机日志和非当前联机日志,非当前联机日志的损坏是比较简单的,一般通过clear命令就可以解决问题. 损坏非当前联机日志: 1.启动数据库,遇到ORA-00312 or OR ...
- oracle 日志丢失,Oracle联机日志文件丢失解决方法一例
由于丢失的当前的联机日志文件,所以可能会丢失部分数据,破坏数据库的完整性,而且普通的重建日志文件的方式是不可行的,这个时候我们需要借助隐含参数_ALLOW_READ_ONLY_CORRUPTION或者 ...
- oracle查看联机日志,oracle联机日志和归档日志
联机日志文件又叫重做日志文件,记录了对数据库修改的信息,包括用户对数据修改和数据库管理员对数据库结构的修改,一个oracle实例有一组或多组联机日志,每组至少包含1个或者多个日志成员,这里要多个日志成 ...
- 向oracle增加两个重做日志组文件,Oracle重做日志文件
Oracle重做日志文件 原理:重做日志记录将以循环的方式在sga区的重做日志高速缓冲区中进行缓存,并由后台进程LGWR写入到重做日志文件中. 重做日志文件记录了对数据文件的修改操作,还记录了对回滚段 ...
- oracle 重做日志内容,oracle重做日志文件
以下易容翻译自oracle dba官方文档,不足之处还望指出. 管理重做日志文件 学习目标: 1.解释重做日志文件的目的 2.描述重做日志文件的结构 3.学会控制日志切换与检查点 4.多元化管理重做日 ...
- 正确删除ORACLE归档日志文件
在controlfile中记录着每一个archivelog的相关信息,当然们在OS下把这些物理文件delete掉后,在我们的 controlfile中仍然记录着这些archivelog的信息,在ora ...
- oracle删除日志文件
oracle删除日志文件 删除日志文件的语法例如以下: alter database drop logfile member logfile_name; 删除日志文件须要注意例如以下几点: 1.该日志 ...
- oracle 创建日志文件,oracle创建日志文件
一团网资讯 一团资讯 > oracle > oracle创建日志文件 oracle创建日志文件 2018-04-14 15:39:48 发布者:来源网络 创建日志文件的语法如下: ...
- oracle的脚本日志,学习笔记:Oracle alert日志文件巡检脚本
天萃荷净 分享一篇Oracle alert日志文件巡检脚本 每天都检查oracle日志,所以写了一个比较完善的shell,让其自动处理,在运行程序之前,需要在该脚本目录下新建tmp目录 #!/usr/ ...
最新文章
- Qt实现主界面圆角化
- HTML span标签学习笔记
- Linux shell:执行shell脚本的几种方式
- 奇奇seo优化软件_西藏seo关键词优化软件
- python分句_Python循环中的分句,继续和其他子句
- 定义一个Matrix类,实现矩阵的加法和乘法
- 基于jenkins的go语言项目自动化发布遇到的坑
- sass webpack_如何在Visual Studio和Webpack中编译Sass文件
- 漫画:唐玄奘教你横扫 AVL 树面试题无敌手!
- [转载]QMessageBox 用法_vortex_新浪博客
- linux系统根目录执行了chmod,根目录执行chmod -R 777 / 的补救方法
- 如何在csdn网站搜索自己写的博客文章
- 恩智浦智能车入门——一定避免那些坑
- 电脑监控软件应该怎样安装?安装简单吗?
- SAXReader解析
- 计算机专业英语课程内容,《计算机专业英语》课程教学大纲
- win7连接打印机0x0000011b错误的解决办法
- python pandas修改列名,Python_Pandas学习笔记02:DataFrame获取列名和修改列名
- web打印插件 js打印插件 网页打印插件
- WebRTC中的信令和内网穿透技术 STUN / TURN
热门文章
- linux设备驱动程序架构的研究,Linux设备驱动程序学习(12)-Linux设备模型(底层原理简介)...
- jsoup Java HTML解析器
- jqueryui时间插件_jQueryUI菜单插件教程示例
- node.js 创建服务器_Node.js HTTP软件包–创建HTTP服务器
- 使用PDF-XChange Editor为PDF文件添加图章(仅图片)
- C# 视频播放控件 wmp、vlc、aplayer
- 安装Ubuntu时,提示“没有根文件系统 ”
- 开课吧Web:Web前端入行门槛低吗?
- BSGS-BabyStepGiantStep算法+拓展
- jquery中的全局事件