|
ORA-08102: index key not found |
Problém 35:
Z ničeho nic, mě nešel smazat objekt v databázi. Tak jsem musel zjistit o jaký objekt se jedná a provést analýzu daného objektu. Přičinou daných problému je, že některému řádku v tabulce chybí odpovídající řádek v indexu.
SQL> delete from tom.muj_objekt; delete from tom.muj_objekt * ERROR at line 1: ORA-08102: index key not found, obj# 4671482, file 6, block 1019132 (2)
SQL> select OWNER,OBJECT_NAME, OBJECT_TYPE from DBA_OBJECTS where OBJECT_ID='4671482'; where OBJEC'4671482' * ERROR at line 2: ORA-00920: invalid relational operator
SQL> select OWNER,OBJECT_NAME, OBJECT_TYPE from DBA_OBJECTS where OBJECT_ID=4671482;
OWNER ------------------------------ OBJECT_NAME -------------------------------------------------------------------------------- OBJECT_TYPE ------------------- tom I_MUJ_OBJEKT INDEX
SQL> SELECT TABLE_NAME FROM DBA_INDEXES WHERE INDEX_NAME='I_MUJ_OBJEKT' and owner='tom';
TABLE_NAME ------------------------------ T_MUJ_OBJEKT
Řešení:
V mém případě pomohlo provést analýzu a dropnout objekt. V jiných případech je potřeba smazat tabulku a vytvoři ji znovu. Naplnit daty pomocí exp/imp a následně udělat i nový index. SQL> ANALYZE TABLE tom.T_MUJ_OBJEKT VALIDATE STRUCTURE CASCADE;
Table analyzed.
Více na My Oracle Suport: ORA-8102 CORRUPT INDEX, ORA-1499 EVEN AFTER DROPPING AND RECREATING INDEX [ID 1081343.6]
|