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



select * from dba_audit_trail where TIMESTAMP between and ;


2. Unified Auditing

conn / as sysdba
create audit policy privileges ALTER ANY INDEX actions INDEX ON .;
audit policy ;
quit



select * from unified_audit_trail where unified_audit_policies = ''
  and EVENT_TIMESTAMP between and ;

你可能感兴趣的:(数据库,oracle)