联系:手机/微信(+86 17813235971) QQ(107644445)
作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]
接到一个oralce 8.1.6的数据库恢复请求,由于断电之后,系统无法正常恢复,通过尝试recover datafile报错如下
SQL> select * from v$version; BANNER ---------------------------------------------------------------- Oracle8i Enterprise Edition Release 8.1.6.0.0 - Production PL/SQL Release 8.1.6.0.0 - Production CORE 8.1.6.0.0 Production TNS for 32-bit Windows: Version 8.1.6.0.0 - Production NLSRTL Version 3.4.1.0.0 - Production
Tue Oct 16 14:17:01 2018 Media Recovery Datafile: 1 Media Recovery Start Media Recovery Log Recovery of Online Redo Log: Thread 1 Group 1 Seq 146597 Reading mem 0 Mem# 0 errs 0: D:\ORACLE\ORADATA\ORCL\REDO01.LOG Tue Oct 16 14:17:02 2018 Errors in file D:\Oracle\admin\orcl\udump\ORA03040.TRC: ORA-00600: internal error code, arguments: [kcoapl_blkchk], [1], [30547], [6101], [], [], [], [] Tue Oct 16 14:17:03 2018 Errors in file D:\Oracle\admin\orcl\udump\ORA03040.TRC: ORA-01578: ORACLE data block corrupted (file # 1, block # 30547) ORA-01110: data file 1: 'D:\ORACLE\ORADATA\ORCL\SYSTEM01.DBF' ORA-00607: Internal error occurred while making a change to a data block ORA-00600: internal error code, arguments: [kcoapl_blkchk], [1], [30547], [6101], [], [], [], [] Tue Oct 16 14:17:03 2018 Errors in file D:\Oracle\admin\orcl\udump\ORA03040.TRC: ORA-00314: log 2 of thread 1, expected sequence# 146598 doesn't match 146415 ORA-00312: online log 2 thread 1: 'D:\ORACLE\ORADATA\ORCL\REDO02.LOG'
这里可以获取到两个信息:1)system文件可能有坏块,导致数据库recover的时候报ORA-600 kcoapl_blkchk错误,2)数据库的redo可能异常了,由于8i数据库默认redo 10m,在业务繁忙时候切换较为频繁,而文件系统的cache导致redo信息比较老,而数据文件需要redo比较新,从而无法正常恢复成功。比较明显对于当前这样的情况只能是屏蔽数据一致性,强制拉库
ARC0: media recovery disabled Tue Oct 16 14:17:39 2018 SMON: enabling cache recovery Tue Oct 16 14:17:39 2018 Errors in file D:\Oracle\admin\orcl\udump\ORA02256.TRC: ORA-00600: internal error code, arguments: [2662], [1], [1712082681], [1], [1712107587], [8388610], [], [] Tue Oct 16 14:17:41 2018 Errors in file D:\Oracle\admin\orcl\udump\ORA02256.TRC: ORA-00600: internal error code, arguments: [2662], [1], [1712082682], [1], [1712107587], [8388610], [], [] ORA-00600: internal error code, arguments: [2662], [1], [1712082681], [1], [1712107587], [8388610], [], [] Tue Oct 16 14:17:43 2018 Errors in file D:\Oracle\admin\orcl\udump\ORA02256.TRC: ORA-00600: internal error code, arguments: [2662], [1], [1712082682], [1], [1712107587], [8388610], [], [] ORA-00600: internal error code, arguments: [2662], [1], [1712082681], [1], [1712107587], [8388610], [], [] Tue Oct 16 14:17:45 2018 Errors in file D:\Oracle\admin\orcl\udump\ORA02256.TRC: ORA-00603: ORACLE server session terminated by fatal error ORA-00600: internal error code, arguments: [2662], [1], [1712082682], [1], [1712107587], [8388610], [], [] ORA-00600: internal error code, arguments: [2662], [1], [1712082681], [1], [1712107587], [8388610], [], []
ORA-600 2662这个错误比较常见,直接推数据库scn,启动库
Tue Oct 16 16:09:11 2018 Errors in file D:\Oracle\admin\orcl\bdump\orclSMON.TRC: ORA-00600: internal error code, arguments: [4193], [29469], [29477], [], [], [], [], [] Recovery of Online Redo Log: Thread 1 Group 3 Seq 1 Reading mem 0 Mem# 0 errs 0: D:\ORACLE\ORADATA\ORCL\REDO03.LOG Tue Oct 16 16:09:12 2018 Errors in file D:\Oracle\admin\orcl\bdump\orclSMON.TRC: ORA-01595: error freeing extent (3) of rollback segment (2)) ORA-00600: internal error code, arguments: [4193], [29469], [29477], [], [], [], [], [] Tue Oct 16 16:09:13 2018 Completed: ALTER DATABASE OPEN Tue Oct 16 16:12:06 2018 CREATE ROLLBACK SEGMENT nrbs1 TABLESPACE rbs Tue Oct 16 16:12:06 2018 Errors in file D:\Oracle\admin\orcl\udump\ORA02252.TRC: ORA-00600: internal error code, arguments: [4194], [79], [38], [], [], [], [], []
错误比较明显ORA-600 4194,而且已经告知是由于rollback segment 2异常,通过屏蔽回滚段,open数据库,删除老回滚段,创建新回滚段(8i无undo自动管理)
SQL> startup ORACLE instance started. Total System Global Area 1549432076 bytes Fixed Size 70924 bytes Variable Size 500707328 bytes Database Buffers 1048576000 bytes Redo Buffers 77824 bytes Database mounted. Database opened. SQL> drop rollback segment "RBS1"; Rollback segment dropped. SQL> drop rollback segment "RBS2"; Rollback segment dropped. SQL> drop rollback segment "RBS3"; Rollback segment dropped. SQL> drop rollback segment "RBS4"; Rollback segment dropped. SQL> drop rollback segment "RBS5"; Rollback segment dropped. SQL> drop rollback segment "RBS6"; Rollback segment dropped. SQL> CREATE ROLLBACK SEGMENT nrbs1 TABLESPACE rbs; Rollback segment created. SQL> CREATE ROLLBACK SEGMENT nrbs2 TABLESPACE rbs; Rollback segment created. SQL> CREATE ROLLBACK SEGMENT nrbs3 TABLESPACE rbs; Rollback segment created. SQL> CREATE ROLLBACK SEGMENT nrbs4 TABLESPACE rbs; Rollback segment created. SQL> CREATE ROLLBACK SEGMENT nrbs5 TABLESPACE rbs; Rollback segment created. SQL> CREATE ROLLBACK SEGMENT nrbs6 TABLESPACE rbs; Rollback segment created. SQL> CREATE ROLLBACK SEGMENT nrbs7 TABLESPACE rbs; Rollback segment created.
客户安排导出导入,至此该库恢复完成