''Native error: '8103' Msg: 'ORA-08103: object no longer exists'

Document ID : KB000090565
Last Modified Date : 14/04/2018
Show Technical Document Details
Issue:
''Native error: '8103' Msg: 'ORA-08103: object no longer exists'
Resolution:
Detailed Description and Symptoms

In the log file, these messages display, showing that SQL statement found a block that no longer belongs to the object referenced in the statement. 
20131210/034450.769 - U0029108 SQL_ERROR    Database handles  DB-HENV: 10cc06bb0  DB-HDBC: 10cc11ed8
20131210/034450.769 - U0003591 DB error info: Opc: 'OCIStmtExecute' Return code: 'ERROR'
20131210/034450.769 - U0003592 Status: '' Native error: '8103' Msg: 'ORA-08103: object no longer exists'
20131210/034450.769 - U0003594 UCUDB Ret: '3590' OpCode: 'SLUC' SQL Stmnt: 'SELECT COUNT(*) DIVDB_INT4 FROM  RH, AH where RH_AH_Idnr = AH_Idnr and AH_Client = ? and RH_ArchiveFlag = 0 and RH_DeleteFlag = 0 and AH_TimeStamp4 < ?'
20131210/034450.769 - U0003524 ===> Time critical DB call!       OPC: 'SLUC' time: '58:237.211.999'
20131210/034450.769 - U0003525 ===> 'SELECT COUNT(*) DIVDB_INT4 FROM  RH, AH where RH_AH_Idnr = AH_Idnr and AH_Client = ? and RH_ArchiveFlag = 0 and RH_DeleteFlag = 0 and AH_TimeStamp4 < ?'
20131210/034450.769 - U0003590 DB error: 'OCIStmtExecute', 'ERROR   ', '', 'ORA-08103: object no longer exists'

Investigation
Cause:
+ Tables are being dropped/truncated while a SQL statement for those tables is still in execution. In the case of an index "no longer exist", it might be caused by an index rebuild. In other words the object has been deleted by another session since the operation began.
+ Block corruption: Hardware, IO subsystem or OS problems may cause block corruptions overwriting the Block Type in the block header causing the error ORA-8103. 
Noted that the block may also be temporarily corrupted in the buffer cache (SGA Memory)

To analyze if there's any corrupted block, using ANALYZE table/index SQL command. Before that, need to create INVALID_ROWS table to store the output of the analyze validate command on a partitioned table via this command: SQL> @ORACLE_HOME\rdbms\admin\UTLVALID.SQL
Running SQL commands: 
analyze table <table_name> validate structure;
> analyze index <index_name> validate structure;
The common tables needed to analyze are AH, EH, RH, RT
After analyzing table, view the INVALID_ROWS table to check if there's any corrupted block. 

Solution
- DBA involved 
- There might be corruption in the SGA memory (Buffer cache): which can be flushed by this command: 
> alter system flush buffer_cache;

Also recommend to rebuild the index.