Oracle Data Pumpを使用したAutonomous Databaseからのデータのエクスポート

Oracle Data Pumpは、Autonomous Databaseと他のOracleデータベース間で、データおよびメタデータの非常に高速な一括移動を実現します。

Autonomous Databaseから他のOracleデータベースにデータをエクスポートする場合は、最新のOracle Data Pumpバージョンを使用することをお薦めします。これには操作性向上のための拡張機能と修正が含まれています。「Oracle Instant Clientのダウンロード」から、使用しているプラットフォーム用の最新バージョンのOracle Instant Clientおよびツール・パッケージ(Oracle Data Pumpが含まれる)をダウンロードします。Oracle Instant Clientおよびツール・パッケージをダウンロードした後に必要なインストール・ステップについては、プラットフォーム・インストールのダウンロード・ページでインストールの手順を参照してください。

Oracle Data Pumpを使用してAutonomous Databaseから他のOracleデータベースにデータを移動するには、次のいずれかのオプションを使用します:
  • オプション1: Data Pump Exportを使用したデータのAutonomous Databaseディレクトリへの移動

    Oracle Data Pumpを使用して、データベースのディレクトリにデータをエクスポートし、ディレクトリからクラウド・オブジェクト・ストアにデータを移動します。この方法は、Autonomous Databaseから複数のターゲット・データベースにデータを移動する場合に役立ちます。データを複数のクラウド・オブジェクト・ストアにエクスポートするかわりに、ダンプ・ファイル・セットを1回作成して複数のターゲット・データベースに使用できます。

    次のステップを実行して、データをデータベースのディレクトリにエクスポートしてAutonomous Databaseからデータを移動します:
    1. データをAutonomous Databaseのディレクトリにエクスポートし、ダンプ・ファイル・セットをディレクトリからクラウド・オブジェクト・ストアに移動します。Autonomous Databaseでのディレクトリを使用したデータのエクスポートを参照してください。
    2. クラウド・オブジェクト・ストアからダンプ・ファイルをダウンロードし、データをターゲット・データベースにインポートして、クラウド・オブジェクト・ストアをクリーン・アップします。ダンプ・ファイルのダウンロード、Data Pump Importの実行、およびオブジェクト・ストアのクリーン・アップを参照してください。
  • オプション2: Data Pump Exportを使用したデータのオブジェクト・ストアへの移動

    このエクスポート方法を使用する場合、Oracle Data Pumpを使用して、オブジェクト・ストアにデータを直接エクスポートします。このエクスポート方法は、Oracle Cloud Infrastructure Object StorageおよびOracle Cloud Infrastructure Object Storage Classicでサポートされています。これにより、Autonomous Databaseのディレクトリにダンプ・ファイル・セットを作成してから、ダンプ・ファイル・セットをクラウド・オブジェクト・ストアに移動するというオーバーヘッドを回避できます。データを単一のターゲット・データベースに移動する予定の場合、この方法により作業が節約され、エクスポート・プロセスが高速化されます。

    次のステップを実行して、データをオブジェクト・ストアに直接エクスポートしてAutonomous Databaseから移動します:
    1. Autonomous Databaseからクラウド・オブジェクト・ストアにデータを直接エクスポートします。Autonomous Databaseからオブジェクト・ストアへのデータの直接エクスポートを参照してください。
    2. クラウド・オブジェクト・ストアからダンプ・ファイルをダウンロードし、データをターゲット・データベースにインポートして、クラウド・オブジェクト・ストアをクリーン・アップします。ダンプ・ファイルのダウンロード、Data Pump Importの実行、およびオブジェクト・ストアのクリーン・アップを参照してください。

Autonomous Databaseのディレクトリを使用したデータのエクスポート

Autonomous Databaseのディレクトリを使用してデータをエクスポートするには、まずデータベースのディレクトリにエクスポート対象のデータを含むダンプ・ファイル・セットを作成し、次にデータベース・ディレクトリからクラウド・オブジェクト・ストアにこれらのファイルをアップロードする必要があります。

Data Pumpを使用したAutonomous Databaseでのダンプ・ファイル・セットの作成

  1. エクスポート済のデータを含むダンプ・ファイルを格納するディレクトリを作成します。例:
    CREATE DIRECTORY data_export_dir as 'data_export';
  2. dumpfileパラメータを設定し、filesizeパラメータを50G未満に設定し、directoryパラメータを設定して、Data Pump Exportを実行します。たとえば、次の例は、ATPC1という名前のAutonomous Database内のSALESという名前のスキーマを、16のOCPUでエクスポートする方法を示しています:
    expdp sales/password@ATPC1_high 
    directory=data_export_dir 
    dumpfile=exp%L.dmp 
    parallel=16
    encryption_pwd_prompt=yes
    filesize=1G
    logfile=export.log
    Data Pumpパラメータに関するノート:
    • ECPUの場合、parallelはECPU数の0.25倍に設定する必要があります。前述のECPUが16個の場合、parallelは0.25 x 16 (つまり、4はexpdp)に設定されます。

    • expdpでのエクスポート中にencryption_pwd_prompt=yesパラメータを使用する場合、インポートでencryption_pwd_prompt=yesを使用し、impdpのプロンプトで同じパスワードを入力してダンプ・ファイルを復号化する必要があります(エクスポートで指定したパスワードを覚えておいてください)。暗号化パスワードの最大長は128バイトです。

    • dumpfileパラメータでは、レガシーの%Uおよび%uワイルドカードに加えて、%Lおよび%lワイルドカードがサポートされています。たとえば、dumpfile=export%L.dmpです。

      Oracle Databaseリリース12.2以降からのエクスポートには、%Lまたは%lワイルドカードを使用します。このワイルドカードは、ダンプファイルファイル名を3桁から10桁の可変幅増分整数に拡張し、100から2147483646で終わります。

    最適なエクスポート・パフォーマンスを得るには、エクスポート接続にHIGHデータベース・サービスを使用して、PARALLELパラメータにデータベース内のCPUの数を設定します。Data Pump Exportを実行するために接続するデータベース・サービス名の詳細は、Autonomous Databaseの事前定義済データベース・サービス名を参照してください。

    エクスポートが完了したら、次のような問合せを実行して、生成されたダンプ・ファイルを確認できます:
    SELECT * FROM DBMS_CLOUD.LIST_FILES('DATA_EXPORT_DIR');
    たとえば、この問合せの結果の出力には、生成されたダンプ・ファイルとエクスポート・ログ・ファイルが表示されます:
    
    OBJECT_NAME                 BYTES  CHECKSUM                   CREATED          LAST_MODIFIED  
    ---------------------- ---------- ----–---- –------------------------–----- --------------------
    exp01.dmp                   12288               12-NOV-19 06.10.47.0 PM GMT       12-NOV-19...
    exp02.dmp                    8192               12-NOV-19 06.10.48.0 PM GMT       12-NOV-19...
    exp03.dmp                 1171456               12-NOV-19 06.10.48.0 PM GMT       12-NOV-19...
    exp04.dmp                  348160               12-NOV-19 06.10.48.0 PM GMT       12-NOV-19...
    export.log                   1663               12-NOV-19 06.10.50.0 PM GMT       12-NOV-19...
    
ノート

  • 完全エクスポートを実行する場合や、他のユーザーが所有するオブジェクトをエクスポートする場合は、DATAPUMP_CLOUD_EXPロールが必要です。

  • ダンプ・ファイルをオブジェクト・ストレージに移動するために使用するAPIでサポートされるファイル・サイズは最大50GBであるため、filesize引数でそれより大きいサイズを指定しないでください。

  • Oracle Data Pump Exportの詳細は、『Oracle Databaseユーティリティ』を参照してください。

Autonomous Databaseからクラウド・オブジェクト・ストアへのダンプ・ファイル・セットの移動

  1. Autonomous Databaseに接続します。

  2. DBMS_CREDENTIAL.CREATE_CREDENTIALプロシージャを使用して、クラウド・オブジェクト・ストレージ資格証明を格納します。例:
    BEGIN
      DBMS_CREDENTIAL.CREATE_CREDENTIAL(
        credential_name => 'DEF_CRED_NAME',
        username => 'adb_user@oracle.com',
        password => 'password'
      );
    END;
    /
    usernameおよびpasswordに指定する値は、使用しているクラウド・オブジェクト・ストレージ・サービスによって異なります:
    • Oracle Cloud Infrastructure Object Storage: usernameはOracle Cloud Infrastructureのユーザー名で、passwordはOracle Cloud Infrastructureの認証トークンです。認証トークンの作業を参照してください。

    • Oracle Cloud Infrastructure Object Storage Classic: usernameはOracle Cloud Infrastructure Classicのユーザー名で、passwordはOracle Cloud Infrastructure Classicのパスワードです。

      この操作によって、資格証明が暗号化された形式でデータベースに格納されます。資格証明には任意の名前を使用できます。オブジェクト・ストアの資格証明を変更しないかぎり、このステップが必要なのは1回のみです。資格証明を格納した後は、すべてのデータ・ロードで同じ資格証明名を使用できます。

  3. DBMS_CLOUD.PUT_OBJECTをコールして、ダンプ・ファイルをAutonomous Databaseからクラウド・オブジェクト・ストアに移動します。

    例:
    BEGIN
       DBMS_CLOUD.PUT_OBJECT(credential_name => 'DEF_CRED_NAME',
         object_uri => 'https://swiftobjectstorage.us-phoenix-1.oraclecloud.com/v1/idthydc0kinr/mybucket/exp01.dmp',
         directory_name => 'DATA_EXPORT_DIR',
         file_name => 'exp01.dmp');
       DBMS_CLOUD.PUT_OBJECT(credential_name => 'DEF_CRED_NAME',
         object_uri => 'https://swiftobjectstorage.us-phoenix-1.oraclecloud.com/v1/idthydc0kinr/mybucket/exp02.dmp',
         directory_name => 'DATA_EXPORT_DIR',
         file_name => 'exp02.dmp');
       DBMS_CLOUD.PUT_OBJECT(credential_name => 'DEF_CRED_NAME',
         object_uri => 'https://swiftobjectstorage.us-phoenix-1.oraclecloud.com/v1/idthydc0kinr/mybucket/exp03.dmp',
         directory_name => 'DATA_EXPORT_DIR',
         file_name => 'exp03.dmp');
       DBMS_CLOUD.PUT_OBJECT(credential_name => 'DEF_CRED_NAME',
         object_uri => 'https://swiftobjectstorage.us-phoenix-1.oraclecloud.com/v1/idthydc0kinr/mybucket/exp04.dmp',
         directory_name => 'DATA_EXPORT_DIR',
         file_name => 'exp04.dmp');
    END;
    /

    PUT_OBJECTの詳細は、PUT_OBJECTプロシージャを参照してください。

Autonomous Databaseからオブジェクト・ストアへのデータの直接エクスポート

Oracle Data Pumpを使用してAutonomous Databaseからクラウド・オブジェクト・ストアにデータを直接エクスポートする方法を示します。

  1. Autonomous Databaseに接続します。
  2. DBMS_CREDENTIAL.CREATE_CREDENTIALプロシージャを使用して、クラウド・オブジェクト・ストレージ資格証明を格納します。例:
    BEGIN
      DBMS_CREDENTIAL.CREATE_CREDENTIAL(
        credential_name => 'DEF_CRED_NAME',
               username => 'adb_user@oracle.com',
        password => 'password'
        );
    END;
    /
    usernameおよびpasswordに指定する値は、使用しているクラウド・オブジェクト・ストレージ・サービスによって異なります:
    • Oracle Cloud Infrastructure Object Storage: usernameはOracle Cloud Infrastructureのユーザー名で、passwordはOracle Cloud Infrastructureの認証トークンです。認証トークンの作業を参照してください。
    • Oracle Cloud Infrastructure Object Storage Classic: usernameはOracle Cloud Infrastructure Classicのユーザー名で、passwordはOracle Cloud Infrastructure Classicのパスワードです。

    この操作によって、資格証明が暗号化された形式でデータベースに格納されます。資格証明には任意の名前を使用できます。オブジェクト・ストアの資格証明を変更しないかぎり、このステップが必要なのは1回のみです。資格証明を格納した後は、すべてのデータ・ロードで同じ資格証明名を使用できます。

  3. ADMINユーザーとして、前述のステップで定義した資格証明をAutonomous Databaseのデフォルト資格証明として設定します。
    例:
    ALTER DATABASE PROPERTY SET DEFAULT_CREDENTIAL = 'DEF_CRED_NAME';
  4. dumpfileパラメータをクラウド・オブジェクト・ストレージ上の既存のバケットのURLに設定して(ファイル名またはexp%U.dmpなどの置換変数を含むファイル名で終了)、Data Pump Exportを実行します。
    • Oracle Data Pumpバージョン19.9以降:
      credentialパラメータを、ステップ2で作成した資格証明の名前に設定します。例:
      expdp admin/password@ADBD_high \
      SCHEMAS=SOE3 \
      filesize=5GB \
      credential=DEF_CRED_NAME \
      dumpfile=https://swiftobjectstorage.us-ashburn-1.oraclecloud.com/v1/adbdpreview1/mybucket/export%L.dmp \
      parallel=16 \
      encryption_pwd_prompt=yes \
      logfile=export.log \
      directory=data_pump_dir \
      EXCLUDE=statistics,index
      この例では、dumpfileは、Oracle Cloud InfrastructureのSwift URIであり、us-ashburn-1リージョンにあるmybucketバケット内のexport<number>.dmpに名前が一致するすべてのファイルを示します。(adbdpreview1は、バケットが存在するオブジェクト・ストレージ・ネームスペース)
    • 19.9より前のOracle Data Pumpバージョン:
      dumpfileパラメータの値をdefault_credentialキーワードとコロンで開始します。例:
      expdp admin/password@ADBD_high \
      SCHEMAS=SOE3 \
      filesize=5GB \
      dumpfile=DEF_CRED_NAME:https://swiftobjectstorage.us-ashburn-1.oraclecloud.com/v1/adbdpreview1/mybucket/export%L.dmp \ 
      parallel=16 \
      encryption_pwd_prompt=yes \
      logfile=export.log \
      directory=data_pump_dir \
      EXCLUDE=statistics,index 
      この例では、dumpfileパラメータのdefault_credentialキーワードは必須です。
    Oracle Data Pumpパラメータに関するノート:
    • デフォルトでは、Oracle Data Pump Exportはダンプ・ファイル・セットに書き込む前にメタデータのみを圧縮します。compressionパラメータをALLに設定して、ダンプ・ファイル・セットに書き込む前にメタデータとデータを圧縮できます。詳細は、Oracle Databaseユーティリティを参照してください。

    • dumpfileパラメータでは、レガシーの%Uおよび%uワイルドカードに加えて、%Lおよび%lワイルドカードがサポートされています。たとえば、dumpfile=export%L.dmpです。

      Oracle Databaseリリース12.2以降からのエクスポートには、%Lまたは%lワイルドカードを使用します。このワイルドカードは、ダンプファイルファイル名を3桁から10桁の可変幅増分整数に拡張し、100から2147483646で終わります。

    • 最適なエクスポート・パフォーマンスを得るには、エクスポート接続にhighデータベース・サービスを使用して、parallelパラメータをOCPU数またはAutonomous DatabaseのECPU数の0.25倍に設定します。Data Pump Exportを実行するために接続するデータベース・サービス名の詳細は、Autonomous Databaseの事前定義済データベース・サービス名を参照してください。

    • 様々なクラウド・オブジェクト・ストレージ・サービスのダンプ・ファイルのURLフォーマットについては、クラウド・オブジェクト・ストレージのURIフォーマットを参照してください。

    Autonomous Databaseで使用できないオブジェクトの詳細は、SQLコマンドの使用に関する制限事項を参照してください。

    Oracle Data Pump Exportパラメータの詳細は、Oracle DatabaseユーティリティのOracle Data Pump Exportを参照してください。

  5. 結果を検証します。
    Oracle Data Pumpでは、各ダンプ・ファイルの部分を小さなチャンクに分割してアップロードを高速化します。Oracle Cloud Infrastructure Object Storageコンソールには、エクスポートするダンプ・ファイル・パートごとに複数のファイルが表示されます。実際のダンプファイルのサイズはゼロ(0)、関連するファイル・チャンクは10mb以下と表示されます。例:
    exp01.dmp
    exp01.dmp_aaaaaa
    exp02.dmp
    exp02.dmp_aaaaaa
    ノート

    Oracle Cloud InfrastructureコンソールまたはOracle Cloud Infrastructure CLIを使用してゼロ・バイト・ダンプ・ファイルをダウンロードしても、完全なダンプ・ファイルは得られません。オブジェクト・ストアから完全なダンプ・ファイルをダウンロードするには、curlなどのSwiftをサポートするツールを使用して、ユーザー・ログインおよびSwift認証トークンを指定します。例:
    curl -O -v -X GET -u 'user1@example.com:auth_token' \
       https://swiftobjectstorage.us-ashburn-1.oraclecloud.com/v1/namespace-string/bucketname/export01.dmp

ダンプ・ファイルのダウンロード、Data Pump Importの実行、およびオブジェクト・ストアのクリーン・アップ

必要に応じて、クラウド・オブジェクト・ストアからダンプ・ファイルをダウンロードし、Oracle Data Pump Importを使用してダンプ・ファイル・セットをターゲット・データベースにインポートします。次に、必要なクリーン・アップを実行します。

  1. クラウド・オブジェクト・ストアからダンプ・ファイルをダウンロードします。
    ノート

    データを別のAutonomous Databaseにインポートする場合、このステップは不要です。
    Autonomous Databaseからオブジェクト・ストアへのデータの直接エクスポートに示すように、Oracle Data Pumpを使用してオブジェクト・ストアに直接エクスポートする場合、オブジェクト・ストア上のダンプ・ファイルにはサイズ0が表示されます。Oracle Data Pumpでは、各ダンプ・ファイルの部分を小さなチャンクに分割してアップロードを高速化します。Oracle Cloud Infrastructure Object Storageコンソールには、エクスポートするダンプ・ファイル・パートごとに複数のファイルが表示されます。実際のダンプファイルのサイズはゼロ(0)、関連するファイル・チャンクは10mb以下と表示されます。例:
    exp01.dmp
    exp01.dmp_aaaaaa
    exp02.dmp
    exp02.dmp_aaaaaa
    Oracle Cloud InfrastructureコンソールまたはOracle Cloud Infrastructure CLIを使用してゼロ・バイト・ダンプ・ファイルをダウンロードしても、完全なダンプ・ファイルは得られません。オブジェクト・ストアから完全なダンプ・ファイルをダウンロードするには、curlなどのSwiftをサポートするツールを使用して、ユーザー・ログインおよびSwift認証トークンを指定します。例:
    curl -O -v -X GET -u 'user1@example.com:auth_token' \
       https://swiftobjectstorage.us-ashburn-1.oraclecloud.com/v1/namespace-string/bucketname/exp01.dmp

    cURLコマンドでは、URLでワイルドカードや置換文字をサポートしていません。オブジェクト・ストアからダンプ・ファイル・セットをダウンロードするには、複数のcURLコマンドを使用する必要があります。または、置換文字をサポートするスクリプトを使用して、オブジェクト・ストアから単一のコマンドですべてのダンプ・ファイルをダウンロードできます。例については、ハウツー: cURLを使用したAutonomous Databaseでのオブジェクト・ストアへのエクスポートからのすべてのファイルのダウンロード・ジョブを参照してください。

  2. Data Pump Importを実行して、ダンプ・ファイル・セットをターゲット・データベースにインポートします。
    ノート

    データを別のAutonomous Databaseにインポートする場合は、Oracle Data Pumpを使用したデータのロードを参照してください。

    Autonomous Databaseからオブジェクト・ストアへのデータの直接エクスポートに示すように、Oracle Data Pumpを使用してオブジェクト・ストアに直接エクスポートされたファイルの場合は、formatパラメータのtypeと値'datapump'をサポートするDBMS_CLOUDプロシージャを使用してファイルをインポートする場合、プライマリ・ファイル名のみを指定する必要があります。'datapump'形式タイプをサポートするプロシージャでは、チャンクが自動的に検出およびダウンロードされます。

  3. インポート後のクリーン・アップ・タスクを実行します。ダンプ・ファイルをターゲット・データベースにインポートしたら、データを含むバケットを削除するか、クラウド・オブジェクト・ストア・バケットからダンプ・ファイルを削除し、Data Pump Importを実行するためにダンプ・ファイルをダウンロードした場所からダンプ・ファイルを削除します。

Oracle Data Pump Importパラメータの詳細は、『Oracle Databaseユーティリティ』を参照してください。