外部テーブルを作成したかったのに、CREATE ANY DIRECTORY
権限を持っていませんでした(許可されていない可能性があります)。十分なフェア、私は次のように実行するためにデータベース管理者に尋ねた:dbaのディレクトリを持つOracle外部テーブル
CREATE OR REPLACE DIRECTORY ext_data_files AS '/data/ext_data_files';
GRANT ALL ON DIRECTORY ext_data_files TO MYAPPUSER;
彼らがやった、と最終的なオブジェクトは、次のスクリプトがあります。
CREATE OR REPLACE DIRECTORY
EXT_DATA_FILES AS
'/data/ext_data_files';
GRANT READ, WRITE ON DIRECTORY SYS.EXT_DATA_FILES TO MYAPPUSER;
を(私が得たものヒキガエルとdesc
求めてから)
私は、次のようにスクリプトを使って自分の外部表を作成するには、このディレクトリを使用するように期待していた。
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;
私SELECT * FROM MY_EXT_TABLE
その後、結果は
ORA-29913悪名高い
ある:データカートリッジエラー
KUP-04040:ODCIEXTTABLEOPEN吹き出し
ORA-29400を実行することでエラーEXT_DATA_FILESにthe_external_file.txtファイルではありません
ORA-06512が見つかりました: "SYS.ORACLE_LOADER" で、(Googleでかなりの数のヒットがありますが、どれも関連思えない) ライン19
を
これは私たちのDEV環境で使用されているのとまったく同じスクリプトなので、私は構文が正しいと確信しています。また、関連するすべてのファイルとディレクトリのアクセス許可がチェックされ、775
よりも低いものはありません。
私はDEV(ここでは動作します)との唯一の違いは、ディレクトリEXT_DATA_FILES
がMYAPPUSERによって作成されなかったことです。私は同義語を作成しようとしましたが、効果はありませんでした。
多分言及する価値がありますが、私たちが話しているのはOracle 10gです。
明らかなものがありませんか?これは許可されていますか?
1. sysでなぜですか? DBAが正しいスキーマでそれを作成できませんでしたか? 2.実際にディレクトリにファイルがありますか? – Ben
実際にtxtファイルは存在しますか? – Randy
このディレクトリは、複数のスキーマで使用する必要があります。私は、SYSやすべてのユーザーに共通の場所にいるのが理にかなっていると思いました。ファイルに関しては、それは存在し、私が "関連するすべてのファイルとディレクトリのパーミッションがチェックされている"と言います。 :/ – filippo