====== Constraint Error ORA-02298 beim Enablen eines Constraints protokollieren ====== Ist ein Constraint im Status "DISABLED" kann der Constration mit "alter table enable constraint " wieder aktiviert werden. \\ Haben sich aber inzwischen Fehler in den Daten eingeschlichen läßt sich der Constraint nicht mehr einschalten. \\ Fehler: ORA-02298: cannot validate(string.string) - parent keys not found **Lösung:** == Error Log Tabelle auf Constaint Level verwenden: == Anlegen der Error Log Tabelle mit dem Hilfescript\\ $ORACLE_HOME/dbhome_1/rdbms/admin/utlexcpt.sql oder $ORACLE_HOME/dbhome_1/rdbms/admin/utlexpt1.sql ( je nach DB Version beide vorhanden) create table exceptions(row_id rowid, owner varchar2(30), table_name varchar2(30), constraint varchar2(30) ) / Auf dem Constaint die Exception Tabelle aktivieren ( Keyword EXCEPTIONS INTO ) und damit den Constaint aktiveren ALTER TABLE PRODUKTE ENABLE constraint FK_LAGERORT_PRODUKT EXCEPTIONS INTO EXCEPTIONS; Die Tabelle auswerten: select row_id from exceptions where CONSTRAINT='FK_LAGERORT_PRODUKT'; row_id -------- xxxxxxxxxxxxxxxxxx Mit Hilfe der Row_id kann nun der entsprechende "fehlerbehaftete" Datensatz ermittelt werden. === Workaround "enable novalidate" === Alternativ mit "alter table t enable novalidate constraint abc;" damit wenigsten in Zukunft die Daten zusammenpassen müssen.