プライマリ・コンテンツに移動
Oracle® Databaseバックアップおよびリカバリ・ユーザーズ・ガイド
12c リリース1 (12.1)
B71297-08
目次へ移動
目次
索引へ移動
索引

前
次

28 プラットフォーム間でのデータ転送

RMANを使用すると、表領域をエンディアン形式の異なるプラットフォーム間でトランスポートできます。また、2つのプラットフォームのエンディアン形式が同じであるかぎり、RMANを使用してデータベース全体を別のプラットフォームに転送することもできます。

この章の内容は次のとおりです。

クロス・プラットフォーム・データ・トランスポートについて

クロス・プラットフォーム・トランスポータブル表領域は、通常のトランスポータブル表領域に類似しています。トランスポート対象のすべてのオブジェクトがトランスポート対象となっている表領域のセット内に完全に含まれている必要があるといった、トランスポータブル表領域に適用されるすべての制限が、ここにも適用されます。クロス・プラットフォーム・トランスポータブル表領域は、同じ、または異なるエンディアン形式を持つプラットフォーム間で実行できます。

クロス・プラットフォーム・トランスポータブル・データベースとトランスポータブル表領域は同じものではありません。この場合、1つのプラットフォームから別のプラットフォームへSYSTEM表領域を含むデータベース全体がコピーされます。包含のチェックは関連付けれておらず、SYSTEM表領域がコピーされるため、エクスポート/インポート手順は不要です。クロス・プラットフォーム・トランスポータブル・データベースは、同じエンディアン形式を持つプラットフォーム間でのみ実行できます。

クロス・プラットフォーム・データ・トランスポートの目的

あるプラットフォームで実行されているデータベースの表領域を別のプラットフォームで実行されているデータベースにトランスポートできます。クロス・プラットフォーム・トランスポータブル表領域の通常の使用方法を次に示します。

  • 表領域を変換することでプラットフォームに関係なく既存のデータベースに表領域を統合できるカスタマへ、構造化データをトランスポータブル表領域として公開する。

  • 大規模なデータ・ウェアハウス・サーバーから小規模なコンピュータ(Linuxベースのワークステーションやサーバーなど)上のデータ・マートへデータを移動する。

  • すべてのホストのエンディアン形式が同一である異機種間クラスタ間で、読取り専用表領域を共有する。

  • 最短のアプリケーション停止時間で、プラットフォーム間で表領域を移行する。

トランスポータブル表領域、その使用方法、およびトランスポータブル表領域を作成および使用する場合の様々な方法の詳細は、『Oracle Database管理者ガイド』を参照してください。

また、RMANを使用して、プラットフォーム間でデータベース全体をトランスポートすることもできます。たとえば、ビジネス要件によって、別のプラットフォームを使用する、より低コストなサーバー上でデータベースを実行する必要があるとします。この場合、データベースを再作成し、インポート・ユーティリティまたはトランスポータブル表領域を使用してデータを再移入するのではなく、RMANを使用してデータベース全体をトランスポートできます。

宛先ホストまたはソース・ホスト上のデータベースを変換できます。宛先ホストで変換を行う理由は次のとおりです。

  • 変換プロセスによるソース・ホストのパフォーマンスのオーバーヘッドを回避する場合。

  • 1つのソース・システムから複数の異なるプラットフォーム上の複数の受信者にデータベースを分散する場合。

  • 新しいプラットフォームへの移行パスを評価する場合

プラットフォーム間でのデータ・トランスポートの方法

RMANでは、データファイル、表領域またはデータベース全体をプラットフォーム間でトランスポートできます。異なるプラットフォームにデータベース全体をトランスポートする場合、宛先プラットフォームはソース・プラットフォームと同じエンディアン形式を持つ必要があります。

次の方法のいずれかを使用して、プラットフォーム間でデータをトランスポートします。

クロス・プラットフォーム・データ・トランスポートをサポートするプラットフォーム

Oracle Databaseには、クロス・プラットフォーム・データ・トランスポートをサポートする各プラットフォームの内部的な名前のリストが保持されています。これらの名前は、V$TRANSPORTABLE_PLATFORMビューに格納されています。このビューを使用して、ソース・プラットフォームまたは宛先プラットフォームの内部的な名前を特定します。プラットフォーム間のデータのトランスポート時に、ソースまたは宛先プラットフォームの正確な名前を指定する必要がある場合があります。CONVERTまたはBACKUPコマンドのパラメータとして指定されたプラットフォーム名は、V$TRANSPORTABLE_PLATFORMビューに表示されるとおりに正確に入力する必要があります。

次の問合せを使用して、接続したデータベースのプラットフォーム名を取得します。

SELECT PLATFORM_NAME
    FROM V$TRANSPORTABLE_PLATFORM
    WHERE PLATFORM_ID =
       ( SELECT PLATFORM_ID FROM V$DATABASE );

次の問合せを使用して、Linuxプラットフォームの名前を取得します。

SELECT PLATFORM_ID, PLATFORM_NAME, ENDIAN_FORMAT
FROM V$TRANSPORTABLE_PLATFORM
WHERE UPPER(PLATFORM_NAME) LIKE '%LINUX%';

イメージ・コピーを使用したクロス・プラットフォーム・データ・トランスポートの概要

RMANでは、イメージ・コピーを使用して表領域、データファイルまたはデータベース全体をトランスポートできます。イメージ・コピーを使用してクロス・プラットフォーム・トランスポートを実行するには、RMAN CONVERTコマンドを使用します。表領域のトランスポートは、表領域のデータを格納するデータファイルを個別にトランスポートすることによって実行される場合もあります。ただし、複数のデータファイルから構成される表領域の一部である単一のデータファイルをトランスポートすることはできません。

ソース・プラットフォーム宛先プラットフォームが異なり、そのエンディアン形式も異なる場合は、トランスポータブル表領域の操作でRMANのCONVERTコマンドを使用する必要があります。同じエンディアン形式のプラットフォーム間でデータベースの一部を変換する場合、オペレーティング・システムの方法を使用してソースから宛先にファイルをコピーできます。同じエンディアン形式のデータベース全体を変換する場合、UNDO情報のあるすべてのデータファイルを変換する必要があります。これらのファイルをソースから宛先プラットフォームに直接コピーすることはできません。

イメージ・コピーを使用した表領域およびデータファイルの変換の概要

ソース・ホストではRMANのCONVERT TABLESPACEコマンドを使用して表領域の変換を実行できますが、宛先ホストでは実行できません。CONVERT TABLESPACEコマンドでは、データファイルのインプレース変換は実行されません。かわりに、このコマンドでは、宛先プラットフォームで使用するために適切な形式の出力ファイルが生成されます。このコマンドによってソース・データベース内のデータファイルの内容が変更されることはありません。

CONVERT DATAFILEコマンドを使用して、ファイルを変換できます。通常、CONVERT DATAFILEコマンドは宛先ホストで使用し、CONVERT TABLESPACEコマンドはソース・ホストで使用します。CONVERT DATAFILEコマンドをソース・ファイルで使用する場合は、データファイルがオフラインになっているか、それらのデータファイルを含む表領域が読取り専用になっていることを確認します。データ・ポンプ・エクスポート・ユーティリティでは、エクスポート・ダンプ・ファイルが生成され、このファイルは、宛先ホストに手動でコピーされたデータファイルとともに、宛先データベースにインポートできます。データ・ポンプ・エクスポート・ダンプ・ファイルが宛先データベースにインポートされるまで、データファイルはデータベース内の表領域名に関連付けられません。この場合、RMANは、表領域名を一連のデータファイルに変換できません。このため、CONVERT DATAFILEを使用して、ファイル名でデータファイルを指定する必要があります。

注意:

CONVERT TABLESPACEまたはCONVERT DATAFILEの使用は、クロス・プラットフォーム・トランスポータブル表領域を使用する場合の1つの手順にすぎません。この章の手順を実行する前に、『Oracle Database管理者ガイド』のトランスポータブル表領域に関する項を参照してください。

関連項目:

次の各項では、イメージ・コピーを使用して、表領域およびデータファイルのクロス・プラットフォーム・トランスポートを実行する方法について説明します。

イメージ・コピーを使用したデータベース変換の概要

データベース全体を異なるプラットフォームに変換するには、両方のプラットフォームで同じエンディアン形式が使用されている必要があります。RMANのCONVERT DATABASEコマンドを使用すると、ソース・プラットフォームから宛先プラットフォームへのデータベース全体の移動を自動化できます。トランスポートされたデータベースには、ソース・データベースと同じデータおよび(いくつかの例外を除いて)ソース・データベースと同じ設定が含まれています。

宛先プラットフォームに自動的にトランスポートされるファイルを次に示します。

  • 永続表領域に属するデータファイル

    プラットフォーム間での表領域のトランスポートとは異なり、データベース全体をトランスポートする場合は、宛先プラットフォームとの互換性が維持されるように、特定の形式のブロック(UNDOセグメント内のブロックなど)を再フォーマットする必要があります。ソース・プラットフォームと宛先プラットフォームのエンディアン形式が同じである場合でも、特定のファイル・タイプは変換する必要があります。変換が必要なファイルのタイプの詳細は、「クロス・プラットフォーム・データベース変換の前のデータベースの確認」を参照してください。

  • 初期化パラメータ・ファイルまたはサーバー・パラメータ・ファイル

    データベースでテキストベースの初期化パラメータ・ファイルが使用されている場合、RMANはそのファイルをトランスポートします。データベースでサーバー・パラメータ・ファイルが使用されている場合、RMANは、そのサーバー・パラメータ・ファイルに基づいて初期化パラメータ・ファイルを生成し、トランスポートします。次に、初期化パラメータ・ファイルの設定に基づいて、宛先で新しいサーバー・パラメータ・ファイルを作成します。

    通常、初期化パラメータ・ファイルの一部のパラメータを新しいデータベース用に手動で更新する必要があります。たとえば、DB_NAME、および宛先ホスト上のファイルの場所を示すCONTROL_FILESなどのパラメータを変更する場合があります。

ソース・プラットフォームまたは宛先プラットフォームのいずれかのデータファイルの形式を変換できます。CONVERT DATABASE ON DESTINATION PLATFORMコマンドでは、データファイルの形式は変換されません。かわりに、変換を実行するために手動で実行できるスクリプトが生成されます。CONVERT SCRIPTパラメータを指定すると、変換スクリプトが作成されます。このスクリプトを宛先ホストで手動で実行すると、データファイルのコピーをバッチ・モードで変換できます。TRANSPORT SCRIPTパラメータを指定すると、トランスポート・スクリプトが生成されます。このスクリプトには、宛先プラットフォーム上に新しいデータベースを作成するSQL文が含まれています。

関連項目:

次の情報については、My Oracle SupportのNote 1079563.1、「RMAN DUPLICATE/RESTORE/RECOVER Mixed Platform Support」を参照してください。

  • CONVERT DATABASEコマンドが不要なプラットフォームの組合せのリスト

  • ソース・データベースおよび宛先データベースの前提条件

関連項目:

データ移行タスクの一部としてのクロスプラットフォーム・トランスポータブル表領域およびデータベースのプロシージャの使用方法のベスト・プラクティスについては、http://www.oracle.com/goto/maaを参照してください。

イメージ・コピーによるクロス・プラットフォーム表領域変換の実行

CONVERTコマンドの前提条件のリストについては、『Oracle Databaseバックアップおよびリカバリ・リファレンス』を参照してください。この項の手順を実行する前に、この前提条件をすべて満たしている必要があります。

わかりやすくするため、Sun Solarisホスト上で実行されているソース・データベースprod_sourceから、表領域financeおよびhrをトランスポートする必要があると想定します。Linux PC上で実行されている宛先データベースprod_destに、これらの表領域をトランスポートすることを計画します。ソース・ホスト上の一時ディレクトリ/tmp/transport_linux/に、変換済データファイルを格納することを計画しています。

イメージ・コピーによるクロス・プラットフォーム表領域変換を実行する手順

  1. SQL*Plusを起動し、管理者権限でソース・データベースprod_sourceに接続します。

  2. V$TRANSPORTABLE_PLATFORMビューで宛先プラットフォームの名前を問い合せます。

    PC上のLinuxのPLATFORM_NAMEは、Linux IA (64-bit)です。

    関連項目:

    プラットフォーム名の確認については、「クロス・プラットフォーム・データ・トランスポートをサポートするプラットフォーム」を参照してください。

  3. DBMS_TTS.TRANSPORT_SET_CHECKプロシージャを実行して、トランスポートされる表領域が自己完結型であるかどうかを確認します。TRANSPORT_SET_VIOLATIONSビューに指定した表領域に対応する行が含まれている場合は、変換を始める前に依存性を解決する必要があります。

    関連項目:

    DBMS_TTS.TRANSPORT_SET_CHECKプロシージャ実行の詳細は、例21-1を参照してください。

  4. トランスポートする表領域を読取り専用モードに設定します。たとえば、次のように入力します。

    ALTER TABLESPACE finance READ ONLY;
    ALTER TABLESPACE hr READ ONLY;
    
  5. 出力ファイルの名前を指定する方法を選択します。

  6. RMANを起動し、TARGETとして(宛先データベースではなく)ソース・データベースに接続します。たとえば、次のように入力します。

    % rman
    RMAN> CONNECT TARGET "sbu@prod_source AS SYSBACKUP";
    
  7. CONVERT TABLESPACEコマンドを実行して、データファイルを宛先ホストのエンディアン形式に変換します。

    次の例でFORMAT引数は、変換されたデータファイルの名前および場所を制御しています。

    RMAN> CONVERT TABLESPACE finance,hr
    2>   TO PLATFORM 'Linux IA (64-bit)'
    3>   FORMAT '/tmp/transport_linux/%U';

    結果として、/tmp/transport_linux/ディレクトリに、Linux IA(64ビット)プラットフォームに適切なエンディアン形式のデータを含む一連の変換済データファイルが格納されます。

    関連項目:

    CONVERTコマンドの完全なセマンティクスについては、『Oracle Databaseバックアップおよびリカバリ・リファレンス』を参照してください。

  8. 表領域をトランスポートする場合の一般的な手順の残りの手順を実行します。

    1. Oracle Data Pump Exportユーティリティを使用して、ソース・ホスト上にエクスポート・ダンプ・ファイルを作成します。

    2. 変換済データファイルおよびエクスポート・ダンプ・ファイルをソース・ホストから宛先ホストの目的のディレクトリに移動します。

    3. データ・ポンプ・インポート・ユーティリティを使用して、表領域を新しいデータベースに組み込みます。

    4. 必要に応じて、トランスポートされた表領域を読取り/書込みモードに設定します。

    関連項目:

    トランスポータブル表領域の使用方法は、『Oracle Database管理者ガイド』を参照してください。

イメージ・コピーによるクロス・プラットフォーム・データファイル変換の実行

CONVERTコマンドの前提条件のリストについては、『Oracle Databaseバックアップおよびリカバリ・リファレンス』を参照してください。この項の手順を実行する前に、この前提条件を満たしている必要があります。

この項の内容は、次のとおりです。

RMANクロス・プラットフォーム・データファイル変換時の出力ファイル名の変更について

データファイルの変換では、出力ファイルの名前を指定する方法を選択する必要があります。CONVERTコマンドにFORMAT引数またはDB_FILE_NAME_CONVERT引数を指定して、出力ファイルの名前を指定する方法を制御する必要があります。次に、優先順位の高い順に規則を示します。

  1. DB_FILE_NAME_CONVERT句のパターンに一致するすべてのファイルは、そのパターンに基づいて名前が指定されます。

  2. FORMAT句を指定すると、DB_FILE_NAME_CONVERT句のパターンに基づいた名前が指定されていないすべてのファイルに対して、FORMATパターンに基づいた名前が指定されます。

注意:

ソース・ファイルおよび宛先ファイルの両方がOracle Managed Filesである場合、DB_FILE_NAME_CONVERTを使用して、CONVERTコマンドの出力ファイル名を生成することはできません。

ソース・プラットフォームおよび宛先プラットフォームが異なる場合は、FROM PLATFORMパラメータを指定する必要があります。V$TRANSPORTABLE_PLATFORMを問い合せて、プラットフォームの名前を確認します。エラーを回避するには、FROM PLATFORMの値が、変換するデータファイルの形式と一致している必要があります。FROM PLATFORMを指定しない場合、このパラメータはデフォルトで宛先プラットフォームの値になります。

関連項目:

プラットフォーム名の確認については、「クロス・プラットフォーム・データ・トランスポートをサポートするプラットフォーム」を参照してください。

RMAN CONVERT DATAFILEを使用した宛先ホストでの表領域トランスポートの実行

この項では、CONVERT DATAFILEコマンドの使用方法について説明します。この項では、表領域finance (データファイルfin/fin01.dbfおよびfin/fin02.dbf)およびhr (データファイルhr/hr01.dbfおよびhr/hr02.dbf)を、prod_sourceというソース・データベースからトランスポートすると想定します。このデータベースは、Sun Solarisホスト上で実行されています。Linux PC上で実行されているprod_destという宛先データベースに、これらの表領域をトランスポートすることを計画します。宛先ホスト上で変換を実行することを計画しています。

データファイルが宛先データベースに組み込まれるとき、これらのデータファイルが/orahome/dbsに格納され、現行のディレクトリ構造が保持されるように計画します。つまり、hr表領域のデータファイルは/orahome/dbs/hrサブディレクトリに、finance表領域のデータファイルは/orahome/dbs/finディレクトリに格納されます。

イメージ・コピーによるクロス・プラットフォーム・データファイル変換を実行する手順

  1. SQL*Plusを起動し、管理者権限でソース・データベースprod_sourceに接続します。

  2. V$TRANSPORTABLE_PLATFORMでソース・プラットフォームの名前を問い合せます。

    この例では、ソース・ホストのPLATFORM_NAMESolaris[tm] OE (64-bit)であると想定しています。

    関連項目:

    プラットフォーム名の確認については、「クロス・プラットフォーム・データ・トランスポートをサポートするプラットフォーム」を参照してください。

  3. ソース・データベースからトランスポートする表領域を識別し、それらの表領域を読取り専用モードに設定します。

    たとえば、financeおよびhrを読取り専用モードに設定するには、次のSQL文を入力します。

    ALTER TABLESPACE finance READ ONLY;
    ALTER TABLESPACE hr READ ONLY;
    
  4. ソース・ホスト上で、データ・ポンプ・エクスポートを使用してエクスポート・ダンプ・ファイルを作成します。

    この例では、ダンプ・ファイルはexpdat.dmpという名前になります。

  5. エクスポート・ダンプ・ファイルおよびトランスポートするデータファイルを宛先ホストで使用可能にします。

    NFSを使用して、ダンプ・ファイルおよび現行のデータベース・ファイル(コピーは対象外)をアクセス可能にします。また、オペレーティング・システム・ユーティリティを使用して、これらのファイルを宛先ホストにコピーすることもできます。

    この例では、宛先ホストの/tmp/transport_solaris/ディレクトリにファイルを格納します。ファイルの元の場所からのサブディレクトリ構造を保持しますが、つまり、データファイルは次の場所に格納されます。

    • /tmp/transport_solaris/fin/fin01.dbf

    • /tmp/transport_solaris/fin/fin02.dbf

    • /tmp/transport_solaris/hr/hr01.dbf

    • /tmp/transport_solaris/hr/hr02.dbf

  6. RMANを起動し、TARGETとして(ソース・データベースではなく)宛先データベースに接続します。たとえば、次のコマンドは、SYSBACKUP権限が付与されているsbuユーザーを使用して、ターゲット・データベースprod_destに接続します。

    % rman
    RMAN> CONNECT TARGET "sbu@prod_dest AS SYSBACKUP";
    
  7. CONVERT DATAFILEコマンドを実行して、データファイルを宛先ホストのエンディアン形式に変換します。

    次の例では、DB_FILE_NAME_CONVERTを使用して、変換済データファイルの名前および場所を制御します。また、FROM PLATFORM句も指定します。

    RMAN> CONVERT DATAFILE
    2>   '/tmp/transport_solaris/fin/fin01.dbf',
    3>   '/tmp/transport_solaris/fin/fin02.dbf',
    4>   '/tmp/transport_solaris/hr/hr01.dbf',
    5>   '/tmp/transport_solaris/hr/hr02.dbf'
    6>   DB_FILE_NAME_CONVERT
    7>     '/tmp/transport_solaris/fin','/orahome/dbs/fin',
    8>     '/tmp/transport_solaris/hr','/orahome/dbs/hr'
    9>   FROM PLATFORM 'Solaris[tm] OE (64-bit)';

    結果として、/orahome/dbs/ディレクトリに一連の変換済データファイルが格納されます。これらのファイルの名前は次のとおりです。

    • /orahome/dbs/fin/fin01.dbf

    • /orahome/dbs/fin/fin02.dbf

    • /orahome/dbs/hr/hr01.dbf

    • /orahome/dbs/hr/hr02.dbf

  8. 表領域をトランスポートする場合の一般的な手順の残りの手順を実行します。

    1. データ・ポンプ・インポート・ユーティリティを使用して、表領域を新しいデータベースに組み込みます。

    2. 必要に応じて、トランスポートされた表領域を読取り専用モードに設定します。

関連項目:

  • CONVERTコマンドの構文およびセマンティクスについては、『Oracle Databaseバックアップおよびリカバリ・リファレンス』を参照してください。

  • トランスポータブル表領域の詳細は、『Oracle Database管理者ガイド』を参照してください。

イメージ・コピーによるクロス・プラットフォーム・データベース変換の実行

イメージ・コピーによるクロス・プラットフォーム・データベース変換を実行する場合、データファイルをソース・ホストまたは宛先ホストで変換できます。

この項の内容は次のとおりです。

クロス・プラットフォーム・データベース変換の前のデータベースの確認

「イメージ・コピーを使用したクロス・プラットフォーム・データ・トランスポートの概要」で説明されているように、RMANのCONVERT DATABASEコマンドを使用すると、あるプラットフォームから別のプラットフォームへのデータベース全体のコピーを自動化できます。ソース・プラットフォームまたは宛先プラットフォームで、データベース・データファイルを変換します。

データベースを変換する前に、CONVERT DATABASEコマンドの前提条件のリストについて『Oracle Databaseバックアップおよびリカバリ・リファレンス』を参照してください。この項の手順を試す前に、この前提条件をすべて満たしていることを確認します。

前提条件の1つは、ソース・プラットフォームと宛先プラットフォームのエンディアン形式が同じである必要があるということです。たとえば、Microsoft WindowsからLinux for x86(両方ともリトル・エンディアン)またはHP-UXからAIX(両方ともビッグ・エンディアン)にデータベースをトランスポートすることはできますが、HP-UXからLinux for x86にデータベース全体をトランスポートすることはできません。

注意:

プラットフォームのエンディアン形式が異なるため、CONVERT DATABASEコマンドを使用できない場合は、宛先プラットフォーム上に新しいデータベースを作成してから、クロス・プラットフォーム・トランスポータブル表領域を使用してデータをコピーできます。

データベース全体をトランスポートする場合は、宛先プラットフォームとの互換性が維持されるように、特定のファイルをRMANによって変換する必要があることに注意してください。ソース・プラットフォームと宛先プラットフォームのエンディアン形式が同じである場合でも、ソース・システムから宛先システムにこれらのファイルを単純にコピーすることはできません。次のようなファイルは、RMANによって変換する必要があります。

  • UNDOセグメントを含むファイル

  • HP Tru64プラットフォーム内外へトランスポートされる自動セグメント領域管理(ASSM)セグメント・ヘッダーを含むファイル

注意:

Tru64 UNIXプラットフォームへ、またはTru64 UNIXプラットフォームから変換する場合、データベースで同じエンディアン形式を使用していても、CONVERTコマンドを使用して、自動セグメント領域管理(ASSM)ヘッダーを含むデータファイルに変換する必要があります。UNDOデータまたはASSMヘッダーを含むデータファイルの特定については、My Oracle SupportのNote 732053.1を参照してください。

CONVERT DATABASEコマンドは、デフォルトで、データベース内のすべてのデータファイルをRMANによる変換を使用して処理します。RMANによる変換では、ファイルに対して変更を行わない場合でも、ファイルをある場所から別の場所にコピーします。RMANによる変換を必要としないその他の方法でファイルをコピーする場合は、CONVERT DATABASEコマンドのSKIP UNNECESSARY DATAFILESオプションを使用します。このオプションを選択した場合は、CONVERT DATABASEコマンドでは変換が必要なファイルのみが処理されます。その他のすべてのファイルは、ユーザーに対してアクセス可能か、ソース・データベースから宛先データベースにコピーできる必要があります。

データファイル変換の実行場所がソース・ホストまたは宛先ホストのどちらであっても、ソース・データベースが読取り専用モードでオープンされている状態でファイルをコピーする必要があります。

クロス・プラットフォーム変換の前にデータベースを確認する手順

  1. ソース・データベースで、SYSDBAまたはSYSBACKUP権限を持つユーザーとしてSQL*Plusセッションを開始します。
  2. データベースを読取り専用モードでオープンします。
    SHUTDOWN IMMEDIATE
    STARTUP MOUNT
    ALTER DATABASE OPEN READ ONLY;
    
  3. SQL*Plusでサーバー出力が有効になっていることを確認します。

    たとえば、次のSQL*Plusコマンドを入力します。

    SET SERVEROUTPUT ON
    
  4. DBMS_TDB.CHECK_DBファンクションを実行します。

    このチェックを実行すると、不適切な互換性設定、インダウト・トランザクションやアクティブ・トランザクション、ソース・プラットフォームと宛先プラットフォーム間の互換性のないエンディアン形式など、データベースのトランスポートを妨げる条件がないことが確認されます。

    CHECK_DBを引数指定せずにコールすると、ソース・データベースにトランスポートを妨げる条件があるかどうかを確認できます。このファンクションは、表28-1に示す引数を指定してコールすることもできます。

    表28-1 CHECK_DBファンクションのパラメータ

    パラメータ 説明

    target_platform_name

    V$DB_TRANSPORTABLE_PLATFORMビューに表示される宛先プラットフォームの名前。

    このパラメータは任意ですが、skip_optionパラメータを使用する場合は必須です。省略すると、宛先プラットフォームがソース・プラットフォームと互換性があると想定され、プラットフォームの互換性に関連性のない条件のみがテストされます。

    skip_option

    データベースがトランスポート可能かどうかをチェックする際にスキップするデータベースの部分(適切な場合)を指定します。指定可能な値(NUMBER型)は次のとおりです。

    • SKIP_NONE(または0): すべての表領域がチェックされます。

    • SKIP_OFFLINE(または2): オフライン表領域内のデータファイルのチェックがスキップされます。

    • SKIP_READONLY(または3): 読取り専用表領域内のデータファイルのチェックがスキップされます。

    次の例では、32ビットWindowsにデータベースをトランスポートするために、32ビットLinuxプラットフォーム上でCHECK_DBを実行し、読取り専用表領域をスキップします。

    DECLARE
      db_ready BOOLEAN;
    BEGIN
      db_ready := 
           DBMS_TDB.CHECK_DB('Microsoft Windows IA (32-bit)',DBMS_TDB.SKIP_READONLY);
    END;
    /
    
    PL/SQL procedure successfully completed.
    

    警告が表示されない場合またはDBMS_TDB.CHECK_DBによってTRUEが戻された場合は、データベースをトランスポートできます。手順6に進みます。

    警告が表示された場合またはDBMS_TDB.CHECK_DBによってFALSEが戻された場合は、この時点でデータベースをトランスポートできません。手順5に進みます。

  5. 出力を調べてデータベースをトランスポートできない理由を確認し、可能な場合は問題を解決してから、手順4に戻ります。

    関連項目:

    DBMS_TDBの詳細は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください。

  6. DBMS_TDB.CHECK_EXTERNALファンクションを実行して、すべての外部表、ディレクトリまたはBFILEを識別します。RMANは、これらのファイルのトランスポートを自動化できません。したがって、ファイルを手動でコピーしてデータベースのディレクトリを再作成する必要があります。

    次の例では、DBMS_TDB.CHECK_EXTERNAL関数のコール方法を示します。

    DECLARE
         external BOOLEAN;
    BEGIN
        /* value of external is ignored, but with SERVEROUTPUT set to ON
         * dbms_tdb.check_external displays report of external objects
         * on console */
        external := DBMS_TDB.CHECK_EXTERNAL;
    END;
    /
    

    外部オブジェクトが存在しない場合は、このプロシージャを実行しても出力は行われません。ただし、外部オブジェクトが存在する場合は、次のような出力が表示されます。

    The following external tables exist in the database:
    SH.SALES_TRANSACTIONS_EXT
    The following directories exist in the database:
    SYS.DATA_PUMP_DIR, SYS.MEDIA_DIR, SYS.DATA_FILE_DIR, SYS.LOG_FILE_DIR
    The following BFILEs exist in the database:
    PM.PRINT_MEDIA
     
    PL/SQL procedure successfully completed.

データベースをトランスポートする場合のソース・ホストでのデータファイルの変換

データベース全体をトランスポートする場合は、宛先プラットフォームとの互換性が維持されるように、特定の形式のブロック(UNDOセグメント内のブロックなど)を再フォーマットする必要があります。ソース・プラットフォームと宛先プラットフォームのエンディアン形式が同じである場合でも、特定のデータファイルは変換する必要があり、単に1つのプラットフォームから別のプラットフォームにコピーすることはできません。

UNDO情報のあるデータファイルおよびHP Tru64プラットフォームからのデータファイルは、変換する必要があります。デフォルトでは、CONVERT DATABASEコマンドが実行されるとすべてのデータファイルが変換されます。ただし、CONVERT DATABASEコマンドでSKIP UNNECESSARY DATAFILESを使用した場合は、UNDOセグメントを含むデータファイルおよびHP Tru64プラットフォームからのデータファイルが変換されます。その他すべてのデータファイルは変換の必要はなく、FTP、オペレーティング・システムのコピー・コマンドなどのメカニズムを使用して、新しいデータベースにコピーできます。

この項では、CONVERT DATABASEのすべての前提条件を満たし、「クロス・プラットフォーム・データベース変換の前のデータベースの確認」の手順を実行済であると想定しています。この手順の目的は、クロス・プラットフォーム・データベース・トランスポートの一部として、ソース・ホスト上のデータファイルの形式を変換することです。

Solaris上で実行されるデータベースをWindows上で実行されるデータベースに変換するとします。

ソース・ホストでデータベースを変換する手順

  1. ソース・データベースを読取り専用モードでオープンします。
    SHUTDOWN IMMEDIATE;
    STARTUP MOUNT;
    ALTER DATABASE OPEN READ ONLY;
    
  2. RMANを開始し、「RMANによるデータベース接続の確立」の説明に従ってTARGETとしてソース・データベースに接続します。
  3. CONVERT DATABASEコマンドを実行します。

    次の例は、CONVERT DATABASEコマンドを示しています(出力例も示します)。TRANSPORT SCRIPTパラメータによって、生成されるSQLスクリプトの場所を指定します。このスクリプトを使用して、新しいデータベースを作成できます。TO PLATFORMパラメータによって、宛先データベースのプラットフォームを指定します。DB_FILE_NAME_CONVERTパラメータによって、生成されるデータファイルのネーミング方法を指定します。

    RMAN> CONVERT DATABASE
    2>   NEW DATABASE 'newdb'
    3>   TRANSPORT SCRIPT '/tmp/convertdb/transportscript.sql'
    4>   TO PLATFORM 'Microsoft Windows IA (32-bit)'
    5>   DB_FILE_NAME_CONVERT '/disk1/oracle/dbs' '/tmp/convertdb';
     
    Starting conversion at source at 25-NOV-13
    using channel ORA_DISK_1
     
    External table SH.SALES_TRANSACTIONS_EXT found in the database
    .
    .
    .
    Directory SYS.ORACLE_HOME found in the database
    Directory SYS.ORACLE_BASE found in the database
    Directory SYS.LOG_FILE_DIR found in the database
    .
    .
    .
    BFILE PM.PRINT_MEDIA found in the database
     
    User SYS with SYSDBA and SYSOPER privilege found in password file
    User SBU with SYSBACKUP privilege found in password file
    channel ORA_DISK_1: starting datafile conversion
    input datafile fno=00001 name=/disk1/oracle/dbs/tbs_01.f
    converted datafile=/tmp/convertdb/tbs_01.f
    channel ORA_DISK_1: datafile conversion complete, elapsed time: 00:00:15
    channel ORA_DISK_1: starting datafile conversion
    input datafile fno=00002 name=/disk1/oracle/dbs/tbs_ax1.f
    converted datafile=/tmp/convertdb/tbs_ax1.f
    channel ORA_DISK_1: datafile conversion complete, elapsed time: 00:00:03
    .
    .
    .
    channel ORA_DISK_1: starting datafile conversion
    input datafile fno=00016 name=/disk1/oracle/dbs/tbs_52.f
    converted datafile=/tmp/convertdb/tbs_52.f
    channel ORA_DISK_1: datafile conversion complete, elapsed time: 00:00:01
    Edit init.ora file init_00gb3vfv_1_0.ora. This PFILE will be used to 
      create the database on the target platform
    Run SQL script /tmp/convertdb/transportscript.sql on the target platform 
      to create database
    To recompile all PL/SQL modules, run utlirp.sql and utlrp.sql on 
      the target platform
    To change the internal database identifier, use DBNEWID Utility
    Finished conversion at source at 25-NOV-13
    
  4. CONVERT DATABASEの完了後、ソース・データベースを読取り/書込みで再度オープンできます。
  5. CONVERT DATABASEで生成されたデータファイルを宛先ホスト上の目的の場所に移動します。

    手順3では、このコマンドによって、ソース・ホストの/tmp/convertdb/ディレクトリにファイルが作成されます。宛先データベースのファイルが格納される宛先ホストのディレクトリに、これらのファイルを移動します。

  6. データファイルのパスが宛先ホスト上でのパスと異なる場合は、データファイルの新しい場所が参照されるようにトランスポート・スクリプトを編集します。
  7. 必要に応じて、初期化パラメータ・ファイルを編集して、宛先データベースの設定を変更します。

    初期化パラメータ・ファイルの先頭のいくつかのエントリは、データベースを宛先プラットフォームに移動する際に編集する必要があります。たとえば、初期化パラメータ・ファイルは次のような内容になっている場合があります。

    # Please change the values of the following parameters:
     control_files            = "/tmp/convertdb/cf_D-NEWDBT_id-1778429277_00gb9u2s"
     service_names            = "NEWDBT.example.com"
     db_recovery_file_dest    = "/tmp/convertdb/orcva"
     db_recovery_file_dest_size= 10737418240
     instance_name            = "NEWDBT"
     db_name                  = "NEWDBT"
     plsql_native_library_dir = "/tmp/convertdb/plsqlnld1"
    
  8. 必要に応じて、変換されたデータファイルの新しい名前を使用するようにトランスポート・スクリプトを編集します。

    手順3の例では、トランスポート・スクリプトの名前は/tmp/convertdb/transportscript.sqlです。宛先ホストでこのスクリプトを実行して、データベースを作成します。したがって、データファイルの正しい名前を使用してこのスクリプトを編集する必要があります。

  9. 宛先ホストでSQL*Plusを起動し、オペレーティング・システム認証を使用してSYSDBAまたはSYSBACKUPとして宛先データベース・インスタンスに接続します。

    たとえば、次のように接続します。

    SQL> CONNECT / AS SYSBACKUP
    

    オペレーティング・システム認証を使用しない場合は、パスワード・ファイルを作成して、ユーザー名とパスワードで接続できます。

  10. SQL*Plusでトランスポート・スクリプトを実行し、宛先ホスト上に新しいデータベースを作成します。
    SQL> @transportscript
    

トランスポート・スクリプトが終了すると、新しいデータベースの作成が完了します。

関連項目:

オペレーティング・システム認証およびパスワード・ファイル認証の詳細は、『Oracle Database管理者ガイド』を参照してください。

データベースをトランスポートする場合の宛先ホストでのデータファイルの変換

この項では、CONVERT DATABASEコマンドのすべての前提条件を満たし、「クロス・プラットフォーム・データベース変換の前のデータベースの確認」の手順を実行済であると想定しています。この手順の目的は、クロス・プラットフォーム・データベース・トランスポートの一部として、宛先ホスト上のデータファイルの形式を変換することです。

データファイルの変換は、次のフェーズで実行します。

  1. ソース・ホストでのデータファイル初期変換手順の実行
  2. 宛先ホストでの変換スクリプトの実行

ソース・ホストでのデータファイル初期変換手順の実行

この手順では、ソース・ホスト上でCONVERT DATABASEコマンドを実行します。このコマンドによって、初期化パラメータ・ファイル、および宛先ホストで使用するために編集可能なスクリプトが生成されます。また、変換前のデータファイルをソース・ホストから宛先ホストにコピーします。

ソース・ホストでデータファイル初期変換を実行する手順

  1. データベースが読取り専用モードでオープンしていることを確認します。
  2. RMANを開始し、「RMANによるデータベース接続の確立」の説明に従ってTARGETとしてソース・データベースに接続します。
  3. CONVERT DATABASE ON DESTINATION PLATFORMコマンドを実行します。

    次の例は、CONVERT DATABASEコマンドの例を示しています(出力例も示します)。ON DESTINATION PLATFORMパラメータを使用して、データファイルで必要とされるすべてのCONVERTコマンドがソース・プラットフォームではなく宛先プラットフォームで実行されるように指定します。FORMATパラメータによって、生成されるファイルのネーミング方法を指定します。

    RMAN> CONVERT DATABASE
    2>   ON DESTINATION PLATFORM
    3>   CONVERT SCRIPT '/tmp/convertdb/convertscript-target'
    4>   TRANSPORT SCRIPT '/tmp/convertdb/transportscript-target'
    5>   NEW DATABASE 'newdbt'
    6>   FORMAT '/tmp/convertdb/%U';
     
    Starting conversion at source at 28-JAN-13
    using target database control file instead of recovery catalog
    allocated channel: ORA_DISK_1
    channel ORA_DISK_1: sid=39 devtype=DISK
     
    External table SH.SALES_TRANSACTIONS_EXT found in the database
    .
    .
    .
    Directory SYS.ORACLE_HOME found in the database
    Directory SYS.ORACLE_BASE found in the database
    Directory SYS.LOG_FILE_DIR found in the database
    .
    .
    .
    BFILE PM.PRINT_MEDIA found in the database
     
    User SYS with SYSDBA and SYSOPER privilege found in password file
    User SBU with SYSBACKUP privilege found in password file
    channel ORA_DISK_1: starting to check datafiles
    input datafile fno=00001 name=/disk1/oracle/dbs/tbs_01.f
    channel ORA_DISK_1: datafile checking complete, elapsed time: 00:00:00
    channel ORA_DISK_1: starting to check datafiles
    input datafile fno=00002 name=/disk1/oracle/dbs/tbs_ax1.f
    channel ORA_DISK_1: datafile checking complete, elapsed time: 00:00:00
    channel ORA_DISK_1: starting to check datafiles
    input datafile fno=00017 name=/disk1/oracle/dbs/tbs_03.f
    channel ORA_DISK_1: datafile checking complete, elapsed time: 00:00:00
    .
    .
    .
    channel ORA_DISK_1: starting to check datafiles
    input datafile fno=00015 name=/disk1/oracle/dbs/tbs_51.f
    channel ORA_DISK_1: datafile checking complete, elapsed time: 00:00:00
    channel ORA_DISK_1: starting to check datafiles
    input datafile fno=00016 name=/disk1/oracle/dbs/tbs_52.f
    channel ORA_DISK_1: datafile checking complete, elapsed time: 00:00:00
    Edit init.ora file /tmp/convertdb/init_00gb9u2s_1_0.ora. This PFILE will be used to create the database on the target platform
    Run SQL script /tmp/convertdb/transportscript-target on the target platform to create database
    Run RMAN script /tmp/convertdb/convertscript-target on target platform to convert datafiles
    To recompile all PL/SQL modules, run utlirp.sql and utlrp.sql on the target platform
    To change the internal database identifier, use DBNEWID Utility
    Finished conversion at source at 28-JAN-13
    
    Starting Control File Autobackup at 28-JAN-13
    piece handle=/disk2/oracle/backups/c-1678658224-20131202-02 comment=NONE
    Finished Control File Autobackup at 28-JAN-13
    

    前述のコマンドでは、トランスポート・スクリプト、新しいデータベースの初期化パラメータ・ファイル、および変換される各データファイル用のRMANのCONVERT DATAFILEコマンドを含む変換スクリプトが作成されます。

    注意:

    CONVERT DATABASE ON DESTINATION PLATFORMでは、変換済データファイルのコピーは生成されません。このコマンドでは、スクリプトのみが作成されます。

  4. オペレーティング・システム・ユーティリティを使用して、宛先ホストの一時格納場所に次のファイルをコピーします。
    • 変換するデータファイル

    • 変換スクリプト

    • トランスポート・スクリプト

    • 宛先データベースの初期化ファイル

  5. ソース・データベースを読取り/書込みモードにします。

宛先ホストでの変換スクリプトの実行

この項では、前の項で作成したスクリプトを使用して、宛先ホストのデータファイルを変換し、トランスポートプロセスを完了する方法について説明します。

前述の項で作成した変換スクリプトでは、ソース・データベース・ファイルの元のデータファイル名を使用します。FORMATパラメータによって、CONVERT DATABASEコマンドのFORMATまたはDB_FILE_NAME_CONVERTパラメータを使用して生成される名前を指定します。

同じパス名を使用して宛先ホストからソース・データベースのデータファイルにアクセス可能な場合、変換スクリプトは、ソース・データベースが読取り専用であるかぎり、変更せずに宛先ホストで実行できます。たとえば、ソース・ホストおよび宛先ホストの両方でNFSを使用してソース・データファイルを含むディスクがマウントされており、両方のホストのマウント・ポイントが/fs1/dbs/である場合、編集は必要ありません。

宛先ホストで変換スクリプトを実行する手順

  1. 必要に応じて、変換スクリプトを編集します。

    変換スクリプトでは、変換するデータファイルごとに1つのCONVERT DATAFILEコマンドが存在します。変換スクリプトで、変換前データファイルの現在の一時ファイル名および変換済データファイルの出力ファイル名を指定する必要があります。典型的な変換スクリプトは、次のような内容になります。

    RUN
    {
     CONVERT
     FROM PLATFORM 'Linux IA (32-bit)'
     PARALLELISM 10
      DATAFILE '/disk1/oracle/dbs/tbs_01.f'
      FORMAT '/tmp/convertdb/data_D-TV_I-1778429277_TS-SYSTEM_FNO-1_7qgb9u2s'
     
      DATAFILE '/disk1/oracle/dbs/tbs_ax1.f'
      FORMAT '/tmp/convertdb/data_D-TV_I-1778429277_TS-SYSAUX_FNO-2_7rgb9u2s'
     
      DATAFILE '/disk1/oracle/dbs/tbs_03.f'
      FORMAT '/tmp/convertdb/data_D-TV_I-1778429277_TS-SYSTEM_FNO-17_7sgb9u2s'
     
     DATAFILE '/disk1/oracle/dbs/tbs_51.f'
     FORMAT '/tmp/convertdb/data_D-TV_I-1778429277_TS-TBS_5_FNO-15_8egb9u2u'
     
     DATAFILE '/disk1/oracle/dbs/tbs_52.f'
      FORMAT '/tmp/convertdb/data_D-TV_I-1778429277_TS-TBS_5_FNO-16_8fgb9u2u';
    }
    

    変換スクリプト内の各DATAFILEコマンドを編集し、各データファイルの一時格納場所を入力として指定します。また、各コマンドのFORMATパラメータを編集し、トランスポート済データベースのデータファイルの任意の最終格納場所を指定します。

  2. 必要に応じて、宛先ホスト上の初期化パラメータ・ファイルを編集し、宛先データベースの設定を変更します。

    初期化パラメータ・ファイルの先頭のいくつかのエントリは編集する必要があります。たとえば、初期化パラメータ・ファイルは次のような内容になっている場合があります。

    # Please change the values of the following parameters:
    control_files            = "/tmp/convertdb/cf_D-NEWDBT_id-1778429277_00gb9u2s"
    db_recovery_file_dest    = "/tmp/convertdb/orcva"
    db_recovery_file_dest_size= 10737418240
    instance_name            = "NEWDBT"
    service_names            = "NEWDBT.example.com"
    plsql_native_library_dir = "/tmp/convertdb/plsqlnld1"
    db_name                  = "NEWDBT"
    
  3. 宛先ホストで、SQL*Plusを使用してデータベース・インスタンスをNOMOUNTモードで起動します。

    前の手順でコピーした初期化パラメータ・ファイルを指定します。たとえば、次のコマンドを入力します。

    SQL> STARTUP NOMOUNT PFILE='/tmp/init_convertdb_00i2gj63_1_0.ora'
    
  4. RMANを起動し、TARGETとして(ソース・データベースではなく)宛先データベースに接続します。たとえば、次のコマンドを入力します。
    % rman
    RMAN> CONNECT TARGET "sbu@prod_dest AS SYSBACKUP";
    
  5. RMANプロンプトで、変換スクリプトを実行します。たとえば、次のコマンドを入力します。
    RMAN> @/tmp/convertdb/convertscript-target
    
  6. データベース・インスタンスを停止します。

    実行する必要があるトランスポート・スクリプトにSTARTUP NOMOUNTコマンドが含まれているため、この手順が必要となります。

  7. 必要に応じて、変換されたデータファイルの新しい名前を使用するようにトランスポート・スクリプトを編集します。

    手順3の例では、トランスポート・スクリプトの名前は/tmp/convertdb/transportscript.sqlです。宛先ホストでこのスクリプトを実行して、データベースを作成します。したがって、データファイルの正しい名前を使用してこのスクリプトを編集する必要があります。

  8. SQL*Plusでトランスポート・スクリプトを実行します。

    たとえば、次のように入力して宛先ホスト上に新しいデータベースを作成します。

    SQL> @/tmp/convertdb/transportscript
    

トランスポート・スクリプトが終了すると、宛先データベースが作成されます。

バックアップ・セットを使用したクロス・プラットフォーム・データ・トランスポートの概要

RMANでは、バックアップ・セットを使用して、データベース、データファイルおよび表領域をプラットフォーム間でトランスポートできます。バックアップ・セットでクロス・プラットフォーム・データ・トランスポートを実行すると、ブロック圧縮を使用してバックアップのサイズを減らすことができます。これによってバックアップ・パフォーマンスが向上し、ネットワーク経由でのバックアップのトランスポート時間が短縮されます。

注意:

バックアップ・セットを使用してクロス・プラットフォーム・データ・トランスポートを実行するには、宛先データベースのバージョンがOracle Database 12cリリース1 (12.1)以上である必要があります。

データベース全体を異なるプラットフォームにトランスポートする場合は、ソース・プラットフォームと宛先プラットフォームが同じエンディアン形式を使用している必要があります。ただし、ユーザー表領域については、ソース・プラットフォームとは異なるエンディアン形式を使用する宛先プラットフォームにトランスポートできます。

ソース・データベースで、トランスポートする必要があるデータのクロス・プラットフォーム・バックアップを作成します。クロス・プラットフォーム・バックアップは、ソース・プラットフォームとは異なる宛先プラットフォームにリストアできるRMANバックアップです。宛先データベースで、トランスポートするデータを取得するためにクロス・プラットフォーム・バックアップをリストアしてから、リカバリします。クロス・プラットフォーム・バックアップは、V$TRANSPORTABLE_PLATFORMビューでサポートされるどのプラットフォームにもリストアできます。

RMANは、クロス・プラットフォーム・トランスポート用に作成されるバックアップ・セットを、制御ファイルのカタログに追加しません。これによって、クロス・プラットフォーム・トランスポート用に作成されたバックアップ・セットは、通常のリストア操作には使用されません。

バックアップ・セットを使用したクロス・プラットフォーム・バックアップの作成に使用される句について

クロス・プラットフォーム・バックアップを作成するには、BACKUPコマンドでFOR TRANSPORT句またはTO PLATFORM句を使用します。これらのいずれかの句を使用して読取り専用表領域のクロス・プラットフォーム・バックアップを作成する場合、RMANでは、これらの表領域を宛先データベースに組み込むために必要なメタデータを含むデータ・ポンプ・エクスポート・ダンプ・ファイルも作成できます。

TO PLATFORM句およびFOR TRANSPORT句はOracle Database 10gリリース2 (10.2)またはOracle Database 11gではサポートされていませんが、これらのバージョンのデータベースからOracle Database 12cリリース1 (12.1)にデータをトランスポートできます。ソース・データベースで、トランスポート対象の表領域のバックアップ・セットを作成してから、expdpコマンドを使用してデータ・ポンプ・エクスポート・ダンプ・ファイルを作成します。宛先データベースにこれらのバックアップをリストアするには、RESTOREコマンドを使用してリストア操作を実行し、その後、impdpコマンドを使用してデータ・ポンプ・エクスポート・ダンプ・ファイルをインポートします。

RMANがデータベースのクロス・プラットフォーム・バックアップを自動作成するシナリオ

データベース全体のバックアップにバックアップ・セットを使用し、次の条件を満たす場合に、RMANは指定されたバックアップに加えて、データベースのクロス・プラットフォーム・バックアップを自動的に作成します。

次のBACKUPコマンドは、データベースのクロス・プラットフォーム・バックアップを作成します。このコマンドにはクロス・プラットフォーム・バックアップであることを示すFOR TRANSPORTまたはTO PLATFORM句が含まれていませんが、「バックアップ・セットを使用したクロス・プラットフォーム・データベース・トランスポートの前提条件」で説明した条件を満たしているため、暗黙的にデータベースのクロス・プラットフォーム・バックアップが作成されます。

RUN
{
   ALLOCATE CHANNEL c1 DEVICE TYPE DISK;
   ALLOCATE CHANNEL c2 DEVICE TYPE DISK;
   ALLOCATE CHANNEL c3 DEVICE TYPE DISK;
   BACKUP
      SKIP OFFLINE
      FILESPERSET 1
      FORMAT '/tmp/xplat_backups/implicit_full_db_%U'
   DATABASE;}

バックアップ・セットを使用してプラットフォーム間でデータをトランスポートする高度な手順

バックアップ・セットを使用したプラットフォーム間のデータのトランスポートでは、次のような高度な手順を行います。

  1. ソース・データベースで、BACKUPコマンドを使用して、異なるプラットフォームにトランスポートする必要があるデータベース、表領域またはデータファイルのクロス・プラットフォーム・バックアップを作成します。バックアップは、バックアップ・セットとしてソース・ホスト上に作成されます。

  2. ソース・ホストで作成されたバックアップ・セットを、宛先ホストに転送します。

    オペレーティング・システムのユーティリティを使用してバックアップ・セットをトランスポートできます。たとえば、オペレーティング・システムがLinuxまたはUNIXの場合、cpコマンドを使用してバックアップ・セットを転送できます。

  3. 宛先データベースで、ソース・ホストから転送されたバックアップ・セットをリストアします。RESTOREコマンドを使用して、クロス・プラットフォーム・バックアップをリストアします。

    非一貫性表領域バックアップを使用してプラットフォーム間で表領域をトランスポートしている場合は、「非一貫性バックアップを使用した表領域のクラス・プラットフォーム・トランスポートの実行」に記載されているように、表領域のリカバリに追加の手順が必要です。

バックアップ・セットを使用してプラットフォーム間でデータをトランスポートする方法の詳細、前提条件、および使用するRMAN構文については、次の項で説明しています。

バックアップ・セットを使用したクロス・プラットフォーム・データ・トランスポートで使用される基本的な用語

バックアップ・セットを使用してクロス・プラットフォーム・データ・トランスポートを実行する前に、次の用語を理解しておいてください。

外部データファイル

宛先データベースに属さないデータファイルは、外部データファイルと呼ばれます。これらのデータファイルは、宛先データベースへのデータ転送の一部として宛先データベースに組み込まれます。ソース・データベースでは、このデータファイルは、元のデータファイル番号で識別されます。

外部表領域

外部表領域は、ソース・データベース内の表領域で構成される外部データファイルのセットです。これらの外部データファイルは、宛先データベースに属さず、宛先データベースにトランスポートされ、ソース・データベースでは元の表領域名で識別されます。

外部データファイル・コピー

外部データファイル・コピーは、クロス・プラットフォーム・バックアップからリストアされたデータファイルです。一貫性がないため、宛先データベースに直接組み込むことはできません。このデータファイルを宛先データベースに組み込む前に、データファイルにクロス・プラットフォーム増分バックアップを適用し、リカバリする必要があります。

データ・ポンプの格納場所

データ・ポンプの格納場所は、データ・ポンプ・エクスポート・ダンプ・ファイルおよびデータ・ポンプ・ログ・ファイルが格納される宛先データベースのサーバー・ホストのディスク上の場所です。

クロス・プラットフォーム・データ・トランスポート用のソース・データベースでのデータのバックアップについて

宛先データベースにトランスポートする必要があるデータを含むバックアップ・セットを作成するには、ソース・データベースBACKUPコマンドを使用します。クロス・プラットフォーム・バックアップの作成であることを示すために、BACKUPコマンドに、FOR TRANSPORTまたはTO PLATFORM句を含める必要があります。

FOR TRANSPORTを使用すると、作成されるバックアップ・セットを、任意の宛先データベースにトランスポートできます。宛先データベースがソース・データベースとは異なるエンディアン形式を使用している場合、必要なエンディアン形式の変換が宛先データベースで実行されます。この方法の利点は、変換操作の処理オーバーヘッドが宛先データベースにオフロードされることです。

TO PLATFORM使用すると、エンディアン形式の変換がソース・データベースで実行されます。TO PLATFORM句で指定された宛先プラットフォームは、クロス・プラットフォーム・トランスポートでサポートされるプラットフォームである必要があります。V$TRANSPORTABLE_PLATFORMビューには、サポートされるプラットフォームのリストが含まれています。

複数のバックアップ・ピースを含むクロス・プラットフォーム・バックアップを作成できます。例については、『Oracle Databaseバックアップおよびリカバリ・リファレンス』を参照してください。

FOR TRANSPORTまたはTO PLATFORM句を使用してクロス・プラットフォーム・バックアップを作成した場合、BACKUPコマンドの特定の句は使用できません。TO PLATFORMおよびFOR TRANSPORTと互換性のない句の詳細は、『Oracle Databaseバックアップおよびリカバリ・リファレンス』を参照してください。

クロス・プラットフォームの表領域トランスポートで使用されるデータ・ポンプ・エクスポート・ダンプ・ファイルについて

一貫性のある表領域のクロス・プラットフォーム・バックアップを作成する場合、このバックアップ・セットには、指定した表領域に関連するデータを含むデータファイルが含まれます。一貫性表領域バックアップとは、表領域が読取り専用モードであるときに作成される1つ以上の表領域のバックアップです。このバックアップを宛先データベースにリストアした後に、表領域を宛先データベースに組み込む必要があります。これを行うには、表領域データを含むバックアップ・セットに加えて、ソース・データベースのこれらの表領域のメタデータが必要になります。

ソース・データベースで、BACKUPコマンドのDATAPUMP句を使用して、表領域をターゲット・データベースに組み込むために必要なメタデータを作成します。メタデータは、データ・ポンプ・エクスポート・ダンプ・ファイルに、別のバックアップ・セットとして格納されます。このバックアップ・セットを使用して、トランスポートした表領域をターゲット・データベースに組み込みます。

DATAPUMP句でFORMATオプションを使用して、表領域メタデータを含むバックアップ・セットの命名形式を指定できます。FORMATオプションを省略すると、BACKUPコマンドで指定した形式でエクスポート・ダンプ・ファイルの名前が付けられます。BACKUPコマンドでFORMATオプションを指定していない場合は、デフォルトの形式が使用されます。

注意:

DATAPUMP句を使用する場合、トランスポートされる表領域を読取り専用にする必要があります。

クロス・プラットフォーム・データ・トランスポート時の宛先ホストでのデータのリストアについて

宛先データベースで、RESTOREコマンドを使用して、バックアップ・セットを構成するクロス・プラットフォーム・バックアップに含まれるデータベース、表領域またはデータファイルをリストアします。クロス・プラットフォーム・リストア操作を実行する場合、RESTOREコマンドのforeignFileSpec副次句を使用する必要があります。詳細は、『Oracle Databaseバックアップおよびリカバリ・リファレンス』を参照してください。

クロス・プラットフォーム・バックアップをリストアする際に、次の情報を指定する必要があります。

  • ソース・データベースでバックアップされたデータを含むバックアップ・セット

    foreignFileSpec副次句のBACKUPSETオプションを使用して、データをリストアする必要があるクロス・プラットフォーム・バックアップ・セットの名前を指定します。クロス・プラットフォーム・バックアップが複数のバックアップ・セットで構成される場合、バックアップ・セットごとに個別にBACKUPSET句を使用します。表領域をリストアするには、BACKUPSET句を使用した表領域データを含むバックアップ・セットおよびforeignFileSpec副次句のDUMP FILEオプションを使用した表領域メタデータを含むバックアップ・セットを指定する必要があります。

    リカバリ中に複数のバックアップ・セットを使用することはサポートされません。外部データファイルのセットに複数のバックアップ・セットを適用できません。

    関連項目:

    BACKPSETおよびDUMP FILEの詳細は、『Oracle Databaseバックアップおよびリカバリ・リファレンス』を参照してください。

  • ソース・データベースに存在するとおりのデータファイルの番号または表領域の名前

    データファイルまたは表領域をリストアする場合、クロス・プラットフォーム・バックアップに含まれる特定の表領域またはデータファイルをリストアできます。

  • リストアされるデータファイルを格納する場所

    FORMAT句を使用して、リストアされるデータファイルを格納するために使用される場所および名前を指定します。

    宛先を指定しない場合、ターゲット・プラットフォームでDB_FILE_CREATE_DEST初期化パラメータが設定されている必要があります。RMANは、新しいOracle Managed Files (OMF)の名前を使用して、このパラメータによって指定される場所にデータファイルをリストアします。

  • ソース・プラットフォームの名前(変換が宛先データベースで実行される場合のみ)

    FROM PLATFORMを使用して、バックアップ・セットが作成されたソース・プラットフォームの名前を指定します。プラットフォーム名は、バックアップ・セット作成時に指定した名前と、正確に一致する必要があります。プラットフォーム名に違いがある場合、リストア操作は失敗します。

クロス・プラットフォーム・バックアップからリストアされるオブジェクトの選択について

クロス・プラットフォーム・バックアップからデータをリストアする際に、クロス・プラットフォーム・バックアップに含まれるすべてのデータ、または特定のオブジェクトのみをリストアできます。

関連項目:

この項で説明する句の詳細は、『Oracle Databaseバックアップおよびリカバリ・リファレンス』を参照してください。

クロス・プラットフォーム・バックアップに含まれるすべてのデータのリストア

データベース全体をリストアするには、RESTOREコマンドでFOREIGN DATABASE句を使用します。この句は、バックアップ・セット全体をリストアする場合およびソース・プラットフォーム宛先プラットフォームの両方が同じエンディアン形式を使用する場合のみに使用できます。必要に応じて、FORMAT句を使用して、リストアされるファイルのネーミング・パターンを指定できます。

クロス・プラットフォーム・バックアップに含まれるすべてのデータファイルをリストアするには、RESTOREコマンドでALL FOREIGN DATAFILES句を使用します。

クロス・プラットフォーム・バックアップ・セットに含まれる一部のデータのリストア

クロス・プラットフォーム・バックアップに含まれる一部のデータファイルまたは表領域をリストアできます。一部のデータファイルのみをリストアするには、RESTOREコマンドでFOREIGN DATAFILE句を使用します。リストア時に、ソース・データベース内のデータファイルの絶対ファイル番号を指定します。クロス・プラットフォーム・バックアップに含まれる一部の表領域のみをリストアするには、RESTOREコマンドでFOREIGN TABLESPACE句を使用します。リストアする必要のある表領域の名前を、この句の一部として指定します。

宛先データベースにリストアされるオブジェクトの名前および場所について

クロス・プラットフォーム・バックアップをリストアする場合、RESTOREで次のオプションのいずれかを使用して、リストアされるデータファイルの名前および場所を指定します。

  • TO NEWオプションをALL FOREIGN DATAFILES句とともに使用して、DB_FILE_CREATE_DESTパラメータで指定した場所にデータファイルをリストアします。デフォルトでは、RMANはデータファイルのOMF名を使用します。

  • FORMATオプションを使用して、リストアされるデータファイルのネーミング・パターンを指定します。FORMATの指定の一部として、これらのファイルのディレクトリを指定することもできます。

関連項目:

この項で説明する句の詳細は、『Oracle Databaseバックアップおよびリカバリ・リファレンス』を参照してください。

クロス・プラットフォームの表領域トランスポート時に作成されるデータ・ポンプ・エクスポート・ダンプ・ファイルのインポートについて

宛先データベースに読取り専用表領域のクロス・プラットフォーム・バックアップをリストアする際に、foreignFileSpec副次句のDUMP FILE ... FROM BACKUPSETオプションを使用して、データ・ポンプ・エクスポート・ダンプ・ファイルを含むバックアップ・セットをリストアします。エクスポート・ダンプ・ファイルには、表領域を宛先データベースに組み込むために必要なメタデータが含まれます。

RESTOREコマンドでDATAPUMP句を使用して、エクスポート・ダンプ・ファイルをリストアする宛先ホスト上の場所を指定します。この句を省略した場合、ダンプ・ファイルはデフォルトのオペレーティング・システム固有の場所にリストアされます。

デフォルトでは、すべての必要な外部データファイルがリストアされた後に、RMANはエクスポート・ダンプ・ファイルを自動的にインポートします。NOIMPORT句を指定することによって、エクスポート・ダンプ・ファイルをインポートしないことを選択できます。リストア操作の一部としてエクスポート・ダンプ・ファイルをインポートしない場合は、表領域を宛先データベースに組み込む必要があるときに、ダンプ・ファイルを手動でインポートする必要があります。

注意:

エクスポート・ダンプ・ファイルが自動的にインポートされる場合(つまり、NOIMPORT句を使用しない場合)、宛先データベースが読取り/書込みモードで開かれている必要があります。

バックアップ・セットによるクロス・プラットフォーム・データベース・トランスポートの実行

データベース全体をソース・プラットフォームから異なる宛先プラットフォームにトランスポートできます。データベースをトランスポートするためのクロス・プラットフォーム・バックアップの作成時に、ソース・データベースまたは宛先データベース上でデータベースを変換できます。宛先データベースで変換を実行する利点は、変換操作の処理オーバーヘッドをソースから宛先データベースにオフロードできることです。

バックアップ・セットを使用したクロス・プラットフォーム・データベース・トランスポートの前提条件

プラットフォーム間でデータベースをトランスポートするためのクロス・プラットフォーム・バックアップを作成する前に、次の前提条件を満たしている必要があります。

異なるプラットフォームにデータベースをトランスポートするバックアップ・セットを使用した手順

次の手順を使用して、データベース全体をプラットフォーム間でトランスポートします。

  1. クロス・プラットフォーム・データベース・トランスポートを実行するために必要な前提条件を満たしていることを確認します。
  2. SQL*Plusを起動し、管理者権限でソース・データベースprod_sourceに接続します。
    % sqlplus sys@prod_source as SYSDBA
    

    プロンプトが表示されたら、sysユーザーのパスワードを入力します。

  3. V$TRANSPORTABLE_PLATFORMで宛先プラットフォームの名前を問い合せます。

    データベース全体をトランスポートするには、ソース・プラットフォームと宛先プラットフォームのエンディアン形式が同じである必要があります。

    関連項目:

    プラットフォーム名の確認については、「クロス・プラットフォーム・データ・トランスポートをサポートするプラットフォーム」を参照してください。

  4. 出力ファイルの名前を指定する方法を選択します。

    BACKUPコマンドのFORMAT句を使用して、出力ファイルの名前を指定します。

    たとえば、次のFORMAT句は、出力ファイルがtransport_で始まる一意の名前で、ディレクトリ/oradata/backups/specialに格納される必要があることを指定しています。

    FORMAT '/oradata/backups/special/transport_%U'
    
  5. RMANを起動し、TARGETとしてソース・データベースに接続します。

    ソース・データベースは、異なるプラットフォームにトランスポートする必要があるデータを含むデータベースです。

    この例では、sbuは、ソース・データベースprod_sourceSYSBACKUP権限が付与されているユーザーです。

    % RMAN
    RMAN> CONNECT TARGET "sbu@prod_source AS SYSBACKUP";
    

    sbuユーザーのパスワードを要求された場合は入力します。

  6. データベースを読取り専用モードにします。
    SHUTDOWN IMMEDIATE;
    STARTUP MOUNT;
    ALTER DATABASE OPEN READ ONLY;
    
  7. BACKUPコマンドのFOR TRANSPORTまたはTO PLATFORM句を使用してソース・データベースをバックアップします。これらの句のいずれかを使用することで、バックアップ・セットを使用するクロス・プラットフォーム・バックアップが作成されます。

    次の例では、データベース全体のクロス・プラットフォーム・バックアップを作成しています。このバックアップは、ソース・データベースと同じエンディアン形式を使用する、サポートされるプラットフォームでリストアできます。ソース・プラットフォームは、Sun Solaris x86 64-bitです。FOR TRANSPORT句が使用されるため、変換は宛先データベースで実行されます。クロス・プラットフォーム・データベース・バックアップは、ソース・ホストの/tmp/xplat_backupsディレクトリ内のdb_trans.bckに格納されます。

    BACKUP
    FOR TRANSPORT
    FORMAT '/tmp/xplat_backups/db_trans.bck'
    DATABASE;
    
  8. ソース・データベースから切断します。
  9. BACKUPコマンドで作成されたバックアップ・セットを、宛先ホストに移動します。

    オペレーティング・システム固有のユーティリティを使用して、作成されたバックアップ・セットをソース・ホストから宛先ホストに転送します。

    たとえば、ソース・ホストおよび宛先ホストのオペレーティング・システムがLinuxまたはUNIXの場合、cpコマンドを使用してファイルを移動します。

  10. 宛先データベース(データベースをトランスポートする必要がある宛先)に、TARGETとして接続します。

    この例では、sbuは、宛先データベースprod_destSYSBACKUP権限が付与されているユーザーです。

    % RMAN
    RMAN> CONNECT TARGET "sbu@prod_dest AS SYSBACKUP";
    

    sbuユーザーのパスワードを要求された場合は入力します。

  11. 宛先データベースがNOMOUNT状態であることを確認します。
  12. RESTOREコマンドをFOREIGN DATABASE句とともに使用して、ソースから転送されたバックアップ・セットをリストアします。

    次の例では、手順7で作成したクロス・プラットフォーム・データベース・バックアップをリストアします。宛先データベースでは、ソース・データベースと同じエンディアン形式が使用されます。FROM PLATFORM句には、バックアップ・セットが作成されたプラットフォームの名前を指定します。この句は、宛先でバックアップを変換するために必要です。クロス・プラットフォーム・データベース・バックアップを含むバックアップ・セットは、宛先ホストの/tmp/xplat_restoresディレクトリに格納されます。TO NEWオプションは、リストアされる外部データファイルが、宛先データベースの新しいOMF指定名を使用する必要があることを示しています。DB_CREATE_FILE_DEST初期化パラメータが設定されていることを確認します。

    RESTORE
    FROM PLATFORM 'Solaris Operating System (x86-64)'
    FOREIGN DATABASE TO NEW
    FROM BACKUPSET '/tmp/xplat_restores/db_trans.bck';
    

バックアップ・セットを使用した読取り専用表領域のクロス・プラットフォーム・トランスポートの実行

BACKUPコマンドをFOR TRANSPORTまたはTO PLATFORM句とともに使用して、プラットフォーム間での読取り専用表領域のトランスポートに使用できるバックアップ・セットを作成します。読取り専用表領域のトランスポート時には、これらの表領域のメタデータもエクスポートする必要があります。メタデータは、表領域を宛先データベースに組み込むために必要です。表領域をプラットフォーム間でトランスポートする場合は、ソース・プラットフォームと宛先プラットフォームで異なるエンディアン形式を使用できます。

クロス・プラットフォーム・バックアップに含まれるすべてのデータファイルまたは表領域、あるいはその一部のみをリストアできます。これらのオブジェクトをリストアした後に、リストアされたデータファイルの名前および場所を指定できます。

バックアップ・セットを使用してクロス・プラットフォームの表領域トランスポートを実行するための前提条件

異なるプラットフォームへの表領域トランスポートに使用できるクロス・プラットフォーム・バックアップを作成する前に、次の前提条件を満たしている必要があります。

  • ソース・データベースと宛先データベースのサーバー・パラメータ・ファイル内のCOMPATIBLEパラメータは、12.0.0以上に設定されている。

  • トランスポートする表領域は、自己完結型である。

    DBMS_TTS.TRANSPORT_SET_CHECKプロシージャを実行して、依存性をチェックします。TRANSPORT_SET_VIOLATIONSビューに指定した表領域に対応する行が含まれている場合は、クロス・プラットフォーム・バックアップを作成する前に依存性を解決する必要があります。

    関連項目:

    DBMS_TTS.TRANSPORT_SET_CHECKプロシージャ実行の詳細は、例21-1を参照してください。

  • BACKUPコマンドでALLOW INCONSISTENT句を使用しないかぎり、トランスポートされる表領域は読取り専用モードである。

関連項目:

DBMS_TDB.CHECK_DBプロシージャの使用の詳細は、「バックアップ・セットを使用して異なるプラットフォームに読取り専用表領域をトランスポートする手順」を参照してください

バックアップ・セットを使用して異なるプラットフォームに読取り専用表領域をトランスポートする手順

  1. 異なるプラットフォームへの表領域のトランスポートに必要な前提条件を満たしていることを確認します。
  2. 表領域をトランスポートする必要があるソース・データベースに、TARGETとして接続します。

    この例では、sbuは、ソース・データベースprod_sourceSYSBACKUP権限が付与されているユーザーです。

    $ RMAN
    RMAN> CONNECT TARGET "sbu@prod_source AS SYSBACKUP";
    

    プロンプトが表示されたら、sbuユーザーのパスワードを入力します。

  3. V$TRANSPORTABLE_PLATFORMで宛先プラットフォームの名前を問い合せます。

    関連項目:

    プラットフォーム名の確認については、「クロス・プラットフォーム・データ・トランスポートをサポートするプラットフォーム」を参照してください。

  4. トランスポートする表領域を読取り専用モードに設定します。

    次のコマンドは、表領域EXAMPLEを読取り専用モードにします。

    ALTER TABLESPACE example READ ONLY;
    
  5. 出力ファイルの名前を指定する方法を選択します。

    BACKUPコマンドのFORMAT句を使用して、出力ファイルのネーミング・パターンを指定します。

  6. BACKUPコマンドでTO PLATFORMまたはFOR TRANSPORT句を使用して、ソース・データベースの表領域をバックアップします。DATAPUMP句を使用して、表領域のエクスポート・ダンプ・ファイルを作成する必要があることを指定します。エクスポート・ダンプ・ファイルは、それ自身のバックアップ・ピース内に作成されます。

    次の例では、Solaris[tm] OE (64-bit)プラットフォームにリストア可能な表領域projectsおよびtasksクロス・プラットフォーム・バックアップを作成します。このバックアップは、/tmp/xplat_backupsディレクトリ内のバックアップ・セットtrans_ts.bckに格納されます。表領域を宛先データベースに組み込むために必要なメタデータを含むデータ・ポンプ・エクスポート・ダンプ・ファイルは、/tmp/xplat_backupsディレクトリ内のtrans_ts_dmp.bckに格納されます。

    RMAN > BACKUP
              TO PLATFORM 'Solaris[tm] OE (64-bit)'
              FORMAT '/tmp/xplat_backups/trans_ts.bck'
              DATAPUMP FORMAT '/tmp/xplat_backups/trans_ts_dmp.bck'
              TABLESPACE projects, tasks;
    

    TO PLATFORM句を使用したため、宛先データベースのエンディアン形式への変換は、ソース・データベースで実行されます。

    注意:

    DATAPUMP句を使用する場合は、ターゲット・データベースが開かれていることを確認します。

  7. ソース・データベースから切断します。
  8. BACKUPコマンドで作成されたバックアップ・セット、およびデータ・ポンプ・エクスポート・ダンプ・ファイルを、宛先ホストに移動します。

    オペレーティング・システムのユーティリティを使用すると、バックアップ・セットをソース・ホストから宛先ホストに移動できます。

  9. 宛先データベース(データベースをトランスポートする必要がある宛先)に、TARGETとして接続します。

    この例では、sbuは、宛先データベースprod_destSYSBACKUP権限が付与されているユーザーです。

    % RMAN
    RMAN> CONNECT TARGET "sbu@prod_dest AS SYSBACKUP";
    

    プロンプトが表示されたら、sbuユーザーのパスワードを入力します。

  10. RESTOREコマンドを使用して、ソース・データベースからトランスポートされたバックアップ・セットをリストアします。DUMP FILE句を使用して、表領域メタデータが含まれているエクスポート・ダンプ・ファイルをインポートし、表領域を宛先データベースに組み込みます。

    次の例では、手順6で作成したクロス・プラットフォーム・バックアップからprojects表領域およびtasks表領域をリストアします。宛先ホストの/tmp/xplat_restoresディレクトリ内のバックアップ・セットtrans_ts.bck。これらの表領域を宛先データベースに組み込むために必要なメタデータを含むデータ・ポンプ・エクスポート・ダンプ・ファイルは、/tmp/xplat_restoresディレクトリ内のtrans_ts_dump.bckに格納されています。

    RMAN> RESTORE
          FOREIGN TABLESPACE projects, tasks TO NEW
          FROM BACKUPSET '/tmp/xplat_restores/trans_ts.bck'
          DUMP FILE FROM BACKUPSET '/tmp/xplat_restores/trans_ts_dmp.bck';
    

関連項目:

クロス・プラットフォームのバックアップおよびリストア操作の実行例については、『Oracle Databaseバックアップおよびリカバリ・リファレンス』を参照してください。

非一貫性バックアップを使用した表領域のクラス・プラットフォーム・トランスポートの概要

RMANでは、非一貫性表領域バックアップをプラットフォーム間でトランスポートできます。非一貫性表領域バックアップとは、表領域が読取り/書込みモードであるときに作成される1つ以上の表領域のバックアップです。非一貫性という語は、バックアップ内のデータファイルに、ファイルのチェックポイント後に行われた変更が含まれていることを示しています。クロス・プラットフォーム非一貫性バックアップ操作中に生成される外部データファイルを、宛先データベースに直接組み込むことはできません。宛先データベースで開く前に、それらを一貫性のある状態にする必要があります。データベースが読取り専用モードのときに作成されたクロス・プラットフォーム増分バックアップをそれらの外部データファイルに適用することで、外部データファイルを一貫性のある状態にします。このバックアップには、トランスポートされた表領域を宛先データベースに組み込むために必要なメタデータを含むエクスポート・ダンプ・ファイルも含む必要があります。

非一貫性表領域バックアップを使用することで、アプリケーション停止時間を短縮できます。この表領域がオンラインでユーザーが使用可能なときに、ソース・データベースでクロス・プラットフォーム非一貫性バックアップを作成します。最初のバックアップは、レベル0増分バックアップである必要があります。その後、最新のレベル1バックアップ以降に表領域に対して行われた変更を含む、小さいレベル1増分バックアップを作成します。ソース・データベース上で他のレベル1増分バックアップが作成されている場合も、これらのレベル0およびレベル1増分バックアップは、宛先データベース上でリストアして適用できます。宛先データベースに以前作成したレベル1バックアップの適用を開始する前に、ソース・データベース上ですべてのレベル1増分バックアップが作成されるのを待つ必要はありません。これらの増分バックアップの作成中も表領域はオンラインのため、この段階でのアプリケーション停止時間はありません。最後のレベル1増分バックアップは、表領域を読取り専用モードにして作成されます。アプリケーション停止時間は、この段階で始まります。この最後の増分バックアップには、表領域を宛先データベースに組み込むために必要なメタデータを含む必要があります。

宛先データベースでは、最初にレベル0の増分バックアップをリストアして、外部データファイルのセットを作成します。次に、表領域が読取り/書込みモードのときに作成されたレベル1増分バックアップを、これらのリストアされた外部データファイルに適用します。作成されたときと同じ順序でこれらのバックアップを適用します。多くの場合、表領域を読取り専用モードにして最後の増分バックアップがソース・データベースで作成される前に、宛先データベースは最後のレベル1増分バックアップにキャッチアップします。最後の手順では、(表領域が読取り専用モードで作成された)最後のレベル1増分バックアップをリストアして、外部データファイルを一貫性のある状態にします。このバックアップには、表領域を宛先データベースに組み込むために必要な表領域メタデータが含まれます。

非一貫性バックアップを使用した表領域のクラス・プラットフォーム・トランスポートの実行

バックアップ・セットまたはイメージ・コピーを使用して、非一貫性表領域をプラットフォーム間でトランスポートできます。BACKUPコマンドを使用して、バックアップ・セットを使用したクロス・プラットフォーム・バックアップを作成します。CONVERTコマンドを使用すると、イメージ・コピーを使用するクロス・プラットフォーム・バックアップが作成されます。

この項では、非一貫性表領域をプラットフォーム間でトランスポートする方法について説明します。バックアップ・セットを使用して非一貫性表領域をプラットフォーム間でトランスポートする例も示します。

ソース・データベースでの非一貫性および増分バックアップの作成について

BACKUPまたはCONVERTコマンドでALLOW INCONSISTENT句を使用して、1つ以上の表領域のクロス・プラットフォーム非一貫性バックアップを作成します。非一貫性バックアップが作成される場合、トランスポートされる表領域は読取り/書込みモードです。増分バックアップを作成するには、BACKUPコマンドでINCREMENTAL LEVEL 1句を使用します。

最初の非一貫性バックアップは、レベル0増分バックアップです。その後は、複数のクロス・プラットフォームのレベル1増分バックアップを作成できます。最後のクロス・プラットフォーム増分バックアップは、表領域が読取り専用であるときに作成される一貫性バックアップである必要があります。この最後の増分バックアップの作成時に、BACKUPコマンドでDUMP FILE句を使用して、表領域メタデータを含むダンプ・ファイルを作成します。

CONVERTコマンドを使用する場合は、データ・ポンプ・エクスポート・ユーティリティを使用して、表領域のメタデータを含むエクスポート・ダンプ・ファイルを明示的に作成する必要があります。

注意:

ALLOW INCONSISTENT句は、クロス・プラットフォームのデータベース全体のバックアップに対しては使用できません。

関連項目:

SCNの指定の詳細は、「異なるプラットフォームに非一貫性表領域をトランスポートする手順」を参照してください。

宛先データベースでの非一貫性バックアップのリストアおよびリカバリについて

最初に、表領域が読取り/書込みモードのときに作成されたクロス・プラットフォームのレベル0増分バックアップを宛先データベースにリストアします。この操作では、バックアップをリストアし、外部データファイルのコピーを作成します。バックアップ作成時に表領域が読取り専用にされなかったため、これらの外部データファイルには一貫性がありません。これらの外部データファイルを一貫性のある状態にし、一貫性のあるチェックポイントSCNを実現するには、増分バックアップをその作成順に適用します。適用される最後の増分バックアップは、表領域が読取り専用モードであるときに作成されたクロス・プラットフォーム増分バックアップである必要があります。次に、表領域を宛先データベースに組み込むために、トランスポートされる表領域のメタデータを含むダンプ・ファイルをリストアして、インポートします。

リストアしたデータファイルにクロス・プラットフォーム増分バックアップを適用する場合の要件

クロス・プラットフォーム増分表領域バックアップを、リストアされた外部データファイルのセットに正常に適用するには、次の条件を満たしている必要があります。

  • クロス・プラットフォーム増分バックアップに含まれる各データファイルで、開始SCNが、外部データファイル・コピーの現在のチェックポイントSCNよりも小さい必要があります。

  • リストア操作によって作成される外部データファイル・コピーは、変更しないでください。

    たとえば、外部データファイル・コピーが宛先データベースに組み込まれ、読取り/書込みになり、その後、読取り専用になった場合、RMANはそのファイルが変更されたとみなします。

異なるプラットフォームに非一貫性表領域をトランスポートする手順

この項では、非一貫性表領域をプラットフォーム間でトランスポートするためのステップについて説明します。これらのステップは、バックアップ・セットまたはイメージ・コピーを使用するクロス・プラットフォーム・トランスポートに適用されます。

バックアップ・セットを使用して非一貫性表領域をトランスポートするための前提条件は、「バックアップ・セットを使用してクロス・プラットフォームの表領域トランスポートを実行するための前提条件」に説明されています。イメージ・コピーを使用して非一貫性表領域をトランスポートするための前提条件は(CONVERTコマンド)、『Oracle Databaseバックアップおよびリカバリ・リファレンス』に説明されています。

異なるプラットフォームへの非一貫性表領域のトランスポートは、次のタスクで構成されます。

  1. 異なるプラットフォームに表領域をトランスポートするために必要なファイルを作成する

  2. ソース・ホストで作成したファイルを宛先ホストに転送する

  3. 表領域をリストアし、宛先データベースに組み込む

異なるプラットフォームに表領域をトランスポートするために必要なファイルを作成する

このステップでは、ソース・データベースで次のタスクを実行します。

  1. 異なるプラットフォームにトランスポートされる必要がある表領域のクロス・プラットフォーム・レベル0非一貫性バックアップを作成します。表領域は、読取り/書込みモードです。

    BACKUPコマンドでALLOW INCONSISTENT句およびINCREMENTAL LEVEL 0句を使用して、バックアップが1つ以上の表領域の非一貫性バックアップであることを示します。

  2. 別のプラットフォームにトランスポートする必要がある表領域のクロス・プラットフォームのレベル1増分バックアップを作成します。表領域は、読取り/書込みモードです。

    レベル0非一貫性バックアップの後は、表領域が読取り/書込みモードであるときに、任意の数のレベル1の増分バックアップを作成できます。ALLOW INCONSISTENTおよびINCREMENTAL LEVEL 1句を使用して、これらの増分バックアップを作成します。表領域が読取り/書込みモードのときに増分バックアップを頻繁に実行しておくと、表領域が読取り専用のときに作成する最後の増分バックアップを使用して宛先データベースに適用する必要のある変更データの量が減少するため、便利です。

  3. 表領域が読取り専用モードの状態の表領域のクロス・プラットフォームのレベル1増分バックアップを作成します。

    これは最後の増分バックアップであり、トランスポートされた表領域を宛先データベースに組み込むために必要なメタデータを含むダンプ・ファイルを含む必要があります。BACKUPコマンドでINCREMENTAL LEVEL 1句を使用して、レベル1の増分バックアップを作成します。

    BACKUPコマンドを使用してクロス・プラットフォーム・トランスポートを実行する場合、DATAPUMP句を使用して増分バックアップとともにデータ・ポンプ・エクスポート・ダンプ・ファイルを作成します。ダンプ・ファイルは、別のバックアップ・セットに作成されます。イメージ・コピーを使用してクロス・プラットフォーム増分バックアップを作成する場合は、データ・ポンプ・エクスポート・ユーティリティを使用して、表領域メタデータを含むダンプ・ファイルを明示的に作成する必要があります。

ソース・ホストで作成したファイルを宛先ホストに転送する

FTP、オペレーティング・システムのコピー・コマンドまたはその他のいくつかのメカニズムを使用して、ソース・データベースで作成したバックアップ・セット、データファイルおよびダンプ・ファイルを宛先ホストに移動します。

表領域をリストアし、宛先データベースに組み込む

このステップでは、宛先データベースで次のタスクを実行します。

  1. クロス・プラットフォームのレベル0の非一貫性バックアップをリストアします。

    このリストア操作では、宛先データベースに外部データファイルのセットが作成されます。これらの外部データファイルには一貫性がなく、宛先データベースに組み込む前にリカバリする必要があります。

    RESTOREコマンドを使用して、クロス・プラットフォームのレベル0非一貫性バックアップをリストアします。バックアップ・セットで構成されるクロス・プラットフォーム非一貫性バックアップをリストアする場合、FROM BACKUPSET句を使用して、レベル0の非一貫性バックアップを含むバックアップ・セットの名前を指定します。

    関連項目:

    クロス・プラットフォームのリストア操作でのRESTOREコマンドの使用方法については、『Oracle Databaseバックアップおよびリカバリ・リファレンス』を参照してください。

  2. 表領域が読取り/書込みモードのときに作成されたクロス・プラットフォームのレベル1増分バックアップを、手順1でリストアした外部データファイルに適用します。

    複数のクロス・プラットフォームのレベル1増分バックアップを作成した場合は、それらの増分バックアップをその作成順に適用する必要があります。RECOVERコマンドを使用して、増分バックアップを適用します。RECOVERコマンドのFOREIGN DATAFILECOPY句には、増分バックアップが適用される必要がある各データファイルをリストする必要があります。FROM BACKPSET句を使用して、リカバリするデータが含まれるバックアップ・セットの名前を指定します。

  3. 表領域が読取り専用モードのときに作成されたクロス・プラットフォームのレベル1増分バックアップを、手順1でリストアした外部データファイルに適用します。

    RECOVERコマンドを使用して、増分バックアップを適用します。RECOVERコマンドのFOREIGN DATAFILECOPY句には、増分バックアップが適用される必要がある各データファイルをリストする必要があります。FROM BACKPSET句を使用して、リカバリするデータが含まれるバックアップ・セットの名前を指定します。

  4. 表領域メタデータを含むバックアップ・セットをリストアします。

    RESTOREコマンドを使用して、クロス・プラットフォーム増分バックアップ中に作成されたダンプ・ファイルを含むバックアップ・セットをリストアします。このバックアップが作成されたとき、表領域は読取り専用モードでした。必要に応じて、DUMP FILE句を使用して宛先データベース内のダンプ・ファイルの名前を指定し、DATAPUMP DESTINATION句を使用してダンプ・ファイルがリストアされるディレクトリを指定できます。これらの句を省略した場合、RMANは構成済のデフォルトを使用します。バックアップ・セットを使用してデータをトランスポートする場合、FROM BACKUPSET句を使用して、ダンプ・ファイルが含まれるバックアップ・セットの名前を指定します。

  5. 表領域メタデータを含むダンプ・ファイルを宛先データベースにインポートします。

    増分バックアップ時に作成されたダンプ・ファイルをインポートするには、データ・ポンプ・インポート・ユーティリティを使用して、リカバリされた表領域を宛先データベースに組み込みます。SYSDBA権限を持つユーザーとして、データ・ポンプ・インポート・ユーティリティを実行する必要があります。

例: バックアップ・セットを使用したクロス・プラットフォーム非一貫性表領域トランスポートの実行

この例では、非一貫性表領域my_tbsを、ソース・データベース(Sun Solarisプラットフォーム上)から宛先データベース(Linux x86 64ビット・プラットフォーム上)に、トランスポートします。

関連項目:

この例の各手順の詳細は、「異なるプラットフォームに非一貫性表領域をトランスポートする手順」を参照してください。

次の手順では、バックアップ・セットを使用して、非一貫性表領域my_tbsをプラットフォーム間でトランスポートできます。

  1. SYSBACKUP権限が付与されたユーザーとして、ソース・データベースに接続します。
    RMAN> CONNECT TARGET "sbu@prod_source AS SYSBACKUP";
    
  2. 異なるプラットフォームへの表領域のトランスポートに必要な前提条件を満たしていることを確認します。
  3. 表領域が読取り/書込みのときに、表領域my_tbsのクロス・プラットフォームのレベル0の非一貫性バックアップを作成します。このバックアップは、/tmp/xplat_backupsディレクトリ内のmy_tbs_incon.bckというバックアップ・セットに格納されます。
    BACKUP
    FOR TRANSPORT
    ALLOW INCONSISTENT
    INCREMENTAL LEVEL 0
    TABLESPACE my_tbs FORMAT '/tmp/xplat_backups/my_tbs_incon.bck';
    

    TO PLATFORMではなくFOR TRANSPORTが使用されているため、このクロス・プラットフォーム・バックアップは任意のプラットフォームでリストアできます。変換は、宛先データベースで実行されます。

  4. 手順2のバックアップ作成後に行われた変更を含む表領域my_tbsの、クロス・プラットフォームのレベル1増分バックアップを作成します。この表領域は、まだ読取り/書込みモードです。この増分バックアップは、/tmp/xplat_backupsディレクトリ内のmy_tbs_incon1.bckに格納されます。
    BACKUP
    FOR TRANSPORT
    ALLOW INCONSISTENT
    INCREMENTAL LEVEL 1
    TABLESPACE my_tbs FORMAT '/tmp/xplat_backups/my_tbs_incon1.bck';
    

    アプリケーションの停止時間を最小限に抑えるため、ソース表領域がまだ読取り/書込みモードの間に、手順2および手順3で作成されたレベル0およびレベル1増分バックアップを宛先データベースでリストアして適用できます。宛先データベースが最後のレベル1増分バックアップにキャッチアップしたら、表領域を読取り専用モードにして最後の増分バックアップを作成できます。

  5. 表領域my_tbsを読取り専用モードにします。
    ALTER TABLESPACE my_tbs READ ONLY;
    
  6. 表領域my_tbsの最後のクロス・プラットフォームのレベル1増分バックアップを作成します。このバックアップには、手順3で作成したバックアップ後にデータベースに対して行われた変更が含まれます。これには、表領域メタデータを含むエクスポート・ダンプ・ファイルが含まれている必要があります。
    BACKUP
    FOR TRANSPORT
    INCREMENTAL LEVEL 1
    TABLESPACE my_tbs
    FORMAT '/tmp/xplat_backups/my_tbs_incr.bck'
    DATAPUMP FORMAT '/tmp/xplat_backups/my_tbs_incr_dp.bck';
    

    増分バックアップは、my_tbs_incr.bckに格納されます。表領域メタデータを含むエクスポート・ダンプ・ファイルは、my_tbs_incr_dp.bckという名前のバックアップ・セットに格納されます。

    次に、この手順で実行したBACKUPコマンドの書式設定された出力を示します。出力は、関連する情報のみが表示されるように編集されています。ダンプ・ファイルがbackup_tts_RDBMS_13462.dmpという名前(オペレーティング・システムによって割り当てられた名前)であること、およびDESTINATION句で指定したディレクトリに格納されていることを確認します。

    Starting backup at 12-SEP-12
    ……
    Performing export of metadata for specified tablespaces...
    EXPDP> Starting "SYS"."TRANSPORT_EXP_RDBMS_zocc":
       .........
       EXPDP>
     ***************************************************************************
       EXPDP> Dump file set for SYS.TRANSPORT_EXP_RDBMS_zocc is:
       EXPDP>   /ade/b/191802369/oracle/backup_tts_RDBMS_13462.dmp
       EXPDP>
     **************************************************************************
      .......
    Export completed
    .......
    ……
    channel ORA_DISK_1: specifying datafile(s) in backup set
    input datafile file number=00006 name=/ade/b/191802369/oracle/dbs/tbs_11.f
    input datafile file number=00007 name=/ade/b/191802369/oracle/dbs/tbs_12.f
    input datafile file number=00020 name=/ade/b/191802369/oracle/dbs/tbs_14.f
    input datafile file number=00010 name=/ade/b/191802369/oracle/dbs/tbs_13.f
    ……
    ……
    Finished backup at 12-SEP-12
    
  7. 手順2、3および5で生成したバックアップ・セットおよびエクスポート・ダンプ・ファイルを、ソース・ホストから、宛先ホストの目的のディレクトリに移動します。

    この例では、すべての必須ファイルが、宛先ホストのディレクトリ/tmp/xplat_restoresに移動されます。

  8. SYSBACKUP権限が付与されたユーザーとして、宛先データベースに接続します。
    RMAN> CONNECT TARGET "sbu@prod_dest AS SYSBACKUP";
    

    sbuは、宛先データベースでSYSBACKUP権限を付与されたユーザーです。

  9. 手順2で作成したクロス・プラットフォームのレベル0の非一貫性バックアップをリストアします。

    FOREIGN DATAFILE句を使用して、リストアする必要があるデータファイルを指定します。FROM PLATFORM句には、バックアップ・セットが作成されたプラットフォームの名前を指定します。この句は、宛先データベースでバックアップを変換するために必要です。

    この例では、番号6、7、20と10のデータファイルが、そのデータファイルに対応するFORMAT句で指定された名前でリストアされます。データファイルの番号は、ソース・データベースで使用されている番号である必要があります。手順2で作成した非一貫性バックアップのRMAN出力からデータファイルの番号を取得できます。

    RESTORE
    FROM PLATFORM 'Solaris[tm] OE (64-bit)'
    FOREIGN DATAFILE 6
    FORMAT '/tmp/aux/mytbs_6.df',
    7
    FORMAT '/tmp/aux/mytbs_7.df',
    20
    FORMAT '/tmp/aux/mytbs_20.df',
    10
    FORMAT '/tmp/aux/mytbs_10.df'
    FROM BACKUPSET '/tmp/xplat_restores/my_tbs_incon.bck';
    
  10. 手順3で作成した最初のクロス・プラットフォームのレベル1増分バックアップを適用することによって、手順8で取得した外部データファイルをリカバリします。
    RECOVER
    FROM PLATFORM 'Solaris[tm] OE (64-bit)'
    FOREIGN DATAFILECOPY '/tmp/aux/mytbs_6.df','/tmp/aux/mytbs_7.df','/tmp/aux/mytbs_20.df','/tmp/aux/mytbs_10.df'
    FROM BACKUPSET '/tmp/xplat_restores/my_tbs_incon1.bck';
    

    この例では、リストアされる外部データファイルに適用される増分バックアップは、/tmp/xplat_restores/my_tbs_incon1.bckに格納されています。

  11. 手順5で作成した最後のクロス・プラットフォームのレベル1増分バックアップを適用することによって、手順8で取得した外部データファイルをリカバリします。このバックアップは、表領域を読取り専用モードにして作成されました。
    RECOVER
    FROM PLATFORM 'Solaris[tm] OE (64-bit)'
    FOREIGN DATAFILECOPY '/tmp/aux/mytbs_6.df','/tmp/aux/mytbs_7.df','/tmp/aux/mytbs_20.df','/tmp/aux/mytbs_10.df'
    FROM BACKUPSET '/tmp/xplat_restores/my_tbs_incr.bck';
    

    この例では、リストアされる外部データファイルに適用される増分バックアップは、/tmp/xplat_restores/my_tbs_incr.bckに格納されています。

  12. エクスポート・ダンプ・ファイルを含むバックアップ・セットをリストアします。このダンプ・ファイルには、表領域を宛先データベースに組み込むために必要な表領域メタデータが含まれます。
    RESTORE
    FROM PLATFORM 'Solaris[tm] OE (64-bit)'
    DUMP FILE 'my_tbs_restore_md.dmp'
    DATAPUMP DESTINATION '/tmp/dump'
    FROM BACKUPSET '/tmp/xplat_restores/my_tbs_incr_dp.bck';
    

    この例では、ダンプ・ファイルはディレクトリ/tmp/dump内のmy_tbs_restore_md.dmpと呼ばれるファイルにリストアされます。ダンプ・ファイル名およびDATAPUMP DESTINATION句を省略すると、RMANではこれらのパラメータに対してオペレーティング・システム・デフォルトを使用できます。

  13. 表領域を宛先データベースに組み込みます。データ・ポンプ・インポート・ユーティリティを使用して、表領域メタデータを含むダンプ・ファイルを宛先データベースにインポートします。
    # impdp directory=dp_dir dumpfile=backup_tts_RDBMS_13462.dmp transport_datafiles='/tmp/aux/mytbs_6.df','/tmp/aux/mytbs_7.df','/tmp/aux/mytbs_20.df','/tmp/aux/mytbs_10.df' nologfile=Y
    

    ユーザー名およびパスワードの入力が求められたら、SYSユーザーの資格証明を入力します。この例では、dp_dirは、CREATE DIRECTORYコマンドを使用して作成され、/tmpディレクトリにマップされるディレクトリ・オブジェクトです。

CDBおよびPDBのクロス・プラットフォーム・データ・トランスポートの実行

RMANは、マルチテナント環境でのプラットフォーム間のデータ・トランスポートをサポートしています。マルチテナント・コンテナ・データベース(CDB)全体、rootのみ、または1つ以上のプラガブル・データベース(PDB)をプラットフォーム間でトランスポートできます。クロス・プラットフォーム・トランスポートは、イメージ・コピーまたはバックアップ・セットを使用して実行できます。この章に示す情報は、以降の項で説明する相違点を除いて、CDBおよびPDBに当てはまります。

この項の内容は、次のとおりです。

CDB全体のクロス・プラットフォーム・トランスポートの実行

CDBでは、プラットフォーム間でデータをトランスポートするための手順は、非CDBでの手順と同様です。唯一の違いは、ソース・データベースおよび宛先データベースの両方で、共通のSYSBACKUPまたはSYSDBA権限を持つ共通ユーザーとしてrootに接続する必要があるということです。

CDB全体をトランスポートするには、ソース・プラットフォームと宛先プラットフォームが同じエンディアン形式を使用している必要があります。

BACKUP FOR TRANSPORTまたはBACKUP TO PLATFORMコマンドを使用すると、CDB全体のクロス・プラットフォーム・バックアップが作成されます。CONVERTコマンドは、異なるプラットフォームにトランスポートできるCDBのイメージ・コピーを作成します。

rootに接続した場合、次のコマンドを使用すると、CDB全体のクロス・プラットフォーム・バックアップが作成されます。

BACKUP
TO PLATFORM 'Linux x86 64-bit'
DATABASE FORMAT '/tmp/backups/cdb_%U;

クロス・プラットフォーム・バックアップを宛先データベースにリストアする際に、RESTORE DATABASEコマンドはCDB全体をリストアします。

PDBのクロス・プラットフォーム・トランスポートの実行

PDB全体を異なるプラットフォームにトランスポートするには、ソース・プラットフォームと宛先プラットフォームが同じエンディアン形式を使用している必要があります。

次の方法のいずれかを使用して、PDBをプラットフォーム間でトランスポートします。

  • rootに接続し、BACKUP FOR TRANSPORT ... PLUGGABLE DATABASEまたはBACKUP TO PLATFORM ... PLUGGABLE DATABASEコマンドを使用して、1つ以上のPDBのクロス・プラットフォーム・バックアップを作成します。

    rootに接続しているときに、次のコマンドで、PDB hr_pdbおよびsales_pdbのクロス・プラットフォーム・バックアップが作成されます。クロス・プラットフォーム・バックアップを作成する前に、PDBを読取り専用モードにする必要があります。

    BACKUP FOR TRANSPORT
    PLUGGABLE DATABASE hr_pdb, sales_pdb FORMAT '/tmp/backups/pdb_%U';
    
  • PDBに接続し、BACKUP FOR TRANSPORTまたはBACKUP TO PLATFORMコマンドを使用して、PDBデータを別のプラットフォームにトランスポートするために使用できるバックアップ・セットを作成します。

注意:

CONVERTコマンドを使用して1つ以上のPDBのクロス・プラットフォーム・データ・トランスポートを行うことは、サポートされていません。

PDBの表領域のクラス・プラットフォーム・トランスポートの実行

RMANでは、CONVERTまたはBACKUPコマンドのいずれかを使用することで、PDBに含まれるユーザー表領域を異なるプラットフォームにトランスポートできます。この場合は、ソース・プラットフォームと宛先プラットフォームで、異なるエンディアン形式を使用できます。

次の方法のいずれかを使用して、PDBの表領域をトランスポートします。

  • TARGETとしてPDBに接続し、BACKUP TABLESPACEコマンドを使用して、選択した表領域のクロス・プラットフォーム・バックアップを作成します。

    「バックアップ・セットを使用して異なるプラットフォームに読取り専用表領域をトランスポートする手順」を参照してください。

  • TARGETとしてPDBに接続し、CONVERT TABLESPACEコマンドを使用して、読取り専用表領域をトランスポートします。

    PDBへの接続時、次のコマンドは、読取り専用表領域my_tbsを変換します。

    CONVERT TABLESPACE my_tbs
        TO PLATFORM 'Solaris[tm] OE (64-bit)'
        FORMAT '/tmp/xplat_backups/my_tbs_%U.bck';
    
  • TARGETとしてPDBに接続し、CONVERT DATAFILEコマンドを使用します。

    PDBへの接続時、次のコマンドは、データファイルsales.dfを変換します。

    CONVERT
        FROM PLATFORM 'Solaris[tm] OE (64-bit)'
        DATAFILE '/u01/app/oracle/oradata/orcl/sales.df'
        FORMAT '/tmp/xplat_backups/sales_df_solaris.dat'
    

ただし、TARGETとしてPDBに接続している場合、CONVERT DATAFILEコマンドを使用してUNDOセグメントが含まれる表領域を変換することはできません。

例: PDBの表領域のトランスポート

この例ではCONVERTコマンドを使用して、PDB pdb5から宛先PDB pdb3に、表領域sales_tbsをトランスポートしました。ソースPDBはSun Solarisプラットフォーム上、宛先PDBはLinux x86 64ビット・プラットフォーム上にあります。

  1. 必須の前提条件が満たされていることを確認します。

    関連項目:

  2. SQL*Plusを開始し、SYSDBAまたはSYSBACKUP権限を付与されたユーザーとしてソースPDBに接続します。

    この例では、sbuは、ソースPDB pdb5SYSBACKUP権限が付与されているユーザーです。

    % sqlplus sbu@pdb5 AS SYSBACKUP
    
  3. V$TRANSPORTABLE_PLATFORMビューで宛先プラットフォームの名前を問い合せます。

    この例では、宛先プラットフォームのプラットフォーム名は、Linux x86 64-bitです。

  4. トランスポートされる表領域が自己完結型であることを確認します。

    関連項目:

    表領域が自己完結型かどうかの判定の詳細は、『Oracle Database管理者ガイド』を参照してください

  5. トランスポートする表領域を読取り専用モードに設定します。
    SQL> ALTER TABLESPACE sales_tbs READ ONLY;
    
  6. データ・ポンプ・エクスポートおよびインポート・ユーティリティによって生成されるファイルの格納に使用されるディレクトリ・オブジェクトを作成します。
    SQL> CREATE OR REPLACE DIRECTORY xtt_dir AS '/scratch/xtt';
    Directory created.
    
  7. RMANを開始し、SYSDBAまたはSYSBACKUP権限を持つユーザーとしてソースPDBに接続します。

    次の例では、RMANを起動し、SYSBACKUP権限を付与されたsbuユーザーとしてソースPDB pdb5に接続します。

    % rman
    RMAN> CONNECT TARGET "sbu@pdb5 as sysbackup"
    
  8. CONVERTコマンドを使用して、ソース・データベースで表領域を変換します。

    次のコマンドは、表領域sales_tbsを宛先プラットフォームLinux x86 64ビットに変換します。変換されたデータファイルは、/tmp/xplat_convert/sales_tbs_conv.bckに格納されます。

    RMAN> CONVERT TABLESPACE 'SALES_TBS'
    TO PLATFORM 'Linux x86 64-bit'
    FORMAT  '/tmp/xplat_convert/sales_tbs_conv.bck';
    
  9. RMANを終了します。
  10. ソース・データベースで、データ・ポンプ・エクスポート・ユーティリティを使用して、表領域sales_tbsのメタデータが含まれるエクスポート・ダンプ・ファイルを作成します。SYSユーザーの資格証明を使用してエクスポートを実行します。

    次のコマンドは、sales_tbs_conv.dmpというエクスポート・ダンプ・ファイルを、ディレクトリ・オブジェクトxtt_dirで指定された位置に作成します。エクスポートを実行するために使用される資格証明は、SYSユーザーのものです。

    # expdp "'"sys@pdb5 as sysdba"'" directory=xtt_dir dumpfile=sales_tbs_conv.dmp logfile=sales_tbs_conv.log transport_tablespaces=sales_tbs
    
  11. 手順8で作成した変換済データファイルと、手順10で作成したエクスポート・ダンプ・ファイルを、宛先PDBにコピーします。ファイルをコピーするには、オペレーティング・システムのコマンドを使用できます。
  12. 宛先PDBで、データ・ポンプ・インポート・ユーティリティを使用して、表領域をPDBに接続します。SYSユーザーの資格証明を使用してインポートを実行します。

    次の例では、エクスポート・ダンプ・ファイルsales_tbs_conv.dmpに含まれているメタデータおよび/tmp/xplat_convert/sales_tbs_conv.bckの変換済データファイルを、PDB pdb3にインポートします。

    #impdp "'"sys@pdb3 as sysdba"'" directory=xtt_dir dumpfile=sales_tbs_conv.dmp datafiles=/tmp/xplat_convert/sales_tbs_conv.bck
    
  13. SQL*Plusを開始し、SYSDBAまたはSYSBACKUP権限を持つユーザーとして宛先PDBに接続します。

    次のコマンドは、SYSBACKUP権限を付与されたsbuユーザーとしてPDB pdb3に接続します。

    %sqlplus sbu@pdb3 as sysbackup
    
  14. 宛先PDBで、変換された表領域の状態を検証します。

    次の問合せでは、表領域sales_tbsの状態が判定されます。

    SQL> SELECT status FROM dba_tablespaces
         WHERE tablespace_name LIKE 'SALES_TBS';
    
    STATUS
    ---------
    READ ONLY
    
  15. 宛先PDB pdb3の表領域sales_tbsをオンラインにします。
    SQL> ALTER TABLESPACE sales_tbs READ WRITE;