ora-00314日志文件损坏恢复数据库
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
●做法:
打开init.ora,添加一行文字:
_allow_resetlogs_corruption=true
然后再进行以下操作:
SVRMGR>shutdown abort;
SVRMGR>startup mount;
SVRMGR>recover database until cancel
此时数据库提示
SVRMGR> recover database until cancel;
ORA-00279: change 3684318 generated at 12/30/2003 10:55:34 needed for thread 1 ORA-00289: suggestion : D:\ORACLE\ORA81\RDBMS\ARC00001.001
ORA-00280: change 3684318 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: 'D:\ORACLE\ORADATA\ORACLE\SYSTEM01.DBF'
SVRMGR>alter database open noresetlogs;
提示:
Statement processed.
这时,数据库已经起来了。
●做法2(不得已)
介绍一个意外情况,如果上面的方法不成功,数据库还是不能open,采用recover,restore 都不成功,说明logfile可能已经损坏,数据库打开需要做一致性检查,所以不能正常打开。
因为数据库未作过备份,为了尽可能地减少损失,采用打开数据库,然后立刻导出数据的方法。
oracle有一个不推荐的方法,可以使数据库在不进行一致性检查的方式下打开数据库。
做法:
1。
为保险起见,将数据库的系统表空间,数据文件,控制文件均做一次备份:copy。
2。
在初始化配置文件中(init.ora)加上:
_allow_resetlogs_corruption=true
_corrupted_rollback_segments=(将所有rollback_segments=(...)的内容加到这里)
将rollback_segments=(...)前加上#
3。
startup mount
recover database until cancel;
cancel
alter database open resetlogs;
此时数据库已经可以打开了,请立刻将数据export出来,然后重新安装oracle,重新建立
database,再将数据import。
注意:这种方法属于数据库的不完全恢复,最后提交的sql可能会丢失,毕竟能够尽可能地减少损失,可以试试。
以上操作我均做过测试。
其它可能由于日志文件损坏,而ORACLE提示数据文件的错误,也需要按照第二种处理方式处理。
比如启动数据库有以下两个错误
Ora-01113
Ora-01110
此两个错误为ORACLE数据文件错误,而在使用SVRMGRL工具进行RECOVER DA TABASE 命令时又提示ORA-00314、ORA-00312错误,
可以提取表v$recover_file,如果其中的STA TU没有任何信息,并且是全部的数据文件都在内,先按照控制文件损坏的情况完整处理一遍,如果不能成功打开数据库,此时可以借用日志文件损坏的第二中处理方式进行处理。
具体的处理过程如下:
1.为保险起见,将数据库的系统表空间,数据文件,控制文件均做一次备份:copy。
2.使用SVRMGRL工具。
SVRMGRL>connect internal/oracle
已连接
SVRMGRL>shutdown abort
已关闭
SVRMGRL>startup mount
SVRMGRL>alter database open
如果出现以下提示:
Ora-01113 ……
Ora-01110 ……’*****.dbf’
SVRMGRL>select * from v$recover_file
查看STATU 状态:(1.NOT FOUND 2.UNKNOWN ERR 3.空什么都没有)
如果是3执行:SVRMGRL>recover database ;
如果此时提示:
Ora-00314
……
SVRMGRL>shutdown abort
3.在初始化配置文件中(init.ora)加上:
_allow_resetlogs_corruption=true
_corrupted_rollback_segments=(将所有rollback_segments=(...)的内容加到这里)
将rollback_segments=(...)前加上#
SVRMGRL>startup mount;
SVRMGRL>recover database until cancel;
输入cancel回车
出现错误提示不用管
SVRMGRL>alter database open resetlogs
4.EXP数据库,在初始化配置文件中(init.ora)加上#注释掉:
#_allow_resetlogs_corruption=true
#_corrupted_rollback_segments=(将所有rollback_segments=(...)的内容加到这里)将rollback_segments=(...)前加上#
重新启动机器和数据库。