1

外部テーブルを作成したかったのですが、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 です。

明らかな何かが欠けていますか?これは許されますか?

4

2 に答える 2

1

実際、すべてのディレクトリは SYS が所有しています。そのため、CREATE DIRECTORY 権限はなく、CREATE ANY DIRECTORY しかありません。

そのため、ディレクトリ名の前に SYS スキーマを付けずにコマンドを実行して、何が起こるかを確認してください。

于 2012-03-21T12:42:04.477 に答える
0

エラーメッセージは次のとおりです。「EXT_DATA_FILESのファイルthe_external_file.txtが見つかりません」

そこにありますか?

于 2012-03-21T12:46:06.073 に答える