Oracle Data Pumpを使用したデータのロード

Oracle Data Pumpは、Oracleデータベースと専用Exadataインフラストラクチャ上のAutonomous Databaseの間で、データおよびメタデータの一括移動を非常に高速に行います。

Data Pump Importを使用すると、Oracle Cloud Infrastructure Object StorageおよびOracle Cloud Infrastructure Object Storage ClassicにあるData Pumpファイルからデータをインポートできます。データをクラウド・オブジェクト・ストアに保存し、Oracle Data Pumpを使用してデータをAutonomous Databaseにロードできます。

ノート:

次のトピックを読まずに試してみるには、フリート管理者専用Oracle Autonomous Databaseワークショップラボ9: Data Pumpを使用した移行を参照してください。

既存のOracle Databaseからのデータのエクスポート

まず、Oracle Data Pump Exportを使用して既存のOracle Databaseスキーマをエクスポートします。次に、Oracle Data Pump Importを使用してAutonomous Databaseに移行します。

高速かつ簡単にAutonomous Databaseに移行できるように、次のData Pump Exportパラメータを使用することをお薦めします:

exclude=cluster, db_link
parallel=n
schemas=schema name
dumpfile=export%l.dmp

Oracle Data Pump Exportには、複数のエクスポート・モードが用意されています。Autonomous Databaseに移行する場合は、スキーマ・モードの使用をお薦めします。エクスポートするスキーマを表示するには、schemasパラメータを使用します。

移行を高速化するには、スキーマを複数のData Pumpファイルにエクスポートして、並列処理を使用します。使用するダンプ・ファイル名のフォーマットは、dumpfileパラメータを使用して指定できます。parallelパラメータをAutonomous Databaseの少なくともCPUの数に設定します。

除外パラメータおよびdata_optionsパラメータを使用すると、Autonomous Databaseで使用できないオブジェクト・タイプはエクスポートされず、表パーティションは、Autonomous Databaseに高速にインポートできるようにグループ化されます。

ノート:

expdpコマンドを実行する前に、最新の統計を収集することをお薦めします。dbms_statsパッケージには、最新の統計を収集するための複数のプロシージャが用意されています。統計はエクスポート・ダンプ・ファイルに自動的に追加され、インポート中のオブジェクトのサイズの判別および並列度の最適化に役立ちます。詳細は、Oracle Database 19c PL/SQLパッケージおよびタイプ・リファレンスおよびOracle Database 23ai PL/SQLパッケージおよびタイプ・リファレンスDBMS_STATSの操作上のノートを参照してください。

次の例では、16個のCPUを持つAutonomous Databaseに移行するために、ソースOracle DatabaseからSHスキーマをエクスポートします:

expdp sh/sh@orcl \
exclude=cluster, db_link \
parallel=16 \
schemas=sh \
dumpfile=export%l.dmp \
encryption_pwd_prompt=yes
Data Pumpパラメータに関するノート:
  • 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で終わります。

    リリース12.2より前のOracle Databaseからのエクスポートには、レガシーの%Uまたは%uワイルドカードを使用します。このオプションを使用し、99を超えるダンプ・ファイルが必要な場合は、複数のダンプ・ファイル名をそれぞれ%Uまたは%uパラメータで指定する必要があります。

要件に応じて、compressionなどの他のData Pump Exportパラメータを使用できます。詳細は、Oracle Database 19cユーティリティまたはOracle Database 23aiユーティリティOracle Data Pumpエクスポートを参照してください。

クラウド・オブジェクト・ストレージへのエクスポート・ファイルのアップロード

ソースOracle Databaseからエクスポートしたデータをインポートする前に、エクスポート・ファイルをクラウド・オブジェクト・ストレージにアップロードする必要があります。

エクスポート・ファイルは、Oracle Cloud Infrastructure Object Storageの既存のストレージ・バケットまたはOracle Cloud Infrastructure Object Storage Classicの既存のストレージ・コンテナにアップロードできます。または、次の手順を使用して、新しいストレージ・バケットを作成し、そこにエクスポート・ファイルをアップロードします。

  1. cloud.oracle.comでOracle Cloudアカウントにサインインします。

  2. Oracle Cloud Infrastructureの左側のナビゲーション・リストから「オブジェクト・ストレージ」を選択し、サブリストから「オブジェクト・ストレージ」を選択します。

  3. ストレージ・バケットを作成するコンパートメントを選択します。

  4. 「バケットの作成」をクリックします。

  5. 「Create Bucket」ダイアログで、バケット名を指定し、「Create Bucket」をクリックします。

  6. バケットが作成されたら、バケットのリストでその名前をクリックして、その「バケット詳細」ページを表示します。

  7. 「オブジェクト」ボックスで、「オブジェクトのアップロード」をクリックします。

  8. 「オブジェクトのアップロード」ダイアログで、「コンピュータからのファイルの選択」ボックスの「ファイルの選択」リンクをクリックします。

  9. ファイル・ブラウザで、エクスポート・ファイルに移動して選択します。次に、「開く」をクリックします。

  10. 「オブジェクトのアップロード」ダイアログで、「オブジェクトのアップロード」をクリックして、選択したファイルのアップロードを開始します。

  11. アップロードが完了したら、「オブジェクトのアップロード」ダイアログを閉じます。

Oracle Data Pumpを使用したデータのインポート

Data PumpファイルのデータをAutonomous Databaseにインポートする場合は、最新のOracle Data Pumpバージョンを使用することをお薦めします。これには操作性向上のための拡張機能と修正が含まれています。

「Oracle Instant Clientのダウンロード」から、使用しているプラットフォーム用の最新バージョンのOracle Instant Client Basicパッケージおよびツール・パッケージ(Oracle Data Pumpが含まれる)をダウンロードします。Oracle Instant Clientをダウンロードした後に必要なインストール・ステップについては、プラットフォーム・インストールのダウンロード・ページでインストールの手順を参照してください。

Oracle Data Pumpバージョン18.3以降では、credential引数により、ソース・ファイルに使用しているクラウド・オブジェクト・ストレージ・サービスに対してData Pumpが認証されます。dumpfile引数は、Data PumpファイルのURLをカンマで区切ったリストです。

Data Pump Importバージョン12.2.0.1以前には、credentialパラメータがありません。古いバージョンのData Pump Importを使用している場合は、Autonomous Databaseにデフォルトの資格証明プロパティを定義し、dumpfileパラメータでdefault_credentialキーワードを使用する必要があります。

Oracle Data Pumpでは、ソース・ファイルがOracle Cloud Infrastructure Object Storageに存在する場合は、Oracle Cloud InfrastructureネイティブURIまたはSwift URIを使用できます。これらのURIフォーマットの詳細は、クラウド・オブジェクト・ストレージのURIフォーマットを参照してください。

  1. DBMS_CLOUD.CREATE_CREDENTIALプロシージャを使用して、クラウド・オブジェクト・ストレージ資格証明を格納します。

    Data Pump Importは、Oracle Cloud Infrastructure認証トークン・ベースの資格証明およびOracle Cloud Infrastructure署名キー・ベースの資格証明をサポートしています。

    例1: Oracle Cloud Infrastructure認証トークンの資格証明を作成するには:
    BEGIN
    DBMS_CLOUD.CREATE_CREDENTIAL(
      credential_name => 'DEF_CRED_NAME',
      username => 'adb_user@oracle.com',
      password => 'password'
      );
    END;
    /
    例2: Oracle Cloud Infrastructure署名キー・ベースの資格証明を作成するには:
    BEGIN
      DBMS_CLOUD.CREATE_CREDENTIAL (
        credential_name => 'DEF_CRED_NAME',
        user_ocid       => ‘ocid1.user.oc1..unique_ID’,
        tenancy_ocid    => ‘ocid1.tenancy.oc1..unique_ID’,
        private_key     => ‘MIIEogIBAAKCAQEAtUnxbmre.....wtnNpESQQQ0QLGPD8NM//JEBg=’,
        fingerprint     => ‘fingerprint value’
      );
    END;
    /

    Oracle Cloud Infrastructure Cloud Object Storageの資格証明タイプの詳細は、CREATE_CREDENTIALプロシージャを参照してください。

  2. Oracle Data Pumpのバージョン12.2.0.1以前を使用している場合は、資格証明をADMINユーザーとしてAutonomous Databaseのデフォルト資格証明として設定する必要があります。例:
    alter database property set default_credential = 'ADMIN.DEF_CRED_NAME'
  3. dumpfileパラメータをクラウド・オブジェクト・ストレージのファイルURLのリストに設定して、Data Pump Importを実行します。
    • Oracle Data Pumpバージョン18.3以降: credentialパラメータを、ステップ1で作成した資格証明の名前に設定します。たとえば次のようにします。

      impdp admin/password@ATPC1_high \
        credential=def_cred_name \
        dumpfile= https://namespace-string.objectstorage.us-ashburn-1.oci.customer-oci.com/n/namespace-string/b/bucketname/o/export%l.dmp \ 
        parallel=16 \
        transform=segment_attributes:n \
        exclude=cluster, db_link

      この例では、dumpfileは、us-phoenix-1リージョンにあるmybucketバケット内のexport<number>.dmpと名前が一致するすべてのファイルを指定する、Oracle Cloud InfrastructureのSwift URIです。(idthydc0kinrは、バケットが存在するオブジェクト・ストレージ・ネームスペースです。)

    • Oracle Data Pumpバージョン12.2.0.1以前: dumpfileパラメータの値はdefault_credentialキーワードとコロンで開始します。たとえば次のようにします。

      impdp admin/password@ATPC1_high \
        dumpfile=default_credential:https://swiftobjectstorage.us-phoenix-1.oraclecloud.com/v1/idthydc0kinr/mybucket/export%l.dmp \
        parallel=16 \      
        transform=segment_attributes:n \      
        exclude=cluster, db_link
    Data Pump Importに関するノート
    • expdpによるエクスポートでencryption_pwd_prompt=yesパラメータを使用した場合は、encryption_pwd_prompt=yesを使用して、エクスポート時に指定したimpdpプロンプトで同じパスワードを入力します。

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

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

      リリース12.2より前のOracle Databaseからのエクスポートには、レガシーの%Uまたは%uワイルドカードを使用します。このオプションを使用し、99を超えるダンプ・ファイルが必要な場合は、複数のダンプ・ファイル名をそれぞれ%Uまたは%uパラメータで指定する必要があります。

    • インポートで最適なパフォーマンスを実現するには、インポート接続にhighデータベース・サービスを使用し、parallelパラメータをデータベース内のCPUの数に設定します。

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

    • 全体インポートを実行するか、他のユーザーが所有するオブジェクトをインポートするには、DATAPUMP_CLOUD_IMPロールが必要です。

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

    インポート・パラメータの詳細は、『Oracle Database 19cユーティリティ』または『Oracle Database 23aiユーティリティ』『Oracle Data Pumpインポート』を参照してください。

Data Pump Importのログ・ファイルへのアクセス

データ・ポンプ・インポート操作のログ・ファイルは、データ・ポンプのimpdp directoryパラメータで指定したディレクトリに格納されます。

ログ・ファイルにアクセスするには、プロシージャDBMS_CLOUD.PUT_OBJECTを使用してログ・ファイルをCloud Object Storageに移動する必要があります。たとえば、次のPL/SQLブロックは、import.logファイルをCloud Object Storageに移動します:

BEGIN
  DBMS_CLOUD.PUT_OBJECT(
    credential_name => 'DEF_CRED_NAME',
    object_uri => 'https://objectstorage.us-ashburn-1.oraclecloud.com/n/namespace-string/b/bucketname/o/import.log',
    directory_name  => 'DATA_PUMP_DIR',
    file_name => 'import.log');
END;
/

この例では、namespace-stringはOracle Cloud Infrastructureオブジェクト・ストレージ・ネームスペースで、bucketnameはバケット名です。詳細は、オブジェクト・ストレージ・ネームスペースの理解を参照してください。

詳細は、DBMS_CLOUD for Objects and Filesを参照してください。