ten13 Geschrieben 11. August 2009 Teilen Geschrieben 11. August 2009 Hallo zusammen, ich importiere über den sql*loader Daten in eine Tabelle, auf der ein PK liegt. Dieser PK wird über eine Sequenz befüllt. Neuerdings läuft mir dieses Script auf "unique constraint"-Fehler - immer bei anderen Datensätzen (wenn ich den Versuch mehrmals starte). Hat jemand eine Idee woran das liegen kann - der PK wird nur über die Sequenz gefüllt. Gibt es eine Möglichkeit, mir vom sql*loader das komplette Statement ausgeben zu lassen, welches auf Fehler gelaufen ist? Über Hilfe (wenn's auch nur Ideen sind) bin ich sehr dankbar. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dbwizard Geschrieben 11. August 2009 Teilen Geschrieben 11. August 2009 Hallo zusammen, ich importiere über den sql*loader Daten in eine Tabelle, auf der ein PK liegt. Dieser PK wird über eine Sequenz befüllt. Neuerdings läuft mir dieses Script auf "unique constraint"-Fehler - immer bei anderen Datensätzen (wenn ich den Versuch mehrmals starte). Hat jemand eine Idee woran das liegen kann - der PK wird nur über die Sequenz gefüllt. Gibt es eine Möglichkeit, mir vom sql*loader das komplette Statement ausgeben zu lassen, welches auf Fehler gelaufen ist? Über Hilfe (wenn's auch nur Ideen sind) bin ich sehr dankbar. Hallo, Sind auf der Zieltabelle evtl. Trigger aktiv, welche auch versuchen, eine Sequence zu schreiben. ? Gruss Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
ten13 Geschrieben 11. August 2009 Autor Teilen Geschrieben 11. August 2009 Hi dbwizard, auf der Zieltabelle sind keine Trigger aktiv. Von 100T zu importierenden Datensätzen, fallen 50 mit diesem Fehler raus. Aber mit jedem Versuch sind es 50 andere. Allerdings entsteht ein Fehler ziemlich regelmäßig, nämlich alle 2T Datensätze (plus/minus Toleranz) - will damit sagen, dass die Fehler nicht erst nach z.B. 50T Datensätzen entstehen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dbwizard Geschrieben 11. August 2009 Teilen Geschrieben 11. August 2009 Hi dbwizard, auf der Zieltabelle sind keine Trigger aktiv. Von 100T zu importierenden Datensätzen, fallen 50 mit diesem Fehler raus. Aber mit jedem Versuch sind es 50 andere. Allerdings entsteht ein Fehler ziemlich regelmäßig, nämlich alle 2T Datensätze (plus/minus Toleranz) - will damit sagen, dass die Fehler nicht erst nach z.B. 50T Datensätzen entstehen. Ist den die Zieltabelle leer, wenn du den Import startest ? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
ten13 Geschrieben 11. August 2009 Autor Teilen Geschrieben 11. August 2009 In der Zieltabelle befinden sich ca. 4 Mio. Datensätze. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dbwizard Geschrieben 11. August 2009 Teilen Geschrieben 11. August 2009 In der Zieltabelle befinden sich ca. 4 Mio. Datensätze. Hast du ein BAD-File im SQLLoader Script definiert ? Wenn nicht, dann versuche dies mal, damit solltest du feststellen können, welche Datensätze das Problem verursachen. Gruss Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
ten13 Geschrieben 11. August 2009 Autor Teilen Geschrieben 11. August 2009 Ein bad-File wird mir erstellt, allerdings ändern sich die fehlerhaften Datensätze permanent. Also es liegt nicht an den Daten, da beim nächsten Lauf, die Daten vom vorigen vorhanden sind. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dbwizard Geschrieben 11. August 2009 Teilen Geschrieben 11. August 2009 Ein bad-File wird mir erstellt, allerdings ändern sich die fehlerhaften Datensätze permanent. Also es liegt nicht an den Daten, da beim nächsten Lauf, die Daten vom vorigen vorhanden sind. Da bleibt dir nichts anderes übrig, als zu schauen, warum die Datensätz im BAD File nicht reingekommen sind ? Irgendwo wird offensichtlich ein Unique Constraint (Dass muss nicht notwendigerweise der PK sein), verletzt. - Nimm einen der Row's aus dem BAD File und probiere ein "manuelles" Insert in die Betreffende Tabelle und schaue nach, wo der Fehler steckt Gruss Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dr.dimitri Geschrieben 11. August 2009 Teilen Geschrieben 11. August 2009 Hi, die Prüfung auf Eindeutigkeit ist nicht ganz trivial, vor allem beim SQL Loader, der ja Blockweise arbeitet bzw. falls Du einen Direct Load machst (Direct=TRUE) noch eine weitere Komponente dazu kommt. Daher sind die Sätze die dir rausfliegen unterschiedlich. Gibt es neben dem PK noch einen weiteren Unique Constraint auf der Tabelle? Wird die Tabelle parallel geändert während Du Daten lädst? Verwendest Du einen Direct Load? Dim Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
ten13 Geschrieben 11. August 2009 Autor Teilen Geschrieben 11. August 2009 Einen Datensatz zu nehmen, der mir rausfliegt nutzt mir nix, da mir nicht der Wert der Sequence ausgegeben wird (der, der den Fehler wohl verursacht) - oder kann ich das komplette sql-statement in einer logfile ausgeben lassen? Beim Aufruf gebe ich kein DIRECT=TRUE mit, weshalb ich davon ausgehe, dass ich dies nicht benutze. Es liegt keine weitere PK auf der Tabelle. Die Tabelle wird nicht parallel verändert. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dbwizard Geschrieben 11. August 2009 Teilen Geschrieben 11. August 2009 Es liegt keine weitere PK auf der Tabelle. Ja, ist anzunehmen. Aber auch keine Unique Index auf weitere Attribute ? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
ten13 Geschrieben 11. August 2009 Autor Teilen Geschrieben 11. August 2009 meinte doch UI statt PK! :upps Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.