[小e笔记]之错误案例——ora-00603和ora-00600错误

本文记录了一次Oracle数据库启动过程中遇到的ora-00603和ora-00600错误的解决过程。错误出现在数据库打开时,由于undo块修复失败导致前滚失败,通过修改数据库参数为undo_management=manual,创建新的undo表空间并删除旧表空间,最终成功解决问题。

案例出错情况:

[oracle@elvis ~]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.1.0 Production on Wed Oct 17 15:05:42 2012

Copyright (c) 1982, 2009, Oracle.  All rights reserved.

Connected to an idle instance.

SQL> startup

ORACLE instance started.

Total System Global Area  598437888 bytes

Fixed Size                  1338140 bytes

Variable Size             394265828 bytes

Database Buffers          197132288 bytes

Redo Buffers                5701632 bytes

Database mounted.

ORA-00603: ORACLE server session terminated by fatal error

ORA-00600: internal error code, arguments: [4194], [0x0], [

警告日志错误信息如下:

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

*********************************************************************

Database Characterset is ZHS16GBK

No Resource Manager plan active

Errors in file /u01/oracle/diag/rdbms/elvis/elvis/trace/elvis_ora_4502.trc  (incident=53064):

ORA-00600: internal error code, arguments: [4194], [0x0], [], [], [], [], [], [], [], [], [], []

Incident details in: /u01/oracle/diag/rdbms/elvis/elvis/incident/incdir_53064/elvis_ora_4502_i53064.trc

Wed Oct 17 15:06:54 2012

Trace dumping is performing id=[cdmp_20121017150654]

Wed Oct 17 15:06:55 2012

Doing block recovery for file 3 block 16185

No block recovery was needed

Errors in file /u01/oracle/diag/rdbms/elvis/elvis/trace/elvis_smon_4422.trc  (incident=53016):

ORA-00600: internal error code, arguments: [4194], [0x0], [], [], [], [], [], [], [], [], [], []

Incident details in: /u01/oracle/diag/rdbms/elvis/elvis/incident/incdir_53016/elvis_smon_4422_i53016.trc

Wed Oct 17 15:06:58 2012

Doing block recovery for file 3 block 16185

No block recovery was needed

Errors in file /u01/oracle/diag/rdbms/elvis/elvis/trace/elvis_ora_4502.trc  (incident=53065):

ORA-00600: internal error code, arguments: [4194], [0x0], [], [], [], [], [], [], [], [], [], []

ORA-00600: internal error code, arguments: [4194], [0x0], [], [], [], [], [], [], [], [], [], []

Incident details in: /u01/oracle/diag/rdbms/elvis/elvis/incident/incdir_53065/elvis_ora_4502_i53065.trc

Non-fatal internal error happenned while SMON was doing shrinking of rollback segments.

SMON encountered 1 out of maximum 100 non-fatal internal errors.

Trace dumping is performing id=[cdmp_20121017150659]

Doing block recovery for file 3 block 16185

No block recovery was needed

Errors in file /u01/oracle/diag/rdbms/elvis/elvis/trace/elvis_ora_4502.trc  (incident=53066):

ORA-00600: internal error code, arguments: [4194], [0x0], [], [], [], [], [], [], [], [], [], []

ORA-00600: internal error code, arguments: [4194], [0x0], [], [], [], [], [], [], [], [], [], []

ORA-00600: internal error code, arguments: [4194], [0x0], [], [], [], [], [], [], [], [], [], []

Incident details in: /u01/oracle/diag/rdbms/elvis/elvis/incident/incdir_53066/elvis_ora_4502_i53066.trc

Trace dumping is performing id=[cdmp_20121017150703]

Doing block recovery for file 3 block 16185

No block recovery was needed

Errors in file /u01/oracle/diag/rdbms/elvis/elvis/trace/elvis_ora_4502.trc  (incident=53067):

ORA-00600: internal error code, arguments: [4194], [0x0], [], [], [], [], [], [], [], [], [], []

ORA-00600: internal error code, arguments: [4194], [0x0], [], [], [], [], [], [], [], [], [], []

ORA-00600: internal error code, arguments: [4194], [0x0], [], [], [], [], [], [], [], [], [], []

ORA-00600: internal error code, arguments: [4194], [0x0], [], [], [], [], [], [], [], [], [], []

Incident details in: /u01/oracle/diag/rdbms/elvis/elvis/incident/incdir_53067/elvis_ora_4502_i53067.trc

Wed Oct 17 15:07:06 2012

Trace dumping is performing id=[cdmp_20121017150706]

Wed Oct 17 15:07:08 2012

Errors in file /u01/oracle/diag/rdbms/elvis/elvis/trace/elvis_ora_4502.trc:

ORA-00600: internal error code, arguments: [4194], [0x0], [], [], [], [], [], [], [], [], [], []

ORA-00600: internal error code, arguments: [4194], [0x0], [], [], [], [], [], [], [], [], [], []

ORA-00600: internal error code, arguments: [4194], [0x0], [], [], [], [], [], [], [], [], [], []

ORA-00600: internal error code, arguments: [4194], [0x0], [], [], [], [], [], [], [], [], [], []

Errors in file /u01/oracle/diag/rdbms/elvis/elvis/trace/elvis_ora_4502.trc:

ORA-00600: internal error code, arguments: [4194], [0x0], [], [], [], [], [], [], [], [], [], []

ORA-00600: internal error code, arguments: [4194], [0x0], [], [], [], [], [], [], [], [], [], []

ORA-00600: internal error code, arguments: [4194], [0x0], [], [], [], [], [], [], [], [], [], []

ORA-00600: internal error code, arguments: [4194], [0x0], [], [], [], [], [], [], [], [], [], []

Error 600 happened during db open, shutting down database

USER (ospid: 4502): terminating the instance due to error 600

Instance terminated by USER, pid = 4502

ORA-1092 signalled during: ALTER DATABASE OPEN...

Doing block recovery for file 3 block 16185

No block recovery was needed

Errors in file /u01/oracle/diag/rdbms/elvis/elvis/trace/elvis_ora_4502.trc  (incident=53068):

ORA-00600: internal error code, arguments: [4194], [0x0], [], [], [], [], [], [], [], [], [], []

ORA-01092: ORACLE instance terminated. Disconnection forced

ORA-00600: internal error code, arguments: [4194], [0x0], [], [], [], [], [], [], [], [], [], []

ORA-00600: internal error code, arguments: [4194], [0x0], [], [], [], [], [], [], [], [], [], []

ORA-00600: internal error code, arguments: [4194], [0x0], [], [], [], [], [], [], [], [], [], []

ORA-00600: internal error code, arguments: [4194], [0x0], [], [], [], [], [], [], [], [], [], []

Errors in file /u01/oracle/diag/rdbms/elvis/elvis/trace/elvis_ora_4502.trc:

ORA-27300: OS system dependent operation:semctl failed with status: 22

ORA-27301: OS failure message: Invalid argument

ORA-27302: failure occurred at: sskgpwpost1

ORA-27303: additional information: semid = 131073

ORA-00600: internal error code, arguments: [4194], [0x0], [], [], [], [], [], [], [], [], [], []

ORA-01092: ORACLE instance terminated. Disconnection forced

ORA-00600: internal error code, arguments: [4194], [0x0], [], [], [], [], [], [], [], [], [], []

ORA-00600: internal error code, arguments: [4194], [0x0], [], [], [], [], [], [], [], [], [], []

ORA-00600: internal error code, arguments: [4194], [0x0], [], [], [], [], [], [], [], [], [], []

ORA-00600: internal error code, arguments: [4194], [0x0], [], [], [], [], [], [], [], [], [], []

Doing block recovery for file 3 block 16185

No block recovery was needed

Errors in file /u01/oracle/diag/rdbms/elvis/elvis/trace/elvis_ora_4502.trc  (incident=53069):

ORA-00600: internal error code, arguments: [4194], [0x0], [

Errors in file /u01/oracle/diag/rdbms/elvis/elvis/trace/elvis_ora_4502.trc:

ORA-00600: internal error code, arguments: [4194], [0x0], [

ORA-00600: internal error code, arguments: [4194], [0x0], [], [], [], [], [], [], [], [], [], []

ORA-01092: ORACLE instance terminated. Disconnection forced

ORA-00600: internal error code, arguments: [4194], [0x0], [], [], [], [], [], [], [], [], [], []

ORA-00600: internal error code, arguments: [4194], [0x0], [], [], [], [], [], [], [], [], [], []

ORA-00600: internal error code, arguments: [4194], [0x0], [], [], [], [], [], [], [], [], [], []

ORA-00600: internal error code, arguments: [4194], [0x0], [], [], [], [], [], [], [], [], [], []

Wed Oct 17 15:07:14 2012

Errors in file /u01/oracle/diag/rdbms/elvis/elvis/trace/elvis_ora_4502.trc  (incident=54113):

ORA-00603: ORACLE server session terminated by fatal error

ORA-00600: internal error code, arguments: [4194], [0x0], [

Incident details in: /u01/oracle/diag/rdbms/elvis/elvis/incident/incdir_54113/elvis_ora_4502_i54113.trc

Errors in file /u01/oracle/diag/rdbms/elvis/elvis/incident/incdir_54113/elvis_ora_4502_i54113.trc:

ORA-00603: ORACLE server session terminated by fatal error

ORA-00600: internal error code, arguments: [4194], [0x0], [

原因:从上述警告日志可以看出有很多的undo块需要修复且需要应用到redo,但很显然No block recovery was needed这句话,说明没有恢复成功,这就导致前滚失败,redoUndoseq#(序列号)不一致,就会报ORA-4194等的错误,详情可以参考,我小翻译的MOS里的一篇文章,连接地址:经过查询MOS里的文章解决方法如下:http://blog.youkuaiyun.com/elvis_dataguru/article/details/8082800

解决方法——删除undo表空间

(1)创建pfile文件   --为了设置一个隐藏参数

SQL> startup nomount;

ORACLE instance started.

Total System Global Area  598437888 bytes

Fixed Size                  1338140 bytes

Variable Size             394265828 bytes

Database Buffers          197132288 bytes

Redo Buffers                5701632 bytes

SQL> create pfile='/u01/corrupt.ora' from spfile;

File created.

SQL> shutdown immediate

ORA-01507: database not mounted

ORACLE instance shut down.

(2)修改corrupt.ora文件&&修改undo_management=manual

*._allow_resetlogs_corruption=TRUE

*.audit_file_dest='/u01/oracle/admin/elvis/adump'

*.audit_trail='db'

*.compatible='11.2.0.0.0'

*.control_files='/u01/oracle/oradata/elvis/control01.ctl','/u01/oracle/flash_recovery_area/elvis/control02.ctl'

*.db_block_size=8192

*.db_domain=''

*.db_name='elvis'

*.db_recovery_file_dest='/u01/oracle/flash_recovery_area'

*.db_recovery_file_dest_size=5218762752

*.diagnostic_dest='/u01/oracle'

*.dispatchers='(PROTOCOL=TCP) (SERVICE=elvisXDB)'

*.memory_target=598736896

*.open_cursors=300

*.processes=150

*.remote_login_passwordfile='EXCLUSIVE'

*.undo_tablespace='UNDOTBS1'

*.undo_management='MANUAL'

~

SQL> startup mount pfile='/u01/corrupt.ora'

ORACLE instance started.

Total System Global Area  598437888 bytes

Fixed Size                  1338140 bytes

Variable Size             394265828 bytes

Database Buffers          197132288 bytes

Redo Buffers                5701632 bytes

Database mounted.

SQL> show parameter undo

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

undo_management                     string      MANUAL

undo_retention                       integer     900

undo_tablespace                      string      UNDOTBS1

这个需要改为manual

SQL> alter database open;

Database altered.

创建新的undo表空间

SQL> create undo tablespace undotbs02 datafile '/u01/oracle/oradata/elvis/undotbs02.dbf' size 500m;

Tablespace created.

删除旧的undo表空间

SQL> select tablespace_name from dba_tablespaces;

TABLESPACE_NAME

------------------------------

SYSTEM

SYSAUX

UNDOTBS1

TEMP

USERS

TEST

UNDOTBS02

7 rows selected.

SQL> drop tablespace undotbs1 including contents and datafiles;

Tablespace dropped.

看下物理文件

[oracle@elvis elvis]$ ll

total 2080736

drwxr-xr-x 2 oracle oinstall      4096 Oct 13 19:49 bak

-rw-r----- 1 oracle oinstall  10076160 Oct 17 18:49 control01.ctl

-rw-r----- 1 oracle oinstall  52429312 Oct 17 18:37 redo01.log

-rw-r----- 1 oracle oinstall  52429312 Oct 17 18:37 redo02.log

-rw-r----- 1 oracle oinstall  52429312 Oct 17 18:49 redo03.log

-rw-r----- 1 oracle oinstall 629153792 Oct 17 18:48 sysaux01.dbf

-rw-r----- 1 oracle oinstall 734011392 Oct 17 18:48 system01.dbf

-rw-r----- 1 oracle oinstall  71311360 Oct  8 08:50 temp01.dbf

-rw-r----- 1 oracle oinstall  52436992 Oct 17 18:37 test01.dbf

-rw-r----- 1 oracle oinstall 524296192 Oct 17 18:45 undotbs02.dbf

-rw-r----- 1 oracle oinstall   5251072 Oct 17 18:37 users01.dbf

可以看到undotbs1的表空间文件也相应的删除了

(3)使用spfile参数文件打开数据库

SQL> shutdown immediate

Database closed.

Database dismounted.

ORACLE instance shut down.

SQL> startup nomount

ORACLE instance started.

Total System Global Area  598437888 bytes

Fixed Size                  1338140 bytes

Variable Size             394265828 bytes

Database Buffers          197132288 bytes

Redo Buffers                5701632 bytes

SQL> show parameter undo

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

undo_management                      string      AUTO

undo_retention                       integer     900

undo_tablespace                      string      UNDOTBS1

SQL> alter system set undo_tablespace=undotbs02 scope=spfile;

System altered.

SQL> shutdown immediate;

ORA-01507: database not mounted

ORACLE instance shut down.

SQL> startup

ORACLE instance started.

Total System Global Area  598437888 bytes

Fixed Size                  1338140 bytes

Variable Size             394265828 bytes

Database Buffers          197132288 bytes

Redo Buffers                5701632 bytes

Database mounted.

Database opened.

可以看到数据库正常开启。

总结:遇到问题,仔细分析,肯定找出错误和错误的解决方法,也没什么可说的了,前面原理和解决方法也都写了,关于ORA-600[41XX]这种错误基本都属于Undo的错误。

 

elvis

2012.10.17

知识共享~共同进步

转载请注明:

 http://blog.youkuaiyun.com/elvis_dataguru/article/details/8082834

Oracle数据库在运行过程中,若遇到严重异常,会抛出一系列错误代码。ORA-00603ORA-01092、ORA-00600是较为严重的内部错误,通常涉及数据库实例、引导进程或底层系统一致性问题。 ### ORA-00603ORACLE server session terminated by fatal error错误表示数据库服务器会话因致命错误而终止。常见于SQL解析或执行过程中遇到不可恢复的内部错误。此错误通常与底层递归SQL执行失败有关,可能由数据字典损坏、内存分配失败或SQL语句语法错误引发[^1]。 ### ORA-01092:ORACLE instance terminated. Disconnection forced 此错误表明数据库实例异常终止,连接被强制断开。通常在数据库启动或运行过程中,如果核心进程(如PMON、SMON)崩溃,实例将无法继续运行,导致该错误。该错误可能由内存不足、参数设置错误或底层存储访问失败引起[^2]。 ### ORA-00600:internal error code, arguments: [%s], [%s], [%s], [%s], [%s], [%s], [%s] ORA-00600Oracle内部错误的通用代码,表示数据库核心组件出现未预期的内部错误。该错误通常伴随一组参数,用于标识具体的错误上下文。例如,ORA-00600[4193]通常表示重做日志解析过程中出现序列号不一致问题,可能由日志损坏或不完整写入引起[^2]。 ## 解决方法 ### 检查数据库启动日志 查看`alert_<sid>.log`文件,确认错误发生时的详细上下文信息,包括调用堆栈、失败的SQL语句以及系统参数状态。该日志通常位于`$ORACLE_BASE/diag/rdbms/<db_name>/<instance_name>/trace/`目录下。 ### 使用pfile启动数据库 若数据库无法正常启动,可尝试使用pfile手动启动实例,以排除spfile配置错误的可能性。例如: ```sql STARTUP MOUNT PFILE='$ORACLE_HOME/dbs/init<sid>.ora'; ``` 此方法有助于识别参数文件中的错误配置[^2]。 ### 检查数据文件与块损坏 对于因数据字典或引导表(如`bootstrap$`)损坏导致的错误,可使用`BBED`工具检查并修复数据文件块。Oracle 11g中,`bootstrap$`表通常位于1号数据文件的520至523号块范围内。使用BBED前需确保数据库处于关闭状态,并具备有效的备份文件[^3]。 ### 恢复数据库 若上述方法无法解决问题,可尝试从最近的备份中恢复数据库。使用RMAN(Recovery Manager)进行恢复操作,确保数据一致性与完整性。例如: ```sql RUN { SHUTDOWN IMMEDIATE; STARTUP MOUNT; RESTORE DATABASE; RECOVER DATABASE; ALTER DATABASE OPEN RESETLOGS; } ``` 此流程适用于冷备份恢复,确保在恢复前关闭数据库实例[^2]。 ### 联系Oracle支持 对于复杂或重复出现的内部错误(如ORA-00600),建议联系Oracle官方支持团队。提供完整的错误日志、数据库版本信息以及复现步骤,有助于快速定位问题根源。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值