データ・ポンプのフル・トランスポータブル

この方法は、ソース・データベースのリリース・バージョンが11.2.0.3以上で、オンプレミス・データベースとOracle Cloud Infrastructure Databaseサービスのデータベースのキャラクタ・セットに互換性がある場合にのみ使用できます。

Data Pump完全トランスポータブル方法を使用すると、データベース全体をオンプレミス・ホストからデータベース・サービス・データベース・デプロイメントのデータベースにコピーできます。

Data Pump完全トランスポータブル方法を使用して、Oracle Database 11gオンプレミス・データベースを、データベース・サービスのデータベース・デプロイメント上のOracle Database 12cデータベースに移行するには、次のタスクを実行します:

  1. オンプレミス・データベース・ホストで、ユーザー定義表領域をREAD ONLYモードにすることで、Data Pump完全トランスポータブル・エクスポート用にデータベースを準備します。

  2. オンプレミス・データベース・ホストで、完全トランスポータブル・エクスポートを実行するためにData Pump Exportを起動します。

  3. セキュア・コピー・ユーティリティを使用して、Data Pump Exportのダンプ・ファイルとユーザー定義表領域のすべてのデータファイルを、データベース・サービスのコンピュート・ノードに転送します。

  4. オンプレミスの表領域をREAD WRITEに戻します。

  5. データベース・サービスのコンピュート・ノードで、表領域をインポートするためにデータベースを準備します。

  6. データベース・サービスのコンピュート・ノードで、Data Pump Importを起動し、データベースに接続します。

  7. データが正常にインポートされたことを確認したら、ダンプ・ファイルを削除できます。

Data Pump完全トランスポータブル: 例

この例では、Oracle Database 11g データベースをデータベース・サービスの12cデータベースに移行するために必要なタスクをステップごとに説明します。

この例では、ソース・データベースはLinuxホスト上にあります。

  1. ソース・データベース・ホストで、Data Pump完全トランスポータブル・エクスポート用にデータベースを準備します。

    1. ソース・データベース・ホストで、ソースのエクスポートに使用するディレクトリをオペレーティング・システムに作成します。

      $ mkdir /u01/app/oracle/admin/orcl/dpdump/for_cloud
    2. ソース・データベース・ホストで、SQL*Plusを起動し、ソース・データベースにSYSTEMユーザーとしてログインします。

      $ sqlplus system
      Enter password: <enter the password for the SYSTEM user>
    3. ソース・データベース内に、オペレーティング・システム・ディレクトリを参照するディレクトリ・オブジェクトを作成します。

      SQL> CREATE DIRECTORY dp_for_cloud AS '/u01/app/oracle/admin/orcl/dpdump/for_cloud';
    4. DBA_DATA_FILESを問い合せて、表領域の名前とユーザー定義表領域に属するデータファイルの名前を確認します。これらのファイルもエクスポート出力にリストされます。

      SQL> SELECT tablespace_name, file_name FROM dba_data_files; 
      TABLESPACE_NAME  FILE_NAME
      ---------------  --------------------------------------------------
      USERS            /u01/app/oracle/oradata/orcl/users01.dbf
      UNDOTBS1         /u01/app/oracle/oradata/orcl/undotbs01.dbf
      SYSAUX           /u01/app/oracle/oradata/orcl/sysaux01.dbf
      SYSTEM           /u01/app/oracle/oradata/orcl/system01.dbf
      EXAMPLE          /u01/app/oracle/oradata/orcl/example01.dbf
      FSDATA           /u01/app/oracle/oradata/orcl/fsdata01.dbf
      FSINDEX          /u01/app/oracle/oradata/orcl/fsindex01.dbf
      SQL> 
    5. ソース・データベース・ホストで、転送するすべての表領域(トランスポータブル・セット)をREAD ONLYモードに設定します。

      
      SQL> ALTER TABLESPACE example READ ONLY;
      Tablespace altered.
      SQL> ALTER TABLESPACE fsindex READ ONLY;
      Tablespace altered.
      SQL> ALTER TABLESPACE fsdata READ ONLY;
      Tablespace altered.
      SQL> ALTER TABLESPACE users READ ONLY;
      Tablespace altered.
      SQL>
    6. SQL*Plusを終了します。

  2. ソース・データベース・ホストで、完全トランスポータブル・エクスポートを実行するためにData Pump Exportを起動します。FULL=yおよびTRANSPORTABLE=alwaysを指定します。これはOracle Database 11gデータベースで、完全トランスポータブルはOracle Database 12cの機能であるため、VERSION=12と指定します。プロンプトが表示されたら、SYSTEMユーザーのパスワードを指定します。

    $ expdp system FULL=y TRANSPORTABLE=always VERSION=12 DUMPFILE=expdat.dmp DIRECTORY=dp_for_cloud
  3. セキュア・コピー・ユーティリティを使用して、Data Pump Exportのダンプ・ファイルとユーザー定義表領域のすべてのデータファイルを、データベース・サービスのコンピュート・ノードに転送します。

    この例では、ダンプ・ファイルは/u01ディレクトリにコピーされます。転送されるファイルのサイズに基づいて適切なロケーションを選択します。

    1. データベース・サービスのコンピュート・ノードで、ダンプ・ファイルのディレクトリを作成します。

      $ mkdir /u01/app/oracle/admin/ORCL/dpdump/from_source
    2. scpユーティリティを使用してファイルをコピーする前に、データベース・サービスのコンピュート・ノードへのアクセスを提供するSSH秘密キーがソース・ホストで使用可能であることを確認してください。

    3. ソース・データベース・ホストで、scpユーティリティを使用して、ダンプ・ファイルとトランスポータブル・セットのすべてのデータファイルをデータベース・サービスのコンピュート・ノードに転送します。

      $ scp -i private_key_file \
      /u01/app/oracle/admin/orcl/dpdump/for_cloud/expdat.dmp \
      oracle@compute_node_IP_address:/u01/app/oracle/admin/ORCL/dpdump/from_source
      
      $ scp -i private_key_file \
      /u01/app/oracle/oradata/orcl/example01.dbf \
      oracle@compute_node_IP_address:/u02/app/oracle/oradata/ORCL/PDB2
      
      $ scp -i private_key_file \
      /u01/app/oracle/oradata/orcl/fsdata01.dbf \
      oracle@compute_node_IP_address:/u02/app/oracle/oradata/ORCL/PDB2
      
      $ scp -i private_key_file \
      /u01/app/oracle/oradata/orcl/fsindex01.dbf \
      oracle@compute_node_IP_address:/u02/app/oracle/oradata/ORCL/PDB2
      
      $ scp -i private_key_file \
      /u01/app/oracle/oradata/orcl/users01.dbf \
      oracle@compute_node_IP_address:/u02/app/oracle/oradata/ORCL/PDB2
  4. ソース表領域をREAD WRITEに戻します。

    1. SQL*Plusを起動し、SYSTEMユーザーとしてログインします。

    2. ユーザー定義表領域をREAD WRITEモードに戻します。

      SQL> ALTER TABLESPACE example READ WRITE;
      Tablespace altered.
      SQL> ALTER TABLESPACE fsdata READ WRITE;
      Tablespace altered.
      SQL> ALTER TABLESPACE fsindex READ WRITE;
      Tablespace altered.
      SQL> ALTER TABLESPACE users READ WRITE;
      Tablespace altered.
      
    3. SQL*Plusを終了します。

  5. データベース・サービスのコンピュート・ノードで、表領域をインポートするためにPDBを準備します。

    1. データベース・サービスのコンピュート・ノードで、SQL*Plusを起動し、SYSTEMユーザーとしてPDBにログインします。

    2. PDBにディレクトリ・オブジェクトを作成します。

      SQL> CREATE DIRECTORY dp_from_source AS '/u01/app/oracle/admin/ORCL/dpdump/from_source';
  6. データベース・サービスのコンピュート・ノードで、Data Pump Importを起動し、PDBに接続します。

    TRANSPORT_DATAFILESオプションを使用して、データベースにデータをインポートします。

    $ impdp system@PDB2 FULL=y DIRECTORY=dp_from_source \
    TRANSPORT_DATAFILES='/u02/app/oracle/oradata/ORCL/PDB2/example01.dbf',\'/u02/app/oracle/oradata/ORCL/PDB2/fsdata01.dbf',\'/u02/app/oracle/oradata/ORCL/PDB2/fsindex01.dbf,'\'/u02/app/oracle/oradata/ORCL/PDB2/users01.dbf'
  7. データが正常にインポートされたことを確認したら、expdat.dmpファイルを削除できます。