外部テーブルを作成したかったのですが、CREATE ANY DIRECTORY
アクセス許可がありませんでした (許可できませんでした)。当然のことながら、DBA に次のコマンドを実行するように依頼しました。
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: ODCIEXTTABLEOPEN コールアウトの実行中にエラーが発生しました
ORA-29400: データ カートリッジ エラー
KUP-04040: EXT_DATA_FILES 内のファイル the_external_file.txt が見つかりません
ORA-06512: "SYS.ORACLE_LOADER"、19 行目に
(グーグルでかなりの数のヒットがありますが、関連しているようには見えません)
これは私たちの DEV 環境で使用されているスクリプトとまったく同じであるため、構文に自信があります。また、関連するすべてのファイルとディレクトリのアクセス許可がチェックされ、775
.
ここで DEV (動作する場所) との唯一の違いは、ディレクトリEXT_DATA_FILES
が MYAPPUSER によって作成されたものではないことです。シノニムを作成しようとしましたが、効果がありませんでした。
言及する価値があるかもしれませんが、私たちが話しているのは Oracle 10g です。
明らかな何かが欠けていますか?これは許されますか?