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

Table of Contents

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

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

  1. ORA-00600: internal error code, arguments: [4194]

    使用PlateSpin复制出来的一数据库服务器(Oracle 10g)在启动数据库实例时遇到"ORA-00600: internal error code, arguments: [4194 ...

  2. ORA-00600: internal error code, arguments: [17281], [1001], [0x1FF863EE8], [], [], [], [], []

    我们生产服务器中的一个数据库发出监控告警日志的邮件,内容如下所示,在31号09:11分出现了大名鼎鼎的ORA-00600错误. Dear All: The Instance xxx' alert lo ...

  3. ORA-00600: internal error code, arguments: [2662]

    转自 http://www.eygle.com/archives/2005/12/oracle_diagnostics_howto_deal_2662_error.html 在ORA-00600 22 ...

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

    两年没有接触oracle了,中午,一环境update from的时候出现ORA-00600: internal error code, arguments: [13030], [20]异常,经查,官网 ...

  5. 07 oracle 归档模式 inactive/current redo log损坏修复--以及错误ORA-00600: internal error code, arguments: [2663], [0], [9710724], [0], [9711142], [], [], [], [], [], [], []

    07 oracle 归档模式 inactive/current redo log损坏修复--以及错误ORA-00600: internal error code, arguments: [2663], ...

  6. ORA-00600: internal error code, arguments: [SKGMFAIL], [2], [4], [4], [1], [], [], [], [], [], [], [

    ORA-00600: internal error code, arguments: [SKGMFAIL], [2], [4], [4], [1], [], [], [], [], [], [], [ ...

  7. ORA-00600: internal error code, arguments: [LibraryCacheNotEmptyOnClose]

      案例环境: 操作系统版本: Red Hat Enterprise Linux ES release 4 数据库版本  : 10.2.0.4.0 32 bit 案例介绍: 今天我执行stop_ora ...

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

    今天在PlateSpin Forge(关于PlateSpin相关介绍,请见最下面部分简单介绍) 复制出来的一台数据库服务器上,测试数据库能否正常启动时,遇到了"ORA-00600: inte ...

  9. ORA-00600: internal error code, arguments: [kcblasm_1], [103], [], [], [], [], [], []

    一ORACLE 10.2.0.5.0 标准版的数据库的告警日志出现ORA-00600错误,具体错误信息如下所示 Errors in file /u01/app/oracle/admin/SCM2/bd ...

随机推荐

  1. 百度编辑神器ueditor在ajax或form提交内容时候异常

    百度编辑神器ueditor在ajax或form提交内容时候异常,一:⑴web.config中<system.web> <httpRuntime requestValidationMo ...

  2. Phoenix批量提交优化,官网的demo

    1 Phoenix的批量insert官网代码,最佳实践 try (Connection conn = DriverManager.getConnection(url)) { conn.setAutoC ...

  3. Lua游戏逆向及破解方法介绍

    Lua游戏逆向及破解方法介绍   背景介绍 随着手游的发展,越来越多的Cocos-lua端游开发者转移到手游平台.Lua脚本编写逻辑的手游也是越来越多,如梦幻西游.刀塔传奇.开心消消乐.游龙英雄.奇迹 ...

  4. Oracle【二维表的维护】

    二维表的维护 --添加新的字段:alter table 表名 add 字段名 类型 [一般不加约束条件] ) 原表:新增字段后的表:修改原有的字段:[修改字段类型.修改字段名.删除字段] --修改字段 ...

  5. 9.1.远程过程调用协议_RPC

    6. RPC 6.1.什么是 RPC RPC(Remote Procedure Call Protocol)远程过程调用协议 通俗的描述是:客户端在不知道调用细节的情况下,调用存在于远程计算机上的某个 ...

  6. 3.Shell 接收用户的参数

    1.Shell 传递参数 我们可以在执行 Shell 脚本时,向脚本传递参数,Linux系统中的Shell脚本语言已经内设了用于接收参数的变量,变量之间可以使用空格间隔. 例如$0对应的是当前Shel ...

  7. 海康RTSP取流URL格式

    预览取流url [海康威视]举例说明: 主码流取流: rtsp://admin:12345@192.0.0.64:554/h264/ch1/main/av_stream 子码流取流: rtsp://a ...

  8. 严格次小生成树[BJWC2010]

    原文必点 原题链接 题目描述 给定一张\(N\) 个点$ M $条边的无向图,求无向图的严格次小生成树. 设最小生成树的边权之和为\(sum\),严格次小生成树就是指边权之和大于\(sum\)的生成树 ...

  9. 【ARC072 E】Alice in linear land

    被智商题劝退,告辞 题意 有一个人在一条数轴的距离原点为 \(D\) 的位置,他可以执行 \(n\) 次操作,每次操作为给定一个整数 \(d_i\),这个人向原点的方向走 \(d_i\) 个单位,但如 ...

  10. 【SDOI2018】反回文串(【ARC064 F】Rotated Palindromes 加强版)

    题意 给你一个正整数 \(n\),求有多少字符集为 \(1\) 到 \(k\) 之间整数的字符串,使得该字符串可以由一个长度为 \(n\) 的回文串循环移位得到. ARC原题 \(100\%\) 的数 ...