ORA-8103 可能的原因 Audit DDL truncate rebuild index

APPLIES TO:

Oracle Database - Enterprise Edition - Version 12.2.0.1 and later
Information in this document applies to any platform.

SYMPTOMS

  • Alert log shows ORA-8103 error happened on file# 4 and block# 1251.

    2020-07-09T06:45:47.891876+09:00
    ADVISORY: Please collect redo for investigation of ORA-8103. Use command:
       ALTER SYSTEM DUMP REDO scn min 1 scn max 60928770 dba min 4 1251 dba max 4 1251;

  • Trace file shows that data object id mismatch had been found when access multiple buffers of file# 4 and block# 125.  
     

    *** 2020-07-09T06:45:47.845841+09:00
    *** SESSION ID:(966.41287) 2020-07-09T06:45:47.845841+09:00
    *** CLIENT ID:() 2020-07-09T06:45:47.845841+09:00
    *** SERVICE NAME:(SYS$USERS) 2020-07-09T06:45:47.845841+09:00
    *** MODULE NAME:(JDBC Thin Client) 2020-07-09T06:45:47.845841+09:00
    *** ACTION NAME:() 2020-07-09T06:45:47.845841+09:00
    *** CLIENT DRIVER:(jdbcthin) 2020-07-09T06:45:47.845841+09:00
     

    *** SESSION ID:(966.41287) 2020-07-09T06:45:47.843840+09:00
    OBJD MISMATCH typ=6, seg.obj=151592, diskobj=151782, dsflg=100000, dsobj=151592, tid=151592, cls=1
    kcbz_exec_ckf: check function 0x00007FF7CFE57100 returned error=8103:1
    ... ...
    BH (0x7ffbfdfcfb58) file#: 4 rdba: 0x010004e3 (4/1251) class: 1 ba: 0x7ffbfdb9e000
     set: 19 pool: 3 bsz: 8192 bsi: 0 sflg: 2 pwc: 37,28
     dbwrid: 0 obj: 151782 objn: 66852 tsn: [0/4] afn: 4 hint: f <<<<<<< object_id=66852, data_object_id=151782
    ... ...
    BH (0x7ffc0ff84af8) file#: 4 rdba: 0x010004e3 (4/1251) class: 1 ba: 0x7ffc0f4cc000
     set: 17 pool: 3 bsz: 8192 bsi: 0 sflg: 2 pwc: 31,19
     dbwrid: 0 obj: 151592 objn: 66852 tsn: [0/4] afn: 4 hint: f <<<<<<< object_id=66852, data_object_id=151592

  • Call stack of trace file shows that error happed during INDEX RANGE SCAN.
     

    Dumping Short Stack
    ksedsts()+390<-kcbz_exec_ckf_debug()+1683<-kcbz_check_objd_typ()+3884<-kcbzibmlt()+28227<-kcbzib()+2071<-kcbgtcr()+45756<-ktrgtc2()+1254<-qeilbk1()+1051<-qeilsr()+438<-qerixtFetch()+463<-qertbFetchByRowID()+6828<-opifch2()+3911<-kpoal8()+4333<-opiodr()+1378
    <-ttcpip()+1368<-opitsk()+5078<-opiino()+1265<-opiodr()+1378<-opidrv()+1833<-sou2o()+112<-opimai_real()+499<-opimai()+231<-OracleThreadStart()+745<-00007FFBB02A84D4<-00007FFBB280E851


     

CHANGES

CAUSE

It is caused by the concurrent DDL against user index, e.g. ALTER INDEX ... REBUILD, that causes data_object_id changed.
And ORA-8103 raised as expected.
 

SOLUTION

Please avoid to execute DDL concurrently.
And in order to capture the DDL process you can either set ENABLE_DDL_LOGGING to true to output DDL statement to alert log,
 

SQL> alter system set ENABLE_DDL_LOGGING=true;

System altered.


==or==

Please enable auditing to output into audit logs.

1. Traditional auditing:

conn / as sysdba
alter system set audit_trail=DB,EXTENDED scope=spfile;
audit index;
shutdown immediate
startup
quit

<Waiting for reoccuring>

select * from dba_audit_trail where TIMESTAMP between <Start Time> and <End Time>;


2. Unified Auditing

conn / as sysdba
create audit policy <POLICY_NAME> privileges ALTER ANY INDEX actions INDEX ON <OWNER>.<TABLE_NAME>;
audit policy <POLICY_NAME>;
quit

<Waiting for reoccuring>

select * from unified_audit_trail where unified_audit_policies = '<POLICY_NAME>'
  and EVENT_TIMESTAMP between <Start Time> and <End Time>;

  • 22
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值