Oracle externe Tabelle mit dba-Verzeichnis
Wollte ich erstellen Sie eine externe Tabelle, aber nicht das CREATE ANY DIRECTORY
Erlaubnis (und konnte es auch nicht gewährt). Fair genug, ich fragte, die Datenbankadministratoren ausführen der folgenden:
CREATE OR REPLACE DIRECTORY ext_data_files AS '/data/ext_data_files';
GRANT ALL ON DIRECTORY ext_data_files TO MYAPPUSER;
Taten Sie, und das Letzte Objekt hat das folgende Skript:
CREATE OR REPLACE DIRECTORY
EXT_DATA_FILES AS
'/data/ext_data_files';
GRANT READ, WRITE ON DIRECTORY SYS.EXT_DATA_FILES TO MYAPPUSER;
(Ich habe welche aus Fragen desc
mit Toad)
War ich dann in der Hoffnung, dieses Verzeichnis verwenden, um meine externe Tabelle mit dem Skript wie folgt:
CREATE TABLE MYAPPUSER.MY_EXT_TABLE
(
ID VARCHAR2(100 BYTE),
LOGIN VARCHAR2(100 BYTE),
CODE VARCHAR2(100 BYTE),
CREATED_AT VARCHAR2(100 BYTE)
)
ORGANIZATION EXTERNAL
( TYPE ORACLE_LOADER
DEFAULT DIRECTORY SYS.EXT_DATA_FILES
ACCESS PARAMETERS
( RECORDS DELIMITED BY NEWLINE
NOBADFILE
NOLOGFILE
FIELDS TERMINATED BY ';'
MISSING FIELD VALUES ARE NULL
( ID, LOGIN, CODE, CREATED_AT) )
LOCATION (SYS.EXT_DATA_FILES:'the_external_file.txt')
)
REJECT LIMIT 0
PARALLEL ( DEGREE DEFAULT INSTANCES DEFAULT )
NOMONITORING;
aber wenn ich dann SELECT * FROM MY_EXT_TABLE
, die Folge ist der berühmt-berüchtigte
ORA-29913: Fehler bei der Ausführung ODCIEXTTABLEOPEN Legende
ORA-29400: data cartridge-Fehler
KUP-04040: Datei the_external_file.txt in EXT_DATA_FILES nicht gefunden
ORA-06512: at "SYS.ORACLE_LOADER", Zeile 19
(die hat schon ein paar Treffer bei google, aber keiner scheint-bezogen)
Ich bin zuversichtlich, dass die syntax, da dies ist genau das gleiche script verwendet, in unserer DEV-Umgebung. Auch die Berechtigungen aller Dateien und Verzeichnisse betroffen sind, wurden überprüft und da ist nichts niedriger als 775
.
Nur mit dem Unterschied ich habe hier von DEV (wo es funktioniert) ist, dass das Verzeichnis EXT_DATA_FILES
war nicht von MYAPPUSER. Ich habe versucht, erstellen ein synonym für es.. hatte aber keine Wirkung.
Vielleicht erwähnenswert, es ist Oracle 10g über die wir sprechen.
Übersehe ich hier etwas offensichtliches? Ist das erlaubt?
funktioniert die txt-Datei eigentlich vorhanden???
Nun, sollte dieses Verzeichnis benutzt werden, um mehr als ein schema.. ich dachte, es Art von Sinn werden in der SYS oder irgendwo für alle Benutzer gleich. Wie für die Dateien, ja es existiert, und wie ich schon erwähnt "die Berechtigungen aller Dateien und Verzeichnisse, die beteiligt waren, geprüft wird." :/
Verzeichnisse haben keine Schemata, Sie gehören alle zu SYS (ab 11gR2)
Bahh. Schande über mich. Fand es. Alle Dateien und Berechtigungen waren es in Ordnung, ein kleines Problem gedacht. Sie bewegten sich die ganze friggn' DB nicht mounten, wieder etwas weniger verwendet FSs zurück nach der migration (und wie Murphy vorhergesagt, ich nahm mir eins von diesen für meine externe Tabelle). Aus meiner app POV war alles in Ordnung, aber Oracle nicht über die FS zu Abfrage. Tut mir Leid, Sie zu stören Leute mit diesem..
InformationsquelleAutor filippo | 2012-03-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Alle Verzeichnisse sind in der Tat im Besitz von SYS. Das ist, warum gibt es kein VERZEICHNIS ERSTELLEN Privileg, nur ERSTELLEN Sie ein beliebiges VERZEICHNIS.
Also versuchen Sie den Befehl ohne Präfix den Namen des Verzeichnisses mit den SYS-schema und sehen, was passiert.
Habe Grade etwas Interessantes gefunden: In meinem dev env. wenn ich
desc EXT_DATA_FILES
es zeigt die Beschreibung des Objekts. Jetzt, in der env prod. wenn ich das gleiche tundesc EXT_DATA_FILES
es wird nicht funktionieren, es wird jedoch die Beschreibung wenn ich die SYS. um es, z.B.desc SYS.EXT_DATA_FILES
. Dies wäre ein Anhaltspunkt irgendwie? @VincentMalgrat dies würde auch Sinn? danke!InformationsquelleAutor APC
Die Fehlermeldung lautet:
"Datei the_external_file.txt in EXT_DATA_FILES nicht gefunden"
Sind Sie sicher, dass es da ist?
InformationsquelleAutor Rene