前两天同事在测试DATA GUARD的时候将主库的ONLINE日志意外覆盖,造成数据库无法打开,采用隐含参数的方法打开又碰到ORA-600错误,最后采用设置EVENTS的方式解决。
由于是在别人的机器上操作,而且很多操作都是摸索进行,因此没有将操作记录下来。现在打算重现一下问题并简单记录解决过程。
上篇已经描述了问题的产生步骤,下面描述解决这个问题的方法。
ORA-600(2662)错误的重现和解决(一):
产生问题的根源在于启动STANDBY数据库的时候,覆盖了PRIMARY数据库的在线LOGFILE。
尝试恢复数据库:
SQL> CONN /@YTK AS SYSDBA
已连接到空闲例程。
SQL> STARTUP MOUNT
ORACLE 例程已经启动。
Total System Global Area 251658240 bytes
Fixed Size 1290012 bytes
Variable Size 167772388 bytes
Database Buffers 75497472 bytes
Redo Buffers 7098368 bytes
数据库装载完毕。
SQL> RECOVER DATABASE UNTIL CANCEL;
ORA-00279: 更改 5706539056 (在 12/11/2007 15:49:26 生成) 对于线程 1 是必需的
ORA-00289: 建议: E:\ORACLE\ORADATA\YTK\ARCHIVELOG\ARC01333_0577472831.001
ORA-00280: 更改 5706539056 (用于线程 1) 在序列 #1333 中
指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
CANCEL
ORA-01547: 警告: RECOVER 成功但 OPEN RESETLOGS 将出现如下错误
ORA-01194: 文件 1 需要更多的恢复来保持一致性
ORA-01110: 数据文件 1:
'E:\ORACLE\ORADATA\YTK\DATAFILE\O1_MF_SYSTEM_1TDY2CXS_.DBF'
ORA-01112: 未启动介质恢复
看来数据库已经无法通过正常方式启动了。这时候最好的办法是通过数据库的备份来进行恢复,通过不完全恢复来恢复数据库。
但是同事当时没有数据库的备份,那么就只能通过非常规的方式打开了。
由于丢失在线日志,所以只能通过添加隐含参数的方式:
SQL> ALTER SYSTEM SET "_allow_resetlogs_corruption" = TRUE SCOPE = SPFILE;
系统已更改。
SQL> SHUTDOWN IMMEDIATE
ORA-01109: 数据库未打开
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> STARTUP MOUNT
ORACLE 例程已经启动。
Total System Global Area 251658240 bytes
Fixed Size 1290012 bytes
Variable Size 171966692 bytes
Database Buffers 71303168 bytes
Redo Buffers 7098368 bytes
数据库装载完毕。
SQL> RECOVER DATABASE UNTIL CANCEL
ORA-00279: 更改 5706539056 (在 12/11/2007 15:49:26 生成) 对于线程 1 是必需的
ORA-00289: 建议: E:\ORACLE\ORADATA\YTK\ARCHIVELOG\ARC01333_0577472831.001
ORA-00280: 更改 5706539056 (用于线程 1) 在序列 #1333 中
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。