联系:手机/微信(+86 17813235971) QQ(107644445)
标题:差点被误操作的ORA-600 kcratr_nab_less_than_odr故障
作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]
晚上接到一个客户电话,数据库无法启动,咨询我的Oracle Recovery Tools工具的授权问题,我远程登录客户的环境进行查看故障,发现客户进行了一下操作导致最后open报ORA-01152错误
C:\Users\Administrator>sqlplus sys/sys as sysdba SQL*Plus: Release 11.2.0.1.0 Production on Tue Mar 18 22:43:24 2025 Copyright (c) 1982, 2010, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options SQL> startup mount ORACLE instance started. Total System Global Area 1603411968 bytes Fixed Size 2176168 bytes Variable Size 973081432 bytes Database Buffers 620756992 bytes Redo Buffers 7397376 bytes Database mounted. SQL> recover database; Media recovery complete. SQL> alter database open; alter database open * ERROR at line 1: ORA-00600: internal error code, arguments: [kcratr_nab_less_than_odr], [1], [27890], [1589], [1649], [], [], [], [], [], [], [] SQL> recover database; ORA-00283: 恢复会话因错误而取消 ORA-00264: 不要求恢复 SQL> alter database open; alter database open * ERROR at line 1: ORA-00600: internal error code, arguments: [kcratr_nab_less_than_odr], [1], [27890], [1589], [1649], [], [], [], [], [], [], [] SQL> recover database until cancel; ORA-10879: error signaled in parallel recovery slave ORA-01547: 警告: RECOVER 成功但 OPEN RESETLOGS 将出现如下错误 ORA-01152: 文件 1 没有从过旧的备份中还原 ORA-01110: 数据文件 1: 'D:\APP\ADMINISTRATOR\ORADATA\orcl\SYSTEM01.DBF' SQL> alter database open resetlogs; alter database open resetlogs * ERROR at line 1: ORA-01152: file 1 was not restored from a sufficiently old backup ORA-01110: data file 1: 'D:\APP\ADMINISTRATOR\ORADATA\orcl\SYSTEM01.DBF' SQL> RECOVER DATABASE USING BACKUP CONTROLFILE; ORA-00279: change 17384974762395 generated at 03/18/2025 18:30:34 needed for thread 1 ORA-00289: suggestion : D:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\orcl\ARCHIVELOG\2025_03_19\O1_MF_1_27 890_%U_.ARC ORA-00280: change 17384974762395 for thread 1 is in sequence #27890 Specify log: {<RET>=suggested | filename | AUTO | CANCEL} D\APP\ADMINISTRATOR\ORADATA\orcl\RED001.LOG ORA-00308: 无法打开归档日志 'D\APP\ADMINISTRATOR\ORADATA\orcl\RED001.LOG' ORA-27041: 无法打开文件 OSD-04002: 无法打开文件 O/S-Error: (OS 3) 系统找不到指定的路径。 Specify log: {<RET>=suggested | filename | AUTO | CANCEL} D:\app\Administrator\oradata\orcl\RED001.LOG ORA-00308: 无法打开归档日志 'D:\app\Administrator\oradata\orcl\RED001.LOG' ORA-27041: 无法打开文件 OSD-04002: 无法打开文件 O/S-Error: (OS 2) 系统找不到指定的文件。
最初数据库启动报ORA-600 kcratr_nab_less_than_odr错误(这个是一个非常典型的错误,早期写过处理方法:ORA-600 kcratr_nab_less_than_odr故障解决),客户处理故障思路不太清晰,使用了recover database until cancel和alter database open resetlogs等不当操作,导致数据库没有open成功.然后希望使用我的Oracle Recovery Tools小工具进行修复,但是根据我的判断,这个故障还用不上该工具,直接可以open库.对其进行ctl重建并open库
SQL> alter database backup controlfile to trace as 'd:/ctl.txt'; Database altered. SQL> create pfile='d:/pfile.txt' from spfile; File created. SQL> shutdown immediate; ORA-01109: database not open Database dismounted. ORACLE instance shut down. SQL> startup nomount; ORACLE instance started. Total System Global Area 1603411968 bytes Fixed Size 2176168 bytes Variable Size 973081432 bytes Database Buffers 620756992 bytes Redo Buffers 7397376 bytes SQL> @d:/xifenfei/rectl.sql Control file created. SQL> SQL> SQL> recover database; Media recovery complete. SQL> alter database open; Database altered.
在open之后,数据库报ORA-600 4194错误
Wed Mar 19 01:51:12 2025 alter database open Beginning crash recovery of 1 threads parallel recovery started with 23 processes Started redo scan Completed redo scan read 793 KB redo, 0 data blocks need recovery Started redo application at Thread 1: logseq 27890, block 2, scn 17384974741793 Recovery of Online Redo Log: Thread 1 Group 4 Seq 27890 Reading mem 0 Mem# 0: D:\APP\ADMINISTRATOR\ORADATA\orcl\REDO04.LOG Completed redo application of 0.00MB Completed crash recovery at Thread 1: logseq 27890, block 1589, scn 17384974762395 0 data blocks read, 0 data blocks written, 793 redo k-bytes read Wed Mar 19 01:51:14 2025 Thread 1 advanced to log sequence 27891 (thread open) Thread 1 opened at log sequence 27891 Current log# 2 seq# 27891 mem# 0: D:\APP\ADMINISTRATOR\ORADATA\orcl\REDO02.LOG Successful open of redo thread 1 MTTR advisory is disabled because FAST_START_MTTR_TARGET is not set Wed Mar 19 01:51:14 2025 SMON: enabling cache recovery Successfully onlined Undo Tablespace 2. Dictionary check beginning Tablespace 'TEMP' #3 found in data dictionary, but not in the controlfile. Adding to controlfile. Tablespace 'TEMP1' #11 found in data dictionary, but not in the controlfile. Adding to controlfile. Dictionary check complete Verifying file header compatibility for 11g tablespace encryption.. Verifying 11g file header compatibility for tablespace encryption completed SMON: enabling tx recovery ********************************************************************* WARNING: The following temporary tablespaces contain no files. This condition can occur when a backup controlfile has been restored. It may be necessary to add files to these tablespaces. That can be done using the SQL statement: ALTER TABLESPACE <tablespace_name> ADD TEMPFILE Alternatively, if these temporary tablespaces are no longer needed, then they can be dropped. Empty temporary tablespace: TEMP Empty temporary tablespace: TEMP1 ********************************************************************* Database Characterset is ZHS16GBK No Resource Manager plan active Errors in file d:\app\administrator\diag\rdbms\orcl\orcl\trace\orcl_smon_4084.trc (incident=158542): ORA-00600: 内部错误代码, 参数: [4194], [], [], [], [], [], [], [], [], [], [], [] Incident details in: d:\app\administrator\diag\rdbms\orcl\orcl\incident\incdir_158542\orcl_smon_4084_i158542.trc Wed Mar 19 01:51:26 2025 Trace dumping is performing id=[cdmp_20250319015126] Wed Mar 19 01:51:31 2025 Sweep [inc][158542]: completed Sweep [inc2][158542]: completed Wed Mar 19 01:51:35 2025 Doing block recovery for file 3 block 1415 Resuming block recovery (PMON) for file 3 block 1415 Block recovery from logseq 27891, block 86 to scn 17384974782720 Recovery of Online Redo Log: Thread 1 Group 2 Seq 27891 Reading mem 0 Mem# 0: D:\APP\ADMINISTRATOR\ORADATA\orcl\REDO02.LOG Block recovery stopped at EOT rba 27891.87.16 Block recovery completed at rba 27891.87.16, scn 4047.3242135803 Doing block recovery for file 3 block 264 Resuming block recovery (PMON) for file 3 block 264 Block recovery from logseq 27891, block 86 to scn 17384974782714 Recovery of Online Redo Log: Thread 1 Group 2 Seq 27891 Reading mem 0 Mem# 0: D:\APP\ADMINISTRATOR\ORADATA\orcl\REDO02.LOG Block recovery completed at rba 27891.87.16, scn 4047.3242135803 Errors in file d:\app\administrator\diag\rdbms\orcl\orcl\trace\orcl_smon_4084.trc: ORA-01595: 释放区 (2) 回退段 (12) 时出错 ORA-00600: 内部错误代码, 参数: [4194], [], [], [], [], [], [], [], [], [], [], [] Wed Mar 19 01:51:36 2025 Errors in file d:\app\administrator\diag\rdbms\orcl\orcl\trace\orcl_ora_5680.trc (incident=158590): ORA-00600: internal error code, arguments: [4194], [], [], [], [], [], [], [], [], [], [], [] Incident details in: d:\app\administrator\diag\rdbms\orcl\orcl\incident\incdir_158590\orcl_ora_5680_i158590.trc
数据库open成功,但是后台报ORA-01595/ORA-600 4194错误,这个问题比较常见,直接处理异常undo即可恢复.