暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oralce 11G 空间数据异常打印大量cdmp trace文件

IT那活儿 2022-12-16
532
点击上方“IT那活儿”公众号,关注后了解更多内容,不管IT什么活儿,干就完了!!!

问题现象

检查数据库日志发现多次告警“ORA-00600: internal error code, arguments: [kdsgrp1]”,RAC双节点库日志都有该报错。数据库运行正常且负载很低。但是数据库一直打印cdmp trace文件,一天的日志量有几十G。
节点2日志报错:

Wed Aug 20 14:06:50 2022
Errors in file /oracle/app/oracle/diag/rdbms/ywxt/ywxt2/trace/ywxt2_ora_59862.trc  (incident=1208525):
ORA-00600: internal error code, arguments:
 [kdsgrp1], [], [], [], [], [], [], [], [], [], [], []


问题分析

分析ywxt2_ora_59862.trc文件文件可以看到,发生问题的Current sql是如下的查询语句。并且从Trace文件可以看到,发生破损的文件号和Block号。
通过日志分析怀疑表数据有问题,一方面怀疑是逻辑损坏,表中数据有问题,另外一方面怀疑物理损坏,内存或者磁盘有问题导致的
部分报错日志和SQL:

*** 2022-08-19 10:05:19.829
row 0x0a6a4b9c.19 continuation at
0x0a6a4b9c.19 file# 41 block# 2771868 slot 25 not found 《----- file# 41 block# 2771868 not found
KDSTABN_GET: 0 ..... ntab: 1
curSlot: 25 ..... nrows: 39
kdsgrp - dump CR block dba=0x0a6a4b9c
Block header dump: 0x0a6a4b9c
Object id on Block? Y
seg/obj: 0x1ca0c csc: 0x2a.5e206ae9 itc: 2 flg: E typ: 1 - DATA
brn: 0 bdba: 0xa6a4b80 ver: 0x01 opc: 0
inc: 0 exflg: 0

Itl Xid Uba Flag Lck Scn/Fsc
0x01 0x018e.005.001e0977 0x1d401e36.7073.11 --U- 1 fsc 0x0000.84da8603
0x02 0x06a7.020.000d23ad 0x20c2c6f3.6c1e.09 --U- 1 fsc 0x0007.5e206b67
bdba: 0x0a6a4b9c

ObjectName:  Name=SELECT OBJECTID, ENTITYID, METACATEGORY, VIEWLABEL, DRAWFLAG, SHAPE, CREATOR_ID, CREATE_DATE, MODIFIER_ID, MODIFY_DATE, VERSION, SHARDING_ID, REGION_ID, PROJECT_ID, LIFE_STATE_ID, SOURCE_ID, SOURCE_TABLE, IS_PROTECTION_ID, SITE_TYPE_ID, SITE_DEVICE_TYPE, IRMS.X_GIS_POINTSITE.SE_ANNO_CAD_DATA FROM IRMS.X_GIS_POINTSITE WHERE mdsys.sdo_filter(IRMS.X_GIS_POINTSITE.SHAPE, MDSYS.SDO_GEOMETRY(:gtype1,:srid1,NULL,:elem_info1,:ordinates1), 'querytype=window') = 'TRUE' AND (( ( ( ( SHARDING_ 
         FullHashValue=5ad82e7688f2b341fe75c70cd788cf75 Namespace=SQL AREA(00) Type=CURSOR(00) Identifier=3616067445 OwnerIdn=96

SELECT OBJECTID, ENTITYID, METACATEGORY, VIEWLABEL, DRAWFLAG, SHAPE, CREATOR_ID,
CREATE_DATE, MODIFIER_ID, MODIFY_DATE, VERSION, SHARDING_ID, REGION_ID, PROJECT_ID,
LIFE_STATE_ID, 0, SOURCE_ID, SOURCE_TABLE, MAP_LENGTH, CABLE_TYPE_ID,
IRMS.X_GIS_LINECABLESEG.SE_ANNO_CAD_DATA FROM IRMS.X_GIS_LINECABLESEG WHERE
mdsys.sdo_filter(IRMS.X_GIS_LINECABLESEG.SHAPE, MDSYS.SDO_GEOMETRY(:gtype1,:srid1,NULL,:elem_info1,:ordinates1),
'querytype=window') = 'TRUE' AND (( ( SHARDING_ID = 561 AND ( 1 = 1 OR LIFE_STATE_ID IS NULL)) ) AND
( METACATEGORY ='OCABLESECTION' ))


问题排查

3.1 排查物理损坏

排查主机和数据库监控及日志没有任何物理损坏报错信息,效验数据库数据文件也没有发现异常,暂时排除物理损坏。
3.2 排查逻辑损坏
排查发现只有查询表(IRMS.X_GIS_POINTSITE、IRMS.X_GIS_LINECABLESEG)空间数据字段shape会有报错ORA-00600。怀疑shape字段数据出现问题。
3.3 shape字段数据效验
Oracle数据库对于空间数据有两个效验脚本,可以通过以下脚本进行效验,2个脚本都要执行:
  • 脚本1:
    注意:需要在业务表当前用户下执行该脚本。
select OBJECTID, a.valid "Error"
from (select OBJECTID , sdo_geom.validate_geometry_with_context(shape,m.diminfo) Valid
from IRMS.X_GIS_POINTSITE, user_sdo_geom_metadata m
where m.table_name = 'X_GIS_POINTSITE' and m.column_name = 'SHAPE') a
where a.valid != 'NULL'
and   a.valid != 'TRUE'
/

  • 脚本2:
    注意:如果数据有效,只会显示Rows Processed <n> 信息,其他信息为异常。
spool check_valid_geometries.lst
create table val_results (sdo_rowid ROWID, result VARCHAR2(2000));
exec sdo_geom.validate_layer_with_context('IRMS.X_GIS_POINTSITE','SHAPE','VAL_RESULTS');
select * from VAL_RESULTS;
spool off

检查发现表(IRMS.X_GIS_POINTSITE)18行异常数据和表(IRMS.X_GIS_LINECABLESEG)119行数据出现异常,异常表的rowid发给开发进行数据处理。

问题定位及解决:

开发修正表(IRMS.X_GIS_POINTSITE、IRMS.X_GIS_LINECABLESEG)数据并重建索引后,ORA-00600不再出现,问题解决。问题确定空间数据有问题引起的报错


本文作者:付青启(上海新炬中北团队)

本文来源:“IT那活儿”公众号

文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论