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

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

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

Oracle Data Pumpを使用してAutonomous AI Databaseから他のOracleデータベースへデータを移動するには、次のいずれかのオプションを使用します:

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

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

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

  1. エクスポート済のデータを含むダンプ・ファイルを格納するディレクトリを作成します。たとえば:

     CREATE DIRECTORY data_export_dir as 'data_export';
    
  2. dumpfileパラメータを設定し、filesizeパラメータを50G未満に設定し、directoryパラメータを設定して、Data Pump Exportを実行します。たとえば、次の例では、ATPC1という名前のAutonomous AI Database内のSALESという名前のスキーマを、64個のECPUでエクスポートする方法を示しています:

     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倍に設定する必要があります。したがって、前述の64 ECPUの例では、parallelは0.25 x 64、つまりexpdpで16に設定されます。

    • OCPUの場合、parallelはOCPU数と同じ値に設定する必要があります。16 OCPUを持つ前述の例では、parallelexpdpを使用して16に設定されます。

    • 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ワイルドカードを使用します。このワイルドカードは、ダンプファイルファイル名を100から2147483646までの3桁から10桁の可変幅増分整数に拡張します。

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

    エクスポートが完了したら、次のような問合せを実行して、生成されたダンプ・ファイルを確認できます:

     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...
    

ノート:

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

  1. Autonomous AI 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 AI 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 AI Databaseからオブジェクト・ストアへのデータの直接エクスポート

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

  1. Autonomous AI 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 AIデータベースのデフォルト資格証明として設定します。

    たとえば:

     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 19cユーティリティCOMPRESSIONまたはOracle Database 26aiユーティリティを参照してください。

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

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

      詳細は、Oracle Database 19cユーティリティまたはOracle Database 26aiユーティリティData Pump Exportコマンドライン・モードで使用可能なパラメータを参照してください。

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

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

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

  5. 結果を検証します。

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

     exp01.dmp
     exp01.dmp_aaaaaa
     exp02.dmp
     exp02.dmp_aaaaaa
    

    ノート:

    コンソールまたは 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 AIデータベースにインポートする場合、このステップは不要です

    Autonomous AI Databaseからオブジェクト・ストアへのDataの直接エクスポートに示すように、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コマンドを使用する必要があります。または、置換文字をサポートするスクリプトを使用して、オブジェクト・ストアから単一のコマンドですべてのダンプ・ファイルをダウンロードできます。

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

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

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

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

詳細は、Oracle Database 19cユーティリティまたはOracle Database 26aiユーティリティOracle Data Pumpインポート・コマンドライン・モードで使用可能なパラメータを参照してください。