web-dev-qa-db-ja.com

ダンプファイルから外部テーブルをロードする

EXPDPプロセスを使用してダンプファイルを作成しました。

上記のダンプファイルを使用して外部テーブルを作成しようとしています。

次のステートメントを使用して、外部テーブルを作成しています。

CREATE TABLE HR.DATA_LOAD
(
"EMP_NO" NUMBER(10,0) NOT NULL ENABLE, 
    "EMP_NAME" VARCHAR2(20 BYTE), 
    "DEPT_ID" NUMBER(10,0), 
    "DEPT_NM" VARCHAR2(20 BYTE), 
    "DOJ" VARCHAR2(20 BYTE), 
    "LOCATION" VARCHAR2(20 BYTE), 
    "PHN_NUM" NUMBER(20,0), 
    "EMAIL" VARCHAR2(20 BYTE), 
    "COL1" VARCHAR2(20 BYTE), 
    "COL2" VARCHAR2(20 BYTE)
)
ORGANIZATIONAL EXTERNAL
(
  TYPE Oracle_DATAPUMP
  DEFAULT DIRECTORY DATA_PUMP_DIR
  LOCATION ('exp_dumpfile.dmp')
);

上記のステートメントを実行するとテーブルが作成されますが、SELECTステートメントを発行してデータを表示すると、次のエラーが発生します。

ORA-29913: error in executing ODCIEXTTABLEOPEN callout
ORA-39324: cannot load data from Data Pump dump file 

私は何か間違っているのですか、それともDatapumpメソッドによって生成されたダンプファイルを使用して外部テーブルを作成できるのですか?

エラーORA-39324の説明を Oracleドキュメント で検索すると、次のように表示されます。

原因:データポンプを使用して作成されたロード操作に対してダンプファイルが指定されました。このタイプのダンプファイルは、Oracle_DATAPUMPアクセスドライバーを使用する外部テーブルでは処理できません。

アクション:データポンプを使用して、このダンプファイルのデータにアクセスします。

EXPDPによって作成されたダンプは、IMPDP(またはdbms_datapump)によってのみ読み取ることができます。一方、(datapumpドライバーを使用して)書き込み可能な外部テーブルを使用して作成されたダンプは、(datapumpドライバーを使用して)外部テーブルインターフェイスを使用してのみ再読み取りできます。 Expdpは、データのダンプ以上のことを行います(これは、データポンプドライバーを使用して書き込み可能な外部テーブルによって行われる唯一のことです)。


コミュニティWikiの回答 元は BriteSponge および Raj によるコメントに基づく

コミュニティのwikiの投稿は、他の人が最新の状態に保ち、有用な情報を追加し、一般に品質を向上させるために編集することを期待して、コミュニティに寄付されました。

5
Paul White 9