[Oracle]ORA-600[kdBlkCheckError]LOB坏块处理

简介:
[Oracle]ORA-600[kdBlkCheckError]LOB坏块处理

客户环境报如下错误:

ORA - 00600: Internal error code, arguments: [kdBlkCheckError], [2], [10388], [63068], [], [], [], [], [], [], [], []

alert log 中有这样的信息:

Thu Sep 07 19:14:00 2017
Corrupt Block Found
        CONT = 0, TSN = 1, TSNAME = SYSAUX
        RFN = 2, BLK = 10123, RDBA = 7364815
        OBJN = 10388, OBJD = 10388, OBJECT = SYS_LOB0000010129C00001$$, SUBOBJECT =
        SEGMENT OWNER = SYS, SEGMENT TYPE = Lob Segment

查看Trace,看到关联的SQL问也是 OPATCH_XINV_TAB 表。

----- Current SQL Statement for this session (sql_id=20x4skym5bskj) -----
 INSERT INTO OPATCH_XINV_TAB(XML_INVENTORY) SELECT * FROM OPATCH_XML_INV

查询相关的情报,可以看到 OPATCH_XINV_TAB 的 XML_INVENTORY 列, 使用了 LOB字段。

 SQL> set pages 10000 line 200
 SQL> select * from dba_lobs where segment_name = 'SYS_LOB0000010129C00001$$';
 
 OWNER
 ----------------
 TABLE_NAME
 ----------------
 COLUMN_NAME
 --------------------------------
 SEGMENT_NAME                                          TABLESPACE_NAME ...
 ---------------- ------------------------------
 SYS
 OPATCH_XINV_TAB
 XML_INVENTORY
 SYS_LOB0000010129C00001$$                             SYSAUX

由于没有备份,只能考虑对LOB 进行清除处理。但是还是建议客户在清除处理之前,进行现场的备份。

然后,执行清理操作:

 alter table SYS.OPATCH_XINV_TAB move LOB(XML_INVENTORY) store as (tablespace SYSAUX);

这样清除之后,坏块就会变成不属于任何对象,知道被作为空闲块再次使用时,被再次格式化。

但是,在这个坏块被格式化之前,如果执行了rman 的坏块检查,或者dbv ,是会发现这个块并报错的。
如果对这个错不爽,可以尝试手工格式化。

具体做法需要参考文档:

  How to Format Corrupted Block Not Part of Any Segment (Doc ID 336133.1)








本文转自健哥的数据花园博客园博客,原文链接:http://www.cnblogs.com/gaojian/p/3_15726948371.html,如需转载请自行联系原作者

目录
相关文章
|
Oracle 关系型数据库 数据库
|
SQL Oracle 关系型数据库
|
13天前
|
SQL Oracle 关系型数据库
【Oracle】玩转Oracle数据库(一):装上去,飞起来!
【Oracle】玩转Oracle数据库(一):装上去,飞起来!
55 7
|
1月前
|
Oracle 关系型数据库 数据库
|
30天前
|
Oracle 关系型数据库 数据库
Oracle数据库基本概念理解(3)
Oracle数据库基本概念理解(3)
18 2
|
13天前
|
SQL Oracle 关系型数据库
【Oracle】玩转Oracle数据库(七):RMAN恢复管理器
【Oracle】玩转Oracle数据库(七):RMAN恢复管理器
40 5

推荐镜像

更多