External Tables sind ein recht praktischer Weg, wenn Daten aus Flatfiles regelmäßig geladen werden sollen. Wenn beispielsweise ein täglicher Ladelauf erfolgen soll, so muss nur sichergestellt werden, dass die Datei mit den Daten rechtzeitig und am richtigen Ort vorliegt. Ein zusätzlicher SQL*Loader-Aufruf ist in diesem Fall dann nicht mehr nötig, da direkt über einen SELECT auf die Daten zugegriffen werden kann. Einzelheiten zu External Tables mit einem Beispiel finden Sie hier.
Vor kurzem wählten wir in einem Projekt diesen Weg und stolperten dabei über einen Oracle-Bug, da der Kunde noch mit der Datenbank-Version 10.2.0.2 und mit deutschen Spracheinstellungen arbeitete. Sowohl das Oracle-Directory als auch die Tabelle waren angelegt, und auch die Datendatei war im richtigen Verzeichnis vorhanden.
Beim Zugriff auf die External Table folgte dann die Überraschung:
ORA-29913: Fehler bei der Ausführung von Aufruf ODCIEXTTABLEOPEN
ORA-29400: Data Cartridge-Fehler
KUP-00552: internal XAD package failed to load
ORA-06512: in "SYS.ORACLE_LOADER", Zeile 19
Das Problem tritt auf bei nicht-englischsprachigen NLS-Einstellungen (in diesem Fall deutsch) und kann folgendermaßen behoben werden:
In Version 10.2.0.3 ist der Fehler behoben.
Bei den kup<lang>.msb-Dateien handelt es sich um die zu der jeweiligen Spracheinstellung passende Fehlermeldungen. Unter Verwendung von kupus.msb erscheinen daher die KUP-Fehlermeldungen in englisch. Fehlt etwa in diesem Beispiel die externe Datei emp1.dat, so wird die Fehlermeldung in 10.2.0.2 mit angegebenem Workaround in englisch angezeigt:
ORA-29913: Fehler bei der Ausführung von Aufruf ODCIEXTTABLEOPEN
ORA-29400: Data Cartridge-Fehler
KUP-04040: file emp1.dat in EMP_DIR not found
ORA-06512: in "SYS.ORACLE_LOADER", Zeile 19
In Version 10.2.0.3 (ohne obigen Workaround) dagegen in deutsch:
ORA-29913: Fehler bei der Ausführung von Aufruf ODCIEXTTABLEOPEN
ORA-29400: Data Cartridge-Fehler
KUP-04040: Datei emp1.dat in EMP_DIR nicht gefunden
ORA-06512: in "SYS.ORACLE_LOADER", Zeile 19
Telefon:
089 6228 6789-0
Telefon (gültig bis Ende 2010):
089 679090-40
E-Mail:
› info@muniqsoft.de
Bitte nehmen Sie mich in den Verteiler der monatlichen Tipps & Tricks auf.