2009-06-22 4 views
0

Während ich die SQL-Prozedur zum Erstellen einer CSV-Datei aus dem Inhalt der Tabelle schreibe, bleibe ich bei dem folgenden Fehler stecken:Kannst du mir bitte in Oracle helfen, den Tabelleninhalt mit UTL-Funktionen in eine Datei zu schreiben

ERROR at line 1: 
ORA-29283: invalid file operation 
ORA-06512: at "SYS.UTL_FILE", line 488 
ORA-29283: invalid file operation 
ORA-06512: at "DSI_DPIPE.BUSSHOURS", line 28 
ORA-06512: at "DSI_DPIPE.BUSSHOURS", line 55 
ORA-06512: at line 1 

Erste Zeile ist:

file_http UTL_FILE.file_type; 

gleichen Fehler selbst kommt ich die Aussage bin mit:

file_http sys.UTL_FILE.file_type; 

Vielen Dank für Ihre wertvolle Lösung im Voraus.

+0

Können Sie Ihre Umgebung beschreiben? Welches Betriebssystem, welche Version von Oracle? –

+1

hätte gesagt "beschreiben" (wohlgemerkt, beschreibbar wäre tolles Wort ...) –

+0

mehr Code, bitte. Was ist in Zeile 28? –

Antwort

2

Hat der Oracle-Benutzer Zugriffsrechte zum Schreiben in das Verzeichnis, in das Sie die Datei schreiben möchten?

EDIT: Wenn Sie in einer Unix-Umgebung sind, sollen Sie manuell als Oracle-Benutzer anmelden, gehen Sie zu dem Pfad, den Sie versuchen, die Datei zu erstellen und den Befehl „touch“ verwenden, um eine Datei zu erstellen, . Wenn Sie auf diese Weise keine Datei erstellen können, wissen Sie, dass es sich um ein Problem mit "Zugriffsrechten" im Betriebssystem handelt, andernfalls liegt das Problem in ORACLE. (Wird die Suche in 50% verringern; D)

EDIT 2:
Wenn UTL_FILE_DIR = * dann Berechtigungen Datenbank sind zu deaktivieren und alle Dateien und Verzeichnisse sind für alle Benutzer zugänglich. Aber ich denke, das gilt nur auf einer Datenbankebene, also hat das Betriebssystem auch etwas zu sagen. Wenn der Oracle-Benutzer keinen Schreibzugriff auf ein Verzeichnis hat, können die Benutzer der Datenbank dieses Recht nicht nutzen, unabhängig davon, was UTL_FILE_DIR sagt.

+0

Ich habe UTL_FILE_DIR = * es gibt kein Problem dafür –

+0

können Sie Ihre Zeit verlängern, um mir eine weitere Möglichkeit zur Lösung dieses Fehlers –

+0

vorschlagen, sind wir in Unix/Linux? – Jonathan

0

Überprüfen Sie, ob der Verzeichnispfad korrekt ist und Sie über die richtigen Berechtigungen verfügen (d. H. Oracle erlaubt dem Betriebssystem, an diesen Speicherort zu schreiben).

+0

ich überprüft, dass .... aber es kommt nur so ....... –

+0

Es tut mir leid, ich habe diesen Kommentar nicht verstanden, können Sie es umformulieren? –

+0

Ich habe UTL_FILE_DIR = * da kein Problem von Berechtigungen gesetzt –

2

Verwenden Sie die CREATE DIRECTORY-Funktion anstelle von UTL_FILE_DIR für die Verifizierung des Verzeichniszugriffs.

UTL_FILE_DIR = * ist gefährlich, weil Datenbankbenutzer, die Zugriff auf das Paket utl_file haben, Dateien auf dem Datenbankserver mit den Berechtigungen des Benutzers oracle (Datendateien, init.ora, listener.ora usw.) lesen/schreiben können. .

Haben Sie die richtigen Berechtigungen zum Schreiben/Lesen in das Verzeichnis. Benutzeroracle auf dem Server benötigt Lese-/Schreibberechtigung.

Verwandte Themen