ORA-600(2662)错误的重现和解决(二)

发布时间:2020-08-17 09:08:46 来源:ITPUB博客 阅读:98 作者:路途中的人2012 栏目:建站服务器

前两天同事在测试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

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。