Benutzer-Werkzeuge

Webseiten-Werkzeuge


prog:sql_enable_constraints_wiht_errors

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
prog:sql_enable_constraints_wiht_errors [2015/09/23 20:29] gpipperrprog:sql_enable_constraints_wiht_errors [2015/09/23 20:30] (aktuell) – [Workaround enable novalidate] gpipperr
Zeile 1: Zeile 1:
 +====== 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:
 +<code sql>
 +
 +ORA-02298: cannot validate(string.string) - parent keys not found
 +
 +</code>
 +
 +**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)
 +
 +<code sql>
 +create table exceptions(row_id       rowid,
 +                        owner        varchar2(30),
 +                        table_name   varchar2(30),
 +                        constraint   varchar2(30)
 +)
 +/
 +</code>
 +
 +Auf dem Constaint die Exception Tabelle aktivieren ( Keyword EXCEPTIONS INTO <NAME_DER_EXCEPTION_TABELLE> )  und damit den Constaint aktiveren
 +
 +<code sql>
 +
 +ALTER TABLE PRODUKTE ENABLE constraint FK_LAGERORT_PRODUKT EXCEPTIONS INTO EXCEPTIONS;
 +
 +</code>
 +
 +
 +Die Tabelle auswerten:
 +
 +<code sql>
 +select row_id from exceptions where CONSTRAINT='FK_LAGERORT_PRODUKT';
 +
 +row_id
 +--------
 +xxxxxxxxxxxxxxxxxx
 +</code>
 +
 +Mit Hilfe der Row_id kann nun der entsprechende "fehlerbehaftete" Datensatz ermittelt werden.
 +
 +=== Workaround "enable novalidate" ===
 +
 +Alternativ mit "alter table t enable <fc #800000>novalidate</fc> constraint abc;" damit wenigsten in Zukunft die Daten zusammenpassen müssen.
  
prog/sql_enable_constraints_wiht_errors.txt · Zuletzt geändert: 2015/09/23 20:30 von gpipperr