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

*/-->

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

Table of Contents

  • 1. 现象
  • 2. 分析
  • 3. 故障处理

1 现象

在数据库宕机前出现ORA-00600错误。 日志内容如下:

ORA-01595: error freeing extent (4) of rollback segment (31))
ORA-00607: Internal error occurred while making a change to a data block
ORA-00600: internal error code, arguments: [kdBlkCheckError], [3], [3], [18018], [], [], [], [], [], [], [], []
Corrupt Block Found
         TSN = 2, TSNAME = UNDOTBS1
         RFN = 3, BLK = 3, RDBA = 12582915
         OBJN = 2, OBJD = -1, OBJECT = , SUBOBJECT =
         SEGMENT OWNER = , SEGMENT TYPE =
Wed Aug 02 10:00:05 2017
Dumping diagnostic data in directory=[cdmp_20170802100005], requested by (instance=1, osid=24055 (SMON)), summary=[incident=48868].
Errors in file /oracle/app/oracle/diag/rdbms/aiboss/aiboss/trace/aiboss_smon_24055.trc  (incident=61108):
ORA-00600: internal error code, arguments: [kdBlkCheckError], [3], [3], [18018], [], [], [], [], [], [], [], []
Incident details in: /oracle/app/oracle/diag/rdbms/aiboss/aiboss/incident/incdir_61108/aiboss_smon_24055_i61108.trc
Wed Aug 02 10:00:11 2017
PMON (ospid: 24025): terminating the instance due to error 474
System state dump requested by (instance=1, osid=24025 (PMON)), summary=[abnormal instance termination].
System State dumped to trace file /oracle/app/oracle/diag/rdbms/aiboss/aiboss/trace/aiboss_diag_24035.trc
Instance terminated by PMON, pid = 24025
Wed Aug 02 10:40:19 2017

2 分析

  • 错误分析
    ORA-01595,ORA-00607,ORA-00600错误出现后,10:00:05秒Oracle开启记录此错误的相关信息,随后
    Oracle PMON进行由SMON于无法清理资源,无法保证数据一致性而停止实例。
    ORA-01595错误提的是数据库smon 进行清理回滚段的extent. 说明undo表空间出现问题。
  • BUG 确认

从宕机前的日志记录来看,数据库遇到的是oracle BUG 12349316.
依据为:

freeing extent (4) of rollback segment (31))                         =====> 与oracle BUG 12349316引发的条件一致,都是在清理extent时引发BUG.
[kdBlkCheckError], [ 3], [ 3], [ 18018]                              =====> 与oracle BUG 12349316 中600错误返回参数一致,都带有18018.
trace 日志(aiboss_smon_24055_i61108.trc)中发现 delete extent 函数    =====> FRAME [ 32] (ktusp_delextent()+76 -> ktsxr_delete())

3 故障处理

主要的处理思路是先跳过有问题的undo段,然后重建undo表空间

  • 修改参数文件
    数据库启动时,查找参数文件的顺序是spfile<ORACLE_SID>.ora –> init<ORACLE_SID>.ora –> init.ora.
    因此Oracle 数据库倾向于使用spfile启动数据库。一般环境中也都使用spfile.
    如何确认数据库使用的是spfile 还是pfile,使用 " show parameter spfile " 命令即可查看。

    当数据库使用的是spfile参数文件时,由于spfile是 二进制 文件,我们不便于直接修改,因此需要先创建出一个pfile 文本文件。

    create pfile=‘/tmp/pfile.ora‘ from spfile;
    此命令的执行不需要启动数据库,进入sqlplus环境即可。
    
     在参数文件中加入以下内容:
    undo_management = MANUAL             # UNDO 段管理方式改为manual
    # 其他可添加内容:
    *.fast_start_parallel_rollback=high  # 以4*cpu 个数开启回滚进程,但是实际上不会真的开始这么多。
    *._allow_resetlogs_corruption = true # 如果数据库需要恢复,且undo与redo不一致,部分redo 无法恢复时需要此参数,允许resetlogs
    
  • 启动数据库
    startup mount pfile=‘/tmp/pfile.ora‘;
    alter database open;
    

    如果数据库需要recovery,则执行以下命令:

    recover database until cancel;
    alter database open resetlogs;
    
  • offline存在活动事务的的undo块
    select segment_name,status,tablespace_name
    from dba_rollback_segs
    where status not in (‘ONLINE‘, ‘OFFLINE‘) ;
    
    SEGMENT_NAME                   STATUS           TABLESPACE_NAME
    ------------------------------ ---------------- ------------------------------
    _SYSSMU3_4004931649$           NEEDS RECOVERY   UNDOTBS1
    _SYSSMU4_1126976075$           NEEDS RECOVERY   UNDOTBS1
    _SYSSMU5_4011504098$           NEEDS RECOVERY   UNDOTBS1
    

    将以上内容添加至刚创建的/tmp/pfile.ora中:

    _CORRUPTED_ROLLBACK_SEGMENTS = (‘_SYSSMU3_4004931649$‘,‘_SYSSMU4_1126976075$‘,‘_SYSSMU5_4011504098$‘)
    

    "_corrupted_rollback_segments" 作用是不使用这几个回滚段。

  • 重启数据库
    startup force pfile=‘/tmp/pfile.ora‘;
    
  • 重新创建undo 表空间
    alter tablespace undotbs1 offline ;
    drop tablespace undotbs1 including contents and datafiles;
    create undo tablespace undotbs1 datafile ‘/data0/aiboss/undotbs1.dbf‘ size 30G autoextend off;
    alter system set undo_tablespace=‘UNDOTBS1‘;
    
  • 重启数据库
    重启数据库前,需要修改/tmp/pfile.ora 参数文件,将以下参数去除:

    undo_management=manual
    _allow_resetlogs_corruption=true
    fast_start_parallel_rollback=high
    

    重启:

    startup force pfile=‘/tmp/pfile.ora‘;
    create spfile from pfile=‘/tmp/pfile.ora‘;
    startup force;
    

Author: halberd.lee

Created: 2019-06-20 Thu 10:38

Validate

原文地址:https://www.cnblogs.com/halberd-lee/p/11057276.html

时间: 2024-10-29 19:10:40

ORA-00600: internal error code, arguments: [kdBlkCheckError]的相关文章

ORA-00600: internal error code, arguments: [13030], [20]一例解决

两年没有接触oracle了,中午,一环境update from的时候出现ORA-00600: internal error code, arguments: [13030], [20]异常,经查,官网所述为涉及到了v$表所致,典型举例比较多的是v$session,但我们不涉及任何v$表的查询.原sql类似如下: UPDATE ( SELECT a.f_assign aassign, b.f_offsetincome bf_offsetincome FROM XXX a, YYY b, ZZZ c

ORA-00600: internal error code, arguments: [4193]问题解决

操作环境 SuSE+Oracle11gR2 问题现象 单板宕机自动重启后,ORACLE运行不正常,主要表现如下: 1.执行shutdown immedate停止数据库时,提示ORA-00600: internal error code, arguments: [4193],[],[] 2.压测性能时,oracle总是无缘无故关闭 问题分析 发现问题后首先查看告警日志<find $ORACLE_BASE -name "alert*.log"> 1.查看告警日志,发现日志中有O

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

今天在PlateSpin Forge(关于PlateSpin相关介绍,请见最下面部分简单介绍) 复制出来的一台数据库服务器上,测试数据库能否正常启动时,遇到了"ORA-00600: internal error code, arguments: [kcratr1_lastbwr], [], [], [], [], [], [], []"错误: 在官方文档介绍中,这个错误主要出现在磁盘出现故障导致数据库崩溃后,实例启动失败,并报ORA-00600: arguments: [kcratr1

简单记录一次ORA-00600: internal error code, arguments: [2662]

接上一个,REDO报错搞定后OPEN数据库时又报错ORA-00600: internal error code, arguments: [2662]. 原因是_ALLOW_RESETLOGS_CORRUPTION后resetlogs打开数据库,我们可能会由于SCN不一致而遭遇到ORA-00600 2662号错误,这里给出一个完整的例子及解决过程. 现象及解决--这个没拍照参考EYGLE的吧 Sun Dec 11 18:02:25 2005 Errors in file /opt/oracle/a

简单记录一次ORA-00600: internal error code, arguments: [4194]

接上一篇,在搞定SCN问题后,又遇到ORA-600[4194]/[4193]报错. 故障现象: OPEN数据库时报错:ORA-00600: internal error code, arguments: [4194], [], [], [], [], [], [], [] 4193:表示undo和redo不一致(Arg [a] Undo record seq number,Arg [b] Redo record seq number ): 4194:表示也是undo和redo不一致(Arg [a

RAC一个节点的数据库无法启动:ORA-00600: internal error code, arguments: [4:kgstmLdiToMicroTs], [1], [], [], [], [

一个客户的RAC节点硬件发生了变动,主机重启后数据库实例无法启动,远程登陆查看ALERT日志发现大量报错: Writing to the above trace file is disabled for now on... Errors in file /oracle/app/diag/rdbms/XXXX/XXXX2/trace/XXXX2_ora_184464.trc: ORA-00600: internal error code, arguments: [4:kgstmLdiToMicro

ORA-00600:internal error code,arguments:[keltnfy-idmlnit],[46],[1],[],[],[],[],[]

如图:在DBCA进行到3%时,报错 因为/etc/hosts与/etc/sysconfig/network不对应,所以报错 [[email protected] ~]# cat /etc/hosts # Do not remove the following line, or various programs # that require network functionality will fail. 127.0.0.1               localhost.localdomain

SQL Tuning Advisor一个错误ORA-00600: internal error code, arguments: [kesqsMakeBindValue:obj]

跑SELECT dbms_sqltune.report_tuning_task(:tuning_task) FROM dual;  错误消息,如下面: ORA-00600: internal error code, arguments: [kesqsMakeBindValue:obj], [], [], [], [], [], [], [] ORA-06512: at "SYS.PRVT_ADVISOR", line 1624 ORA-06512: at "SYS.DBMS_

删除数据报ORA-00600: internal error code, arguments: [ktbesc_plugged]

Oracle在删除数据是以下错误: ORA-00600: internal error code, arguments: [ktbesc_plugged], [], [], [], [], [], [], [], [], [], [], [] 原因是由于进行过表空间的传输操作. 解决方法: ALTER TABLE 表名 MOVE tablespace 表空间名 ; Ora-600 [Ktbesc_plugged] Error On Insert Or Delete (文档 ID 1372941.