ORA-29913 ist einer der häufigsten Fehler beim Arbeiten mit externen Tabellen in der Oracle-Datenbank. Wir würden uns verschiedene Möglichkeiten ansehen, wie der Fehler erzeugt werden kann, und was getan werden kann, um den Fehler zu beheben
(1) Externe Datei nicht gefunden oder Berechtigung falsch
SQL> select * from Scott.example_external_table;
select * from example_external_table
*
FEHLER in Zeile 1:
ORA-29913:Fehler beim Ausführen des Aufrufs ODCIEXTTABLEOPEN
ORA- 29400:Datenkassettenfehler
KUP-04040:Datei test1.dat in TEST_DIR nicht gefunden
ORA-06512:bei "SYS.ORACLE_LOADER", Zeile 14
ORA-06512:bei Zeile 1
Beim Analysieren der Tabelle erhalten Sie eine ähnliche Meldung:
SQL> execute sys.dbms_stats.gather_table_stats(‘SCOTT’,’EXAMPLE_EXTERNAL_TABLE’);
BEGIN sys.dbms_stats.gather_table_stats(‘SCOTT’,’EXAMPLE_EXTERNAL_TABLE’); END;
*
FEHLER in Zeile 1:
ORA-29913:Fehler beim Ausführen des ODCIEXTTABLEOPEN-Callouts
ORA-29400:Datenkassettenfehler
KUP-04040:Dateitest1 .dat in TEST_DIR nicht gefunden
ORA-06512:bei „SYS.DBMS_STATS“, Zeile 7161
ORA-06512:bei „SYS.DBMS_STATS“, Zeile 7174
ORA-06512:bei Zeile 1
Oder allgemein
ORA-20011:Ungefähres NDV fehlgeschlagen:
ORA-29913:Fehler beim Ausführen des ODCIEXTTABLEOPEN-Callouts
ORA-29400:Datenkassettenfehler
KUP-04040:Datei
Grund
Die externen Dateien wurden vom richtigen Ort verschoben
SQL> select * from dba_directories;
EIGENTÜMER DIRECTORY_NAME DIRECTORY_PATH
------ -------------- -----------------------
SYS TEST_DIR /u01/oradata/externe_Dateien
Überprüfen Sie die mit der externen Tabelle verknüpften Dateinamen
select * from dba_external_locations
where table_name='EXAMPLE_EXTERNAL_TABLE';OWNER TABLE_NAME LOCATION DIRECTORY_OWNER DIRECTORY_NAME
----- ------------- -------- --------------- ---------------
SYS BEISPIEL_EXTERNE_TABELLE test1.dat SYS TEST_VERZ
SYS BEISPIEL_EXTERNE_TABELLE test2.dat SYS TEST_DIR
Jetzt Überprüfung auf Betriebssystemebene
$ cd /u01/oradata/external_files
$ ls test[1-2]/dat
Keine solche Datei oder Verzeichnis
Dateien sind also nicht am richtigen Ort vorhanden
Beide obigen Abfragen können auch wie unten kombiniert werden
select TABLE_NAME, DIRECTORY_PATH||'/'||LOCATION file_name from DBA_EXTERNAL_LOCATIONS loc, dba_directories dir
wobei loc.DIRECTORY_OWNER=dir.OWNER
und loc.DIRECTORY_NAME=dir.DIRECTORY_NAME
und loc. OWNER='&1' und loc.TABLE_NAME='&2';
Lösung:
Verschieben Sie beide Dateien zurück an den ursprünglichen Speicherort
$ mv /u02/oradata/externe_dateien/test2.dat /u01/oradata/externe_dateien
$ mv /u02/oradata/externe_dateien/test1.dat /u01/oradata/externe_dateien
Jetzt
Sowohl die unten stehende Anweisung wird erfolgreich sein
select * from Scott.example_external_table;execute sys.dbms_stats.gather_table_stats('SCOTT','EXAMPLE_EXTERNAL_TABLE');
(2) Falsches Datenformat in externer Datei
FEHLER in Zeile 1: ORA-29913:Fehler beim Ausführen des ODCIEXTTABLEFETCH-Callouts ORA-30653:Ablehnungsgrenze erreicht ORA-06512:bei „SYS.ORACLE_LOADER“, Zeile 14 ORA-06512:bei Zeile 1 |
Grund
(i) Die externe Datei enthält möglicherweise Leerzeilen
(ii) Überprüfen Sie das TAB-Trennzeichen oder das HEX-Trennzeichen
a. Das von Oracle verwendete TAB-Trennzeichen „\t“ wird durch einen HEX-Wert „09“ dargestellt
b. Der HEX-Wert in der Datendatei sollte mit dem HEX-Wert übereinstimmen, der in der
CREATE-Anweisung
c angegeben ist. Die HEX-Spezifikation in der CREATE-Anweisung sollte wie folgt aussehen:0X'
(iii) Wenn die Spalte der externen Tabelle hinzugefügt wird, sollte dieselbe in der vorhanden sein externe Datei
Auflösung
Überprüfen Sie den Fehler im Protokoll und beheben Sie das Problem entsprechend
(3) Fehler bei Null-Spalte
FEHLER in Zeile 1: ORA-29913:Fehler beim Ausführen des ODCIEXTTABLEOPEN-Callouts ORA-29400:Datenkassettenfehler KUP-04043:Tabellenspalte nicht in externer Quelle gefunden: |
Grund
Die externe Datei hat Nullwerte für die letzte Spalte, die ursprünglich eine Zahlenspalte ist. Wenn wir die Null in eine Zahl 0 ändern, ist die Abfrage erfolgreich.
Auflösung
Um einen NULL-Wert zu laden, müssen wir das Trennzeichen ENCLOSED BY in die Tabellendefinition aufnehmen.
durch Zeilenumbruch getrennte Datensätze mit ',' abgeschlossene Felder optional eingeschlossen durch ' ' <<<===== fehlende Feldwerte sind null |
(4) ORA-29913 kann auch auftreten, wenn Oracle nicht in der Lage ist, die Protokolldateien ebenfalls zu erstellen. Also überprüfen Sie die Berechtigung der Verzeichnisse
(5) Externer Tabellenverzeichnisfehler
Der ORA-29913-Fehler kann auch in externen Tabellen auftreten, wenn Sie dem Verzeichnis keine Lese- und Schreibberechtigungen erteilen:
VERZEICHNIS EXTDIR ERSTELLEN ODER ERSETZEN ALS „/u01/oradata/testdir“;
GEWÄHREN SIE DAS LESEN AUF DEM VERZEICHNIS testdir TO
GEWÄHREN SIE DAS SCHREIBEN AUF DEM VERZEICHNIS testdir TO
Hier sind einige gute Informationen über externe Tabellen, die Sie sich ansehen sollten
Was sind EXTERNE TABELLEN in Oracle?
(1)Externe Tabellen sind Nur-Lese-Tabellen, in denen die Daten in Flatfiles außerhalb der Datenbank gespeichert werden
(2) Sie können die Funktion für externe Tabellen verwenden, um auf externe Dateien zuzugreifen, als wären sie Tabellen in der Datenbank.
(3) Wenn Sie eine externe Tabelle erstellen, definieren Sie ihre Struktur und Position mit in Oracle. Im Grunde speichern Sie einfach die Metadaten im Orakel
(4) Wenn Sie die Tabelle abfragen, liest Oracle die externe Tabelle und gibt die Ergebnisse zurück, als wären die Daten in der Datenbank gespeichert worden.
(5) Der Oracle-Server bietet zwei wichtige Oracle-Treiber zum Lesen der Flatfiles
- Oracle_loader:Dies wird zum Lesen der Flatfiles unter Verwendung der Oracle-Loader-Technologie verwendet. Es ermöglicht grundsätzlich das Lesen der Dateien, die mit der SQL-Loader-Technologie interpretiert werden können
- Oracle_datapump:Dies wird sowohl zum Importieren als auch zum Exportieren von Daten unter Verwendung eines plattformunabhängigen Formats verwendet
Verwandte Artikel
Externe Oracle-Tabellen:In diesem Beitrag finden Sie Informationen zur Verwendung externer Tabellen in Oracle mit Beispielen, wie externe Tabellen erstellt und verwendet werden
Oracle-Tabelle erstellen:Tabellen sind die Grundeinheit der Datenspeicherung in einer Oracle-Datenbank. Wir behandeln die Verwendung des Oracle-Befehls „Create Table“, um eine Tabelle mit Fremdschlüssel/Primärschlüssel zu erstellen wir können es vermeiden, Oracle bugs für diese Fehler
ORA-01017:ungültiger Benutzername/Passwort; Anmeldung verweigert:Informieren Sie sich über die mögliche Auflösung von ORA-01017 ungültiger Benutzername/Passwort; Anmeldung verweigert. So beheben Sie es schnell und ohne großen Aufwand
ORA-00001 eindeutige Einschränkung verletzt :Sehen Sie sich diesen Beitrag für die mögliche Lösung für den Oracle-Fehler ORA-00001 eindeutige Einschränkung verletzt an. Wie man es löst und repariert
ORA-00911:Ungültiges Zeichen:Dieser Beitrag ist für häufige Ursachen von ORA-00911:Ungültiges Zeichen in Oracle mit Beispielen und Lösungen, die Ihnen helfen, den Job abzuschließen
ORA-00900:Dieser Beitrag enthält verschiedene Lösungen für die ungültige SQL-Anweisung von ORA-00900. Gründe für den Fehler. Wie man ihn schnell debuggt und löst,
ORA-03113:Dateiende im Kommunikationskanal:Überprüfen Sie die Methode zur Auflösung von ORA -03113:Dateiende auf Kommunikationskanal. Dieser Fehler kann beim Starten der Datenbank und beim Ausführen des Programms
Oracle-Dokumentation
Empfohlene Kurse
Hier ist der nette Udemy-Kurs für Oracle SQL
Oracle-Sql-Schritt-für-Schritt :Dieser Kurs behandelt grundlegendes SQL, Joins, Erstellen von Tabellen und Ändern ihrer Struktur, Erstellen von Ansichten, Union, Union -all und vieles mehr . Ein großartiger Kurs und ein Muss für SQL-Einsteiger
Der vollständige Oracle SQL-Zertifizierungskurs :Dies ist ein guter Kurs für alle, die für SQL-Entwicklerfähigkeiten einsatzbereit werden möchten. Ein gut erklärter Kurs
Oracle SQL Developer:Grundlagen, Tipps und Tricks :Das Oracle Sql-Entwicklertool wird von vielen Entwicklern verwendet. Dieser Kurs gibt uns Tricks und Lektionen, wie man es effektiv nutzt und ein produktiver SQL-Entwickler wird
Oracle SQL Performance Tuning Masterclass 2020 :Leistungsoptimierung ist eine der wichtigsten und gefragtesten Fähigkeiten. Dies ist ein guter Kurs, um mehr darüber zu erfahren und mit der Optimierung der SQL-Leistung zu beginnen