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%u.dmp

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

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

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

ノート

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

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

expdp sh/sh@orcl \
exclude=cluster, db_link \
parallel=16 \
schemas=sh \
dumpfile=export%u.dmp

要件に応じて、compressionなどの他のData Pump Exportパラメータを使用できます。Oracle Data Pump Exportの詳細は、『Oracle Databaseユーティリティ』を参照してください。

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

ソース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. 「バケットの作成」ダイアログで、バケットに名前を付けて、「バケットの作成」をクリックします。

  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プロシージャを使用して、クラウド・オブジェクト・ストレージ資格証明を格納します。例:
    BEGIN
    DBMS_CLOUD.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のパスワードです。

  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://swiftobjectstorage.us-phoenix-1.oraclecloud.com/v1/idthydc0kinr/mybucket/export%u.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%u.dmp \
           parallel=16 \      
           transform=segment_attributes:n \      
           exclude=cluster, db_link

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

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

    ノート

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

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

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

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

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

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

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を参照してください。