How to deal with ORA-08102 fault after forced OPEN database
There will be a lot of legacy issues after forcing the OPEN Database with implicit parameters, such as the need to re-create the UNDO tablespace, there will also be a ORA-08102 Error
Just did damage the online log experiment with the implicit parameters forced to open the database, after the alert Log will always report ORA-08102
Wed Jun 24 13:56:24 2015
Errors in file/u01/app/Oracle/admin/ora10g/bdump/ora10g_j000_4737.trc:
ORA-00604: error occurred at recursive SQL level 1
ORA-08102: index key not found, obj #239, file 1, block 1674 (2)
ORA-12012: error on auto execute of job 1
ORA-08102: index key not found, obj #239, file 1, block 1674 (2)
-- View objects of obj #239
SYS @ ora10g> set line 130 pages 130
SYS @ ora10g> col object_name form a15
SYS @ ora10g> col owner for a10
SYS @ ora10g> select owner, object_name, object_id, object_type from dba_objects where object_id = 239;
OWNER OBJECT_NAME OBJECT_ID OBJECT_TYPE
------------------------------------------------------
SYS I _JOB_NEXT 239 INDEX
-- View which table the I _JOB_NEXT index belongs
SYS @ ora10g> select owner, index_name, table_name from dba_indexes where index_name = 'I _ JOB_NEXT ';
OWNER INDEX_NAME TABLE_NAME
----------------------------------------------------------------------
SYS I _JOB_NEXT JOB $
-- Check which column of the JOB $ table is created after the index I _JOB_NEXT is created.
SYS @ ora10g> col index_name for a10;
SYS @ ora10g> col index_owner for a10
SYS @ ora10g> col table_name for a10
SYS @ ora10g> col column_name for a15
SYS @ ora10g> select INDEX_OWNER, INDEX_NAME, TABLE_NAME, COLUMN_NAME from dba_ind_columns where INDEX_NAME = 'I _ JOB_NEXT ';
INDEX_OWNE INDEX_NAME TABLE_NAME COLUMN_NAME
---------------------------------------------
SYS I _JOB_NEXT JOB $ NEXT_DATE
According to the article on metalink:
ORA-08102: trying to manipulate a job in DBA_JOBS [ID 1036858.6]
Solution Description:
==================================
You need to recreate the inex I _JOB_NEXT.
Script "$ ORACLE_HOME/rdbms/admin/cat7103. SQL" creates the I _JOB_NEXT:
Drop and recreate this index.
Connect sys/<password>
Drop index I _job_next;
Create index I _job_next on job $ (next_date)
Note: alter index I _JOB_NEXT rebuild;
Will not fix the problem.
It is useless to re-create an index. You must first Delete the index and then recreate it.
1. Delete the index I _job_next first
SYS @ ora10g> drop index I _job_next;
Index dropped.
2. Rebuild the index I _job_next;
SYS @ ora10g> create index I _job_next on job $ (next_date );
Index created.
After the index is rebuilt, the problem is solved. Therefore, do not forcibly open the database with the implicit parameter _ allow_resetlogs_uption = true unless necessary. If you do not know the processing method, it will still affect the database.