Oracle Index fehlverhalten

BaseBallBatBoy

Erfahrenes Mitglied
Hi

Mit folgender Query erhalte ich keinen Record (explain plan: unique scan, verwendet den Index myindex):
SQL:
SELECT 
   a, b, c, valid_to, pk_mykey, myobject
FROM
   myschema.mytable
WHERE
   valid_to = to_date('31.12.9999 23:59:59', 'dd.mm.yyyy hh24:mi:ss')
AND
   myobject = 'ABC.123';

Ich weiss aber, dass es den Record gibt! Also versuche ich es mit dieser Query (explain plan: full table scan):
SQL:
SELECT 
   /*+ NO_INDEX(mytable myindex) */
   a, b, c, valid_to, pk_mykey, myobject
FROM
   myschema.mytable
WHERE
   valid_to = to_date('31.12.9999 23:59:59', 'dd.mm.yyyy hh24:mi:ss')
AND
   myobject = 'ABC.123';

Und schon erhalte ich den Record.
Ich erhalte also zwei verschiedene Resultate wenn ich den Index brauche oder nicht brauche.
Der Fix davon ist mir bekannt: index rebuild.

Was ich dabei aber nicht verstehe ist, wie es überhaupt zu einem solchen korrupten Index kommen kann? Und noch die wichtigere Frage: wie kann ich das in Zukunft verhindern? Es ist leider nicht das erste mal, dass dieser Fall eingetreten ist, und es ist schwierig festzustellen, dass mit dem Index etwas nicht in Ordnung ist.

(DBMS ist Oracle 11g EE 11.2.0.2.0 64bit)
 
Zuletzt bearbeitet von einem Moderator:
Inzwischen habe ich noch folgenden Befehl ausgeführt:

SQL:
ANALYZE TABLE myschema.mytable VALIDATE STRUCTURE CASCADE;

Fehlerbericht:
SQL-Fehler: ORA-01499: Tabellen/Index-Querverweisfehler - siehe Trace-Datei
01499. 00000 - "table/index cross reference failure - see trace file"

Hat mir evtl. jemand weiteren Input dazu wie ich nun weiter vorgehen könnte?
 
Zuletzt bearbeitet von einem Moderator:
Zurück