Benutzer-Werkzeuge

Webseiten-Werkzeuge


prog:sql_enable_constraints_wiht_errors

Constraint Error ORA-02298 beim Enablen eines Constraints protokollieren

Ist ein Constraint im Status „DISABLED“ kann der Constration mit „alter table enable constraint <name>“ 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 <NAME_DER_EXCEPTION_TABELLE> ) 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.

Diese Website verwendet Cookies. Durch die Nutzung der Website stimmen Sie dem Speichern von Cookies auf Ihrem Computer zu. Außerdem bestätigen Sie, dass Sie unsere Datenschutzbestimmungen gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website.Weitere Information
prog/sql_enable_constraints_wiht_errors.txt · Zuletzt geändert: 2015/09/23 20:30 von gpipperr