您的位置:首页 > 数据库

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

2012-08-15 18:34 501 查看
昨天,一台oracle[/u] 数据库[/u]由于磁盘问题,造成current
redo log 损坏,down 机后无法启动数据库。
环境: windows2003 + oracle 9i
操作如下:
startup mount;
create pfile from spfile;
shudown immediate;
关闭当前数据库后,将所有oracle 下\ora92\ ,\oradata\ yw \ 目录拷贝到出来,将密码文件和pfile 备份[/u]。
在另一台计算机上安装[/u]了一个新的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: 内部错误代码[/u],参数:
[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&)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐