现在的位置: 首页 > 数据库 > 正文

noarchive 数据库current redo log 损坏,没有备份如何应对

2019年08月03日 数据库 ⁄ 共 4957字 ⁄ 字号 评论关闭

 昨天,一台oracle 数据库由于磁盘问题,造成current
redo log 损坏,down 机后无法启动数据库。  

       环境: windows2003 + oracle 9i

      操作如下:

     startup mount;

      create pfile from spfile; 

     shudown immediate;

     关闭当前数据库后,将所有oracle 下\ora92\ ,\oradata\ yw \ 目录拷贝到出来,将密码文件和pfile 备份

     在另一台计算机上安装了一个新的oracle,并且重建库,实例名和数据库名与前相同-----yw。

    用备份的\oradata\yw\覆盖新库的\ora\data\yw\.

    覆盖原来的密码文件和 pfile.

    在pfile 中增加:

     __ALLOW_RESETLOGS_CORRUPTION=TRUE

 SQL> startup mount pfile=c:\oracle\ora92\database\INITyw.ora;

 ORACLE instance started.


Total System Global Area 2483027968 bytes

Fixed Size 2074760 bytes

Variable Size 1090520952 bytes

Database Buffers 1375731712 bytes

Redo Buffers 14700544 bytes

Database mounted.

SQL> recover database until cancel;

输入cancel

SQL> alter database open resetlogs;

alter database open

*

ERROR at line 1:

ORA-01092: ORACLE instance terminated. Disconnection forced

SQL> alter database open;

查看alert_yw.log 文件:

RESETLOGS after incomplete recovery UNTIL CHANGE 9431879262014

Resetting resetlogs activation ID 3761166285 (0xe02ed7cd)

Online log 2 of thread 1 was previously cleared

Online log 3 of thread 1 was previously cleared

Mon Dec 21 14:43:32 2009

Assigning activation ID 3761145403 (0xe02e863b)

Thread 1 opened at log sequence 1

  Current log# 1 seq# 1 mem# 0: D:\ORACLE\ORADATA\NMYW\REDO01.LOG

Successful open of redo thread 1.

Mon Dec 21 14:43:32 2009

SMON: enabling cache recovery

Mon Dec 21 14:43:32 2009

Errors in file d:\oracle\admin\nmyw\udump\nmyw_ora_265156.trc:

ORA-00600: 内部错误代码,参数:
[2662], [2196], [131080003], [2196], [131139845], [8388617], [], []

Mon Dec 21 14:43:32 2009

Errors in file d:\oracle\admin\nmyw\udump\nmyw_ora_265156.trc:

ORA-00600: 内部错误代码,参数: [2662], [2196], [131080003], [2196], [131139845], [8388617], [], []

Mon Dec 21 14:43:32 2009

Error 600 happened during db open, shutting down database

USER: terminating instance due to error 600

Instance terminated by USER, pid = 265156

ORA-1092 signalled during: alter database open resetlogs...

Mon Dec 21 14:48:33 2009

USER: terminating instance due to error 1092

Instance terminated by USER, pid = 265156

SQL> connect / as sysdba;

SQL>startup mount pfile=c:\oracle\ora92\database\INITyw.ora;

SQL> select file#,checkpoint_change# from v$datafile;

   发现所有的datafile 的checkpoint_scn 都是大得出奇:

利用10015事件进行adjust_scn

level 1 = 1billion (12位整数)

SQL> alter session set events '10015 trace name adjust_scn level 1'; 

SQL> alter database open ;

alter database open

*

ERROR at line 1:

ORA-01092: ORACLE instance terminated. Disconnection forced

SQL> alter database open;

查看alert_yw.log 文件:

Errors in file d:\oracle\admin\nmyw\udump\nmyw_ora_269012.trc:

ORA-00600: 内部错误代码,参数: [2256], [0], [1073741824],[2196],[131100005], [], [], []

Mon Dec 21 15:18:11 2009

Errors in file d:\oracle\admin\nmyw\udump\nmyw_ora_269012.trc:

ORA-00600: 内部错误代码,参数: [2256], [0], [1073741824], [2196], [131100005], [], [], []

level = (2196+1) *4=8788

SQL>alter session set events '10015 trace name adjust_scn level 8788';

SQL> alter database open;

报错:

查看alert_yw.log 文件:


Debugging event used to advance scn to 9436043149312

Undo Segment 1 Onlined

Undo Segment 2 Onlined

Undo Segment 3 Onlined

Undo Segment 4 Onlined

Undo Segment 5 Onlined

Undo Segment 6 Onlined

Undo Segment 7 Onlined

Undo Segment 8 Onlined

Undo Segment 9 Onlined

Undo Segment 10 Onlined

Successfully onlined Undo Tablespace 1.

Dictionary check beginning

Dictionary check complete

Mon Dec 21 15:50:52 2009

SMON: enabling tx recovery

Mon Dec 21 15:50:52 2009

Database Characterset is ZHS16GBK

Mon Dec 21 15:50:54 2009

Errors in file d:\oracle\admin\nmyw\udump\nmyw_ora_273712.trc:
ORA-00600: 内部错误代码,参数: [4193], [38371], [38432], [], [], [], [], []

Mon Dec 21 15:50:54 2009

Errors in file d:\oracle\admin\nmyw\udump\nmyw_p000_272924.trc:

ORA-00600: internal error code, arguments: [ktbsdp1], [], [], [], [], [], [], []

Recovery of Online Redo Log: Thread 1 Group 2 Seq 2 Reading mem 0

  Mem# 0 errs 0: D:\ORACLE\ORADATA\NMYW\REDO02.LOG

Recovery of Online Redo Log: Thread 1 Group 2 Seq 2 Reading mem 0

  Mem# 0 errs 0: D:\ORACLE\ORADATA\NMYW\REDO02.LOG

Mon Dec 21 15:50:56 2009

Errors in file d:\oracle\admin\nmyw\udump\nmyw_p000_272924.trc:

ORA-00339: archived log does not contain any redo

ORA-00334: archived log: 'D:\ORACLE\ORADATA\NMYW\REDO03.LOG'

ORA-00600: internal error code, arguments: [ktbsdp1], [], [], [], [], [], [], []

Mon Dec 21 15:50:56 2009

Recovery of Online Redo Log: Thread 1 Group 2 Seq 2 Reading mem 0

  Mem# 0 errs 0: D:\ORACLE\ORADATA\NMYW\REDO02.LOG

Mon Dec 21 15:50:56 2009

Errors in file d:\oracle\admin\nmyw\udump\nmyw_ora_273712.trc:

ORA-00607: 当更改数据块时出现内部错误

ORA-00600: 内部错误代码,参数: [4193], [38371], [38432], [], [], [], [], []

 

报ora-00600 [4193]错误,说明是undo 信息出错,将undo datafile offline 掉即可:

SQL> alter database datafile 'c:\oracle\oradata\yw\undotbs01.ora'  offline drop ;

SQL> alter database open ;

Database opened.

利用exp 将数据导出。 重新建库导入,一切ok.

在最后一步如果出现ora-600 [4193] [4194] 错误,如下解决:

ORA-600的4194和4193错误,根据错误信息的看来是Oracle进行恢复的过程中出现了问题。查询METALINK,发现是REDO中的回滚记录和UNDO中的不一致造成的。尝试使用隐含参数_CORRUPTED_ROLLBACK_SEGMENTS来打开数据库。在刚才的建立的inittest08.ora初始化文件中添加下面的信息:


undo_management='MANUAL'

_corrupted_rollback_segments=(_SYSSMU1&,_SYSSMU2&,_SYSSMU3&,_SYSSMU4&,_SYSSMU5&,_SYSSMU6&,_SYSSMU7&,_SYSSMU8&,_SYSSMU9&,_SYSSMU10&,_SYSSMU11&,_SYSSMU12&,_SYSSMU13&,_SYSSMU14&,_SYSSMU15&,_SYSSMU16&,_SYSSMU17&,_SYSSMU18&,_SYSSMU19&,_SYSSMU20&,_SYSSMU21&,_SYSSMU22&,_SYSSMU23&,_SYSSMU24&,_SYSSMU25&,_SYSSMU26&,_SYSSMU27&,_SYSSMU28&,_SYSSMU29&,_SYSSMU30&,_SYSSMU31&,_SYSSMU32&,_SYSSMU33&,_SYSSMU34&,_SYSSMU35&,_SYSSMU36&,_SYSSMU37&,_SYSSMU38&,_SYSSMU39&,_SYSSMU40&,_SYSSMU41&)

抱歉!评论已关闭.