ORACLE 11G UTL_FILE + UTL_FILE_DIR - Invalid Directory
Hallo, ich arbeite mit Oracle 11 und ich bin versucht, zu schreiben, um ein Verzeichnis auf der server-box mit UTL_FILE.FOPEN.
Um dies zu testen bin ich mit dem folgenden Skript (Ausgabe enthalten):
SQL> @D:\test.sql
declare
l_file_handle UTL_FILE.FILE_TYPE;
begin
l_file_handle := UTL_FILE.FOPEN('/appl/mydir',
'/appl/mydir/filename',
'W');
UTL_FILE.FCLOSE(l_file_handle);
DBMS_OUTPUT.PUT_LINE('FINISHED');
end;
ORA-29280: invalid directory path
ORA-06512: at "SYS.UTL_FILE", line 41
ORA-06512: at "SYS.UTL_FILE", line 478
ORA-06512: at line 7
SQL>
Habe ich die /appl/mydir Hinzugefügt, um die UTL_FILE parameter:
SELECT value
FROM V$PARAMETER
WHERE NAME = 'utl_file_dir';
/appl/mydir, /appl/mydir2, /appl/mydir3
Das UNIX-Verzeichnis, Schreibrechte alle auf UNIX:
$ ls -l /appl/mydir
total 0
drwxrwsrwx 2 user userc 363968 Nov 27 13:46 mydir
Oracle Directory-Objekt ist nicht eine option, und ich bin mir der Nachteile von der UTL_FILE_DIR Umsetzung.
Irgendwelche Ideen, warum das Skript fehlschlägt?
docs.oracle.com/cd/E11882_01/appdev.112/e10577/... was Sie oben scheint nicht zu passen die docs überhaupt.
in welcher Weise? Der obige code sollte gültig sein und das funktioniert auf einem anderen Oracle-9-Umgebung.
denken Sie daran, dass der oracle-Benutzer (dh der Benutzer, der die db läuft) muss Lesen/schreiben/ausführen für die Verzeichnisse, um dorthin zu kommen und schreiben Sie Ihre Datei. hat der oracle-Benutzer haben zumindest r+x auf /appl ?
auch die Dokumente für 9.2 Zustand, dass der erste Parameter muss in Großbuchstaben) ein directory-Objekt, und der zweite darf nicht enthalten einen Weg.
streng genommen nicht richtig. directory-Objekte sind der Weg zu gehen, sicher, aber die Pfade sind noch einmal unterstützt in 11gR2. die Pfade sollen nicht übergeben werden, der in parameter 2 aber Sie sind wieder toleriert (ignoriert).
in welcher Weise? Der obige code sollte gültig sein und das funktioniert auf einem anderen Oracle-9-Umgebung.
denken Sie daran, dass der oracle-Benutzer (dh der Benutzer, der die db läuft) muss Lesen/schreiben/ausführen für die Verzeichnisse, um dorthin zu kommen und schreiben Sie Ihre Datei. hat der oracle-Benutzer haben zumindest r+x auf /appl ?
auch die Dokumente für 9.2 Zustand, dass der erste Parameter muss in Großbuchstaben) ein directory-Objekt, und der zweite darf nicht enthalten einen Weg.
streng genommen nicht richtig. directory-Objekte sind der Weg zu gehen, sicher, aber die Pfade sind noch einmal unterstützt in 11gR2. die Pfade sollen nicht übergeben werden, der in parameter 2 aber Sie sind wieder toleriert (ignoriert).
InformationsquelleAutor Robert Gallow | 2012-11-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
ersten, in 11g die bevorzugte Art und Weise ist, ein Verzeichnis zu erstellen und nicht mit utl_file.
zweitens, überprüfen Sie bitte, welche genaue Befehl, den du verwendet, um die directoty Liste :
war es
oder
wenn Ihr den ersten Weg, wiederholen Sie es wieder der 2. Weg als der erste Weg falsch ist (es wird gleich Aussehen, in die v$ - Tabelle-Ausgabe, aber seine falsch).
zB:
humm. ist nun fix, dass die Daten.
überprüfen Sie auch den oracle-Benutzer hat r+x auf /appl und rwx /appl/mydir
retten meinen Tag :).
InformationsquelleAutor DazzaL
2 Schritten zur Lösung für die überwindung dieser Fehler::
1.Werden Sie sicher, dass die OS-level-Benutzer die Berechtigung zum schreiben in einen Ordner
2.Versuchen Sie Großbuchstaben für den Namen des Verzeichnisses, d.h. statt der out_dir verwenden OUT_DIR
Hat die Datei hat Schreibrechte?
InformationsquelleAutor Ajith Sasidharan
Sich der Raum kann auch dazu führen, dieses Problem.
Oracle wirft die gleichen Fehler, wenn Sie nicht den Raum haben, auf den mount-Punkt.
Bitte überprüfen Sie, ob noch Speicherplatz verfügbar ist oder nicht auf utl_file_dir mountpoint.
Für Linux & Solaris verwenden :
Stand ich vor demselben Problem später kennen lernten, war Speicherplatz Problem auf den mount-Punkt.
InformationsquelleAutor Nagendra Nigade
Für den Dateinamen nur den Namen, nicht den Pfad.
So sollte man
InformationsquelleAutor user5545519