ヘッダーをスキップ

Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド
11g リリース1(11.1)

E05700-03
目次
目次
索引
索引

戻る 次へ

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

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

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

クロス・プラットフォーム・データ転送の概要

この項では、プラットフォーム間で表領域およびデータベースを転送する場合の基本的な概念およびタスクについて説明します。

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

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

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

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

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

クロス・プラットフォーム・データ転送の基本的な概念

ソース・プラットフォーム転送先プラットフォームが異なり、そのエンディアン形式も異なる場合は、トランスポータブル表領域の操作でRecovery ManagerのCONVERTコマンドを使用する必要があります。エンディアン形式が同じプラットフォーム間での転送では、CONVERTを使用する必要はありません。オペレーティング・システム・ユーティリティを使用して、ソースから転送先にファイルをコピーできます。

表領域およびデータファイルの変換

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

転送先ホストではCONVERT DATAFILEコマンドを使用してファイルを変換できますが、ソース・ホストでは変換できません。データ・ポンプ・エクスポート・ユーティリティでは、エクスポート・ダンプ・ファイルが生成されます。このファイルは、転送先ホストに手動でコピーされたデータファイルとともに、転送先データベースにインポートできます。データファイルが転送先データベースに転送されるまで、それらのデータファイルはデータベース内の表領域名に関連付けられません。この場合、Recovery Managerは、表領域名を一連のデータファイルに変換できません。このため、CONVERT DATAFILEを使用して、ファイル名でデータファイルを指定する必要があります。


注意:

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


データベースの変換

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

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

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

ソース・ホストでのクロス・プラットフォーム表領域変換の実行

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で転送先プラットフォームの名前を問い合せます。

    データベースには、クロス・プラットフォームのデータ転送をサポートする各プラットフォームの固有な内部名のリストが存在します。CONVERTコマンドのパラメータとして、ソース・プラットフォームまたは転送先プラットフォームの正確な名前が必要な場合があります。V$TRANSPORTABLE_PLATFORMを問い合せて、プラットフォームの名前を取得します。次の例では、Linuxプラットフォームの名前を問い合せます。

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

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

  3. 転送する表領域を読取り専用モードに設定します。たとえば、次のように入力します。

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

    CONVERTFORMATまたはDB_FILE_NAME_CONVERT引数を指定して、出力ファイルの名前を制御します。次に、優先順位の高い順に規則を示します。

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

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

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

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

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

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

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

    参照:

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

  7. 表領域を転送する場合の一般的な手順の残りの手順を実行します。

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

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

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

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

ソース・ホストでのクロス・プラットフォーム・データファイル変換の実行

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

転送先ホストでのクロス・プラットフォーム・データファイル変換

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

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

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


    注意:

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


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

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でソース・プラットフォームの名前を問い合せます。

    データベースには、クロス・プラットフォームのデータ転送をサポートする各プラットフォームの固有な内部名のリストが存在します。CONVERTコマンドのパラメータとして、ソース・プラットフォームまたは転送先プラットフォームの正確な名前が必要な場合があります。たとえば、次のように入力すると、接続したデータベースのプラットフォーム名を取得できます。

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

    この例では、ソース・ホストの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. Recovery Managerを起動し、TARGETとして(ソース・データベースではなく)転送先データベースに接続します。たとえば、次のコマンドを入力します。

    % rman
    RMAN> CONNECT TARGET SYS@prod_dest
    
    
  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. 必要に応じて、転送された表領域を読取り専用モードに設定します。

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

「クロス・プラットフォーム・データ転送の基本的な概念」で説明されているように、Recovery ManagerのCONVERT DATABASEコマンドを使用すると、あるプラットフォームから別のプラットフォームへのデータベース全体のコピーを自動化できます。

データベースを変換する前に、CONVERT DATABASEの前提条件のリストについて『Oracle Databaseバックアップおよびリカバリ・リファレンス』を参照してください。たとえば、ソース・プラットフォームと転送先プラットフォームでは同じエンディアン形式を使用する必要があります。この項の手順を試行する前に、これらのすべての前提条件を満たしてください。

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


注意:

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


データベースの変換を準備する手順
  1. ソース・データベースで、SYSDBAとしてSQL*Plusセッションを開始します。

  2. データベースを読取り専用モードでオープンします。

    ALTER DATABASE OPEN READ ONLY;
    
    
  3. SQL*Plusでサーバー出力が有効になっていることを確認します。

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

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

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

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

    表25-1    CHECK_DBプロシージャのパラメータ 
    パラメータ  説明 

    target_platform_name 

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

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

    skip_option 

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

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

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

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

     

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

    例25-1    DBMS_TDB.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. 出力を調べてデータベースを転送できない理由を確認し、可能な場合は問題を解決してから、前の手順に戻ります。該当する条件については、DBMS_TDBのドキュメントを参照してください。

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

    例25-2に、DBMS_TDB.CHECK_EXTERNALのコール方法を示します。

    例25-2    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.
    

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

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

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

ソース・プラットフォーム上のデータベースを変換する手順
  1. ソース・データベースを読取り専用モードでオープンします。

    ALTER DATABASE OPEN READ ONLY;
    
    
  2. Recovery Managerを起動し、TARGETとしてソース・データベースに接続します。たとえば、次のコマンドを入力します。

    % rman
    RMAN> CONNECT TARGET SYS@source_db
    
    
  3. CONVERT DATABASEコマンドを実行します。

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

    例25-3    ソース・ホスト上のデータベースの変換

    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 convert at 25-NOV-06
    using channel ORA_DISK_1
     
    External table SH.SALES_TRANSACTIONS_EXT found in the database
     
    Directory SYS.DATA_PUMP_DIR found in the database
    Directory SYS.MEDIA_DIR found in the database
    Directory SYS.DATA_FILE_DIR 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 OPER with SYSDBA 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
    Run SQL script /tmp/convertdb/transportscript.sql on the destination platform 
      to create database
    Edit init.ora file init_00gb3vfv_1_0.ora. This PFILE will be used to 
      create the database on the destination platform
    To recompile all PL/SQL modules, run utlirp.sql and utlrp.sql on 
      the destination platform
    To change the internal database identifier, use DBNEWID Utility
    Finished backup at 25-NOV-06
    
    
  4. CONVERT DATABASEの完了後、ソース・データベースを読取り/書込みで再度オープンできます。

  5. CONVERT DATABASEで生成されたデータファイルを転送先ホスト上の目的の場所に移動します。

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

  6. データファイルのパスが転送先ホスト上でのパスと異なる場合は、データファイルの新しい場所が参照されるように転送スクリプトを編集します。

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

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

    # 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.regress.rdbms.dev.us.oracle.com"
     plsql_native_library_dir = "/tmp/convertdb/plsqlnld1"
     db_name                  = "NEWDBT"
    
    
  8. 必要に応じて、変換されたデータファイルの新しい名前を使用するように転送スクリプトを編集します。

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

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

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

    SQL> CONNECT / AS SYSDBA
    
    

    オペレーティング・システム認証を使用しない場合は、まず、Oracle Netファイルを構成してパスワード・ファイルを作成し、リスナーを起動する必要があります。その後、ネット・サービス名を使用してインスタンスに接続できます。

  10. SQL*Plusで転送スクリプトを実行し、転送先ホスト上に新しいデータベースを作成します。

    SQL> @transportscript
    
    

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

データベースを転送する場合の転送先ホストでのデータファイルの変換

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

データファイルの変換には、次のフェーズがあります。

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

  2. 転送先ホストでのデータファイルの変換

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

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

ソース・ホストでデータファイル初期変換を実行する手順
  1. データベースが読取り専用モードでオープンしていることを確認します。

  2. Recovery Managerを起動し、TARGETとしてソース・データベースに接続します。

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

    % rman
    RMAN> CONNECT TARGET SYS@source_db
    
    
  3. CONVERT DATABASE ON DESTINATIONコマンドを実行します。

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

    例25-4    CONVERT DATABASE ON DESTINATION PLATFORMの実行

    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 convert at 28-JAN-05
    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.DATA_PUMP_DIR found in the database
    Directory SYS.MEDIA_DIR found in the database
    Directory SYS.DATA_FILE_DIR 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 OPER with SYSDBA 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
    Run SQL script /tmp/convertdb/transportscript-target on the destination platform to 
    create database
    Edit init.ora file /tmp/convertdb/init_00gb9u2s_1_0.ora. This PFILE will be used to 
    create the database on the destination platform
    Run RMAN script /tmp/convertdb/convertscript-target on destination platform to convert 
    datafiles
    To recompile all PL/SQL modules, run utlirp.sql and utlrp.sql on the destination 
    platform
    To change the internal database identifier, use DBNEWID Utility
    Finished backup at 28-JAN-05
    
    

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


    注意:

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


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

    • 変換するデータファイル

    • 変換スクリプト

    • 転送スクリプト

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

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

転送先ホストでのデータファイルの変換

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

前の項で作成した変換スクリプトでは、ソース・データベース・ファイルの元のデータファイル名を使用します。FORMATパラメータによって、CONVERT DATABASEFORMATまたは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.regress.rdbms.dev.us.oracle.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. Recovery Managerを起動し、TARGETとして(ソース・データベースではなく)転送先データベースに接続します。たとえば、次のコマンドを入力します。

    % rman
    RMAN> CONNECT TARGET SYS@prod_dest
    
  5. Recovery Managerプロンプトで、変換スクリプトを実行します。たとえば、次のコマンドを入力します。

    RMAN> @/tmp/convertdb/convertscript-target
    
  6. データベース・インスタンスを停止します。

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

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

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

  8. SQL*Plusで転送スクリプトを実行します。

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

    SQL> @/tmp/convertdb/transportscript
    
    

転送スクリプトが終了すると、転送先データベースが作成されます。


戻る 次へ
Oracle
Copyright © 2003, 2008, Oracle Corporation.

All Rights Reserved.
目次
目次
索引
索引