Announcement
Collapse
No announcement yet.
Externe Tabelle anbinden
Collapse
X
-
Hallo,
nun bin ich auf ein weiteres Problem gestossen. Wenn die csv-Datei in einer Netzwerkfreigabe auf einem anderen Server liegt, kann Oracle hier wohl kein Log erstellen:
ORA-29913: Fehler bei der Ausführung von Aufruf ODCIEXTTABLEOPEN
ORA-29400: Data Cartridge-Fehler
KUP-04063: Log-Datei FAB_2980_5808.log konnte nicht göffnet werden
BS-Fehler Das System kann die angegebene Datei nicht finden.
ORA-06512: in "SYS.ORACLE_LOADER", Zeile 19
29913. 00000 - "error in executing %s callout"
*Cause: The execution of the specified callout caused an error.
*Action: Examine the error messages take appropriate action.
Kann man die Logfiles auch deaktivieren? Sie stören eigentlich sowieso nur.
In Dokus habe ich gelesen, dass es hier einen Parameter NOLOG gibt, aber dieser wird nicht akzeptiert.
Für Tips bin ich dankbar!
Comment
-
Originally posted by Chriss View PostBerechtigt habe ich das Verzeichnis für jeden mit Vollzugriff.
Kann man die Logfiles auch deaktivieren? Sie stören eigentlich sowieso nur.
In Dokus habe ich gelesen, dass es hier einen Parameter NOLOG gibt, aber dieser wird nicht akzeptiert.
Ich habe ehrlich gesagt sowas bis jetzt nur lokal auf dem Server Filesystem gemacht, wusste nicht dass das geht auf Netzlaufwerken.
Wenn es überhaupt geht auf Netzlaufwerken und Berechtigung = Jeder = Windows Freigabe, hätte ich Zweifel dass das taugt. Jedenfalls gilt für die Logfiles das gleiche Verfahren, wie für die eigentliche Datei, das Verzeichnis muss über ein Oracle Directory Object angegeben werden.
Das muss dann- wie ich finde inkonsistent- in Hochkommata.
Wenn das bad- oder logfilename nicht angegeben werden, wird glaub ich automatisch eins anhand des CSV Namens erstellt.
Kein Log / Badfile zu verwenden ist vielleicht ne Notlösung, aber es kommt bestimmt der Tag, wo Du Dir eins wünscht (gehabt zu haben).
Der Fehler deutet m.E. darauf hin, dass trotz Berechtigung "Jeder" die Berechtigungen nicht ausreichen.
Ich würde lokal auf dem Server mit einem eigens definierten Directory für CSV Upload beginnen, inkl Log Files. Wenn das klappt, entsprechend ausbauen.
Ach und noch was *CSV im Verzeichnis "Jeder darf hier lesen" macht natürlich jeden "Hackerangriff" zum Kindergeburtstag.
Ich frag mich manchmal, warum ich mich überhaupt frage, wie ebay oder sony seine Millionen Account Daten losgeworden ist.Gruß, defo
Comment
-
Hallo Defo
Wenn es überhaupt geht auf Netzlaufwerken und Berechtigung = Jeder = Windows Freigabe, hätte ich Zweifel dass das taugt. Jedenfalls gilt für die Logfiles das gleiche Verfahren, wie für die eigentliche Datei, das Verzeichnis muss über ein Oracle Directory Object angegeben werden.
Die Logfiles werde ich definitiv nie brauchen, und falls ml doch etwas eintreten sollte, dass ich suie benötige, dann kann ich sie ja wieder aktivieren. Also, kein Logfile zu erstellen, wäre eine Lösung, aber ich weiss nicht, wie das Codetechnisch angegeben werden muss.
Code:CREATE TABLE system.log_table (TEXT VARCHAR2(400)) ORGANIZATION EXTERNAL ( TYPE oracle_loader DEFAULT DIRECTORY bdump ACCESS PARAMETERS ( RECORDS DELIMITED BY NEWLINE NOBADFILE NODISCARDFILE NOLOGFILE FIELDS TERMINATED BY '0x0A' MISSING FIELD VALUES ARE NULL) LOCATION ('alert_orabase.log')) REJECT LIMIT unlimited;
Comment
-
Originally posted by Chriss View PostCode:CREATE TABLE system.log_table (TEXT VARCHAR2(400)) ORGANIZATION EXTERNAL ( TYPE oracle_loader DEFAULT DIRECTORY bdump ACCESS PARAMETERS ( RECORDS DELIMITED BY NEWLINE NOBADFILE NODISCARDFILE NOLOGFILE FIELDS TERMINATED BY '0x0A' MISSING FIELD VALUES ARE NULL) LOCATION ('alert_orabase.log')) REJECT LIMIT unlimited;
technisch müsste das hinhauen, aber die Werte die Du verwendest erscheinen mir seltsam.
"system.log_table"
Wieso machst Du das unter System Schema?
Wieso nennst Du Deine external table "log_table"
"default directory bdump"
Das ist ein Log Verzeichnis der Datenbank selbst, zumindest der gleichnamige Directory Eintrag. Bist Du sicher, dass es sich um ein ORACLE DIRECTORY Object handelt? Zeig mal bitte den Create Code davon.
"alert_orabase.log"
das sollte Deine CSV Datei sein (im genannten Oracle Directory 'bdump' bzw. vielleicht besser ein anderes)!
Willst Du eine Log Datei importieren?
Irgendwie wirkt das, als wäre Dir nicht klar, was Du da machst. Ok, Namen sind Schall und Rauch, aber wer soll da durchblicken?
Ach und Fehlermeldungen sind besonders wichtig, die gibt es nicht aus Spaß.
Und noch der Genauigkeit halber:
Die Files werden nicht im gleichen Verzeichnis erstellt, wo das CSV File ist, sondern dort wo angegeben, im "Default Directory".
(Wo natürlich auch das CSV File liegen sollte, wenn nicht anders angegeben)Gruß, defo
Comment
-
NOLOG ist falsch, so steht es nicht mal in Deinem Beispiel.
Und wie kommst Du dazu, etwas zu posten, das bei Dir nicht "akzeptiert" wird, ohne dass Du es jemals laufen lassen hast?Gruß, defo
Comment
-
Originally posted by defo View PostHallo? Jemand zuhause?
NOLOG ist falsch, so steht es nicht mal in Deinem Beispiel.
Und wie kommst Du dazu, etwas zu posten, das bei Dir nicht "akzeptiert" wird, ohne dass Du es jemals laufen lassen hast?
ich kann nur die Meldung aktuell nicht posten, da ich gerade nicht an das System komme.
und ich meinte natürlich NOLOGFILE.
Comment
-
So, nun kann ich auch den Code nachreichen:
Code:... ORGANIZATION EXTERNAL ( TYPE ORACLE_LOADER DEFAULT DIRECTORY "P231_XTA_FOLDER" ACCESS PARAMETERS ( fields terminated by ';' NOLOGFILE ) LOCATION ( 'XTA_1234567.csv' ) )
Code:ORA-29913: Fehler bei der Ausführung von Aufruf ODCIEXTTABLEOPEN ORA-29400: Data Cartridge-Fehler KUP-00554: error encountered while parsing access parameters KUP-01005: syntax error: found "nologfile": expecting one of: "column, enclosed, exit, (, ltrim, lrtrim, ldrtrim, missing, notrim, optionally, rtrim, reject" KUP-01007: at line 2 column 11 ORA-06512: in "SYS.ORACLE_LOADER", Zeile 19 29913. 00000 - "error in executing %s callout" *Cause: The execution of the specified callout caused an error.
Zuletzt editiert von Chriss; 21.06.2014, 18:19.
Comment
-
Das hatte ich nicht bedacht. Nun, mit der richtigen Reihenfolge hat es funktioniert. Danke!
Jetzt habe ich das Problem, dass er sagt, dass das File nicht vorhanden ist.
ORA-29913: Fehler bei der Ausführung von Aufruf ODCIEXTTABLEOPEN
ORA-29400: Data Cartridge-Fehler
KUP-04040: Datei XTA_1234567.csv in P231_XTA_FOLDER nicht gefunden
ORA-06512: in "SYS.ORACLE_LOADER", Zeile 19
Kann das doch sein, dass Oracle hier keine UNC-Pfade mag?
Comment
-
Originally posted by Chriss View PostDas hatte ich nicht bedacht. Nun, mit der richtigen Reihenfolge hat es funktioniert. Danke!
Jetzt habe ich das Problem, dass er sagt, dass das File nicht vorhanden ist.
aber das File ist definitiv da und die Freigabe habe ich auf JEDER mit VOLLZUGRIFF berechtigt.
Kann das doch sein, dass Oracle hier keine UNC-Pfade mag?
Mach doch einen Test, melde Dich als Oracle App Owner auf der DB Maschine an und schau, ob Du die Datei lesen kannst mit notepad. Wenn nicht, hast Du ein Problem, wenn ja, musst Du weiter nach der Ursache suchen.
Ach und eine Freigabe mit Berechitigungen (ich geh mal davon aus, in einer Windows Domäne) hat nichts mit den Rechten einer Datei oder eines Verzeichnisses zu tun. Das sind 2 verschiedene Dinge.Gruß, defo
Comment
-
Originally posted by defo View PostAber wieso soll das nicht multiuserfähig sein?
aber das File ist definitiv da und die Freigabe habe ich auf JEDER mit VOLLZUGRIFF berechtigt.
Kann das doch sein, dass Oracle hier keine UNC-Pfade mag?
Wird also erwartet, dass man sich am AD angemeldet hat um auf das Netzlaufwerk zuzugreifen hilft auch ein Vollzugriff nichts wenn der lokale Oracleuser nicht im AD bekannt ist (was in der Regel so seien dürfte...)
Kopier die Datei über einen Job lokal auf den DB Server und benenne sie in diesem Zuge auch gleich um, dann hast den ganzen Hickhack mit den sich ändernden Dateinamen auch nicht und du kannst deine externe Tabelle so lassen wie sie ist.Zitat Tom Kyte:
I have a simple philosophy when it comes to the Oracle Database: you can treat it as a black box and just stick data into it, or you can understand how it works and exploit it as a powerful computing environment.
Comment
-
Originally posted by dimitri View PostWenn mehrere User versuchen eine Tabelle mit dem gleichen Namen anzulegen - Peng :-)
Du hast glaub ich grundsätzlich anfangs in Frage gestellt, ob das Verfahren angemessen ist, was ich wirklich für einen berechtigten Einwand halte, da es verhältnismäßig aufwändig ist. Man sieht das ja auch am Verlauf dieses Threads.
Es ist am Ende superschnell und sehr flexibel, gegenüber einem clientseitigen Import. Implementiert man noch die Verarbeitung von komprimierten Dateien, erzielt man weitere Beschleunigung schon vor der Verarbeitung.
Bin gespannt, ob der TE es schafft sich da durchzuarbeiten.Gruß, defo
Comment
Comment