DBMS_DATAPUMPでのPL/SQLからのData Pumpの使用

DBMS_DATAPUMP PL/SQLパッケージを使用して、Data Pumpダンプ・ファイルをオブジェクト・ストレージとの間で直接エクスポートおよびインポートします。

DBMS_DATAPUMP PL/SQLパッケージは、データベース内から直接Oracle Data Pumpのエクスポートおよびインポート操作を行うためのインタフェースを提供します。DBMS_DATAPUMPは、完全およびスキーマ・レベルのエクスポートおよびインポートに適しています。問合せレベルまたはオブジェクト・レベルのデータをエクスポートまたはロードする場合は、DBMS_CLOUD.EXPORT_DATAまたはDBMS_CLOUD.COPY_DATAの使用を検討してください。コマンドライン・ユーティリティを使用した完全なデータベース・レベルのインポートまたはエクスポートには、expdpおよびimpdp Data Pumpツールを使用します。

このトピックでは、DBMS_DATAPUMP PL/SQLパッケージを使用して、Data Pumpダンプ・ファイルをオブジェクト・ストアとの間で直接エクスポートおよびインポートする方法について説明します。オブジェクト・ストア・ファイルの書込みまたは読取りを行うには、ADD_FILEにオブジェクト・ストアURIを指定し、資格証明名を指定します。

前提条件

これらの例に従う前に、オブジェクト・ストレージ資格証明、ネットワークACLおよび必要なディレクトリまたは資格証明オブジェクトを作成します。

例: オブジェクト・ストレージへのエクスポート

この例では、エクスポート・ジョブを作成し、ダンプ・ファイルをオブジェクト・ストレージに書き込み、ローカル・ディレクトリ・オブジェクトのかわりに資格証明名を使用します。

DECLARE
  hdl       NUMBER;
  dump_file VARCHAR2(1024) := 'https://objectstorage.example.com/n/namespace/b/bucket/o/hr_exp_%U.dmp';
  cred_name VARCHAR2(128)  := 'OBJSTORE_CRED';
BEGIN
  hdl := DBMS_DATAPUMP.OPEN(
           operation => 'EXPORT',
           job_mode   => 'SCHEMA',
           job_name   => 'HR_EXP_OBJSTORE');

  DBMS_DATAPUMP.ADD_FILE(
    handle    => hdl,
    filename  => dump_file,
    directory => cred_name,
    filesize  => NULL,
    filetype  => DBMS_DATAPUMP.KU$_FILE_TYPE_URIDUMP_FILE,
    reusefile => 1);

  DBMS_DATAPUMP.METADATA_FILTER(hdl, 'SCHEMA_EXPR', 'IN (''HR'')');
  DBMS_DATAPUMP.START_JOB(hdl);
  DBMS_DATAPUMP.DETACH(hdl);
END;
/

例: オブジェクト・ストレージからのインポート

この例では、ダンプ・ファイルをオブジェクト・ストレージからインポートし、インポート中にスキーマを再マップします。

DECLARE
  hdl       NUMBER;
  dump_file VARCHAR2(1024) := 'https://objectstorage.example.com/n/namespace/b/bucket/o/hr_exp_%U.dmp';
  cred_name VARCHAR2(128)  := 'OBJSTORE_CRED';
BEGIN
  hdl := DBMS_DATAPUMP.OPEN(
           operation => 'IMPORT',
           job_mode   => 'SCHEMA',
           job_name   => 'HR_IMP_OBJSTORE');

  DBMS_DATAPUMP.ADD_FILE(
    handle    => hdl,
    filename  => dump_file,
    directory => cred_name,
    filetype  => DBMS_DATAPUMP.KU$_FILE_TYPE_URIDUMP_FILE);

  DBMS_DATAPUMP.METADATA_REMAP(hdl, 'REMAP_SCHEMA', 'HR', 'HR2');
  DBMS_DATAPUMP.START_JOB(hdl);
  DBMS_DATAPUMP.DETACH(hdl);
END;
/