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_OBJECTSwhere 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——————-tomI_MUJ_OBJEKTINDEXSQL> 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]