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>;