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.

Cookies helfen bei der Bereitstellung von Inhalten. Durch die Nutzung dieser Seiten erklären Sie sich damit einverstanden, dass Cookies auf Ihrem Rechner gespeichert werden. Weitere Information
"Autor: Gunther Pipperr"
prog/sql_enable_constraints_wiht_errors.txt · Zuletzt geändert: 2015/09/23 20:30 von Gunther Pippèrr