| Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド 11g リリース1(11.1) E05700-03 |
|
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を使用して、ファイル名でデータファイルを指定する必要があります。
データベース全体を異なるプラットフォームに変換するには、両方のプラットフォームで同じエンディアン形式が使用されている必要があります。Recovery ManagerのCONVERT DATABASEコマンドを使用すると、ソース・プラットフォームから転送先プラットフォームへのデータベース全体の移動を自動化できます。転送されたデータベースには、ソース・データベースと同じデータおよび(いくつかの例外を除いて)ソース・データベースと同じ設定が含まれています。
転送先プラットフォームに自動的に転送されるファイルを次に示します。
プラットフォーム間での表領域の転送とは異なり、データベース全体を転送する場合は、転送先プラットフォームとの互換性が維持されるように、特定の形式のブロック(UNDOセグメント内のブロックなど)を再フォーマットする必要があります。ソース・プラットフォームと転送先プラットフォームのエンディアン形式が同じである場合でも、トランスポータブル・データベースのデータファイルは変換する必要があります。表領域を転送する場合のように、あるプラットフォームから別のプラットフォームにデータファイルを単純にコピーすることはできません。
データベースでテキストベースの初期化パラメータ・ファイルが使用されている場合、Recovery Managerはそのファイルを転送します。データベースでサーバー・パラメータ・ファイルが使用されている場合、Recovery Managerは、そのサーバー・パラメータ・ファイルに基づいて初期化パラメータ・ファイルを生成し、転送します。次に、初期化パラメータ・ファイルの設定に基づいて、転送先で新しいサーバー・パラメータ・ファイルを作成します。
ほとんどの場合、初期化パラメータ・ファイルの一部のパラメータを新しいデータベース用に手動で更新する必要があります。たとえば、DB_NAME、および転送先ホスト上のファイルの場所を示すCONTROL_FILESなどのパラメータを変更する場合があります。
ソース・プラットフォームまたは転送先プラットフォームのいずれかのデータファイルの形式を変換できます。CONVERT DATABASEコマンド自体では、データファイルの形式は変換されません。かわりに、変換を実行するために手動で実行できるスクリプトが生成されます。CONVERT SCRIPTパラメータを指定すると、変換スクリプトが作成されます。このスクリプトを転送先ホストで手動で実行すると、データファイルのコピーをバッチ・モードで変換できます。TRANSPORT SCRIPTパラメータを指定すると、転送スクリプトが生成されます。このスクリプトには、転送先プラットフォーム上に新しいデータベースを作成するSQL文が含まれています。
CONVERTの前提条件のリストについては、『Oracle Databaseバックアップおよびリカバリ・リファレンス』を参照してください。この項の手順を実行する前に、これらのすべての前提条件を満たしてください。
わかりやすくするため、Sun Solarisホスト上で実行されているソース・データベースprod_sourceから、表領域financeおよびhrを転送する必要があると想定します。Linux PC上で実行されている転送先データベースprod_destに、これらの表領域を転送することを計画します。ソース・ホスト上の一時ディレクトリ/tmp/transport_linux/に、変換済データファイルを格納することを計画しています。
prod_sourceに接続します。
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)です。
ALTER TABLESPACE finance READ ONLY; ALTER TABLESPACE hr READ ONLY;
CONVERTにFORMATまたはDB_FILE_NAME_CONVERT引数を指定して、出力ファイルの名前を制御します。次に、優先順位の高い順に規則を示します。
% rman RMAN> CONNECT TARGET SYS@prod_source
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バックアップおよびリカバリ・リファレンス』を参照してください。この項の手順を実行する前に、これらの前提条件を満たしてください。
データファイルの変換では、出力ファイルの名前を指定する方法を選択する必要があります。CONVERTにFORMAT引数またはDB_FILE_NAME_CONVERT引数を指定して、出力ファイルの名前を指定する方法を制御します。次に、優先順位の高い順に規則を示します。
CONVERT ...DB_FILE_NAME_CONVERT句のパターンに一致するファイルは、そのパターンに基づいて名前が指定されます。
FORMAT句を指定すると、CONVERT ...DB_FILE_NAME_CONVERT句のパターンに基づいて名前が指定されていないすべてのファイルに対して、FORMAT句に基づいて名前が指定されます。ソース・プラットフォームおよび転送先プラットフォームが異なる場合は、FROM PLATFORMパラメータを指定する必要があります。V$TRANSPORTABLE_PLATFORMを問い合せて、プラットフォームの名前を確認します。エラーを回避するには、FROM_PLATFORMの値が、変換するデータファイルの形式と一致している必要があります。FROM PLATFORMを指定しない場合、このパラメータはデフォルトで転送先プラットフォームの値になります。
この項では、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ディレクトリに格納されます。
prod_sourceに接続します。
V$TRANSPORTABLE_PLATFORMでソース・プラットフォームの名前を問い合せます。データベースには、クロス・プラットフォームのデータ転送をサポートする各プラットフォームの固有な内部名のリストが存在します。CONVERTコマンドのパラメータとして、ソース・プラットフォームまたは転送先プラットフォームの正確な名前が必要な場合があります。たとえば、次のように入力すると、接続したデータベースのプラットフォーム名を取得できます。
SELECT PLATFORM_NAME FROM V$TRANSPORTABLE_PLATFORM WHERE PLATFORM_ID = ( SELECT PLATFORM_ID FROM V$DATABASE );
この例では、ソース・ホストのPLATFORM_NAMEはSolaris[tm] OE (64-bit)であると想定しています。
たとえば、financeおよびhrを読取り専用モードに設定するには、次のSQL文を入力します。
ALTER TABLESPACE finance READ ONLY; ALTER TABLESPACE hr READ ONLY;
この例では、ダンプ・ファイルはexpdat.dmpという名前になります。
NFSを使用して、ダンプ・ファイルおよび現行のデータベース・ファイル(コピーは対象外)をアクセス可能にします。また、オペレーティング・システム・ユーティリティを使用して、これらのファイルを転送先ホストにコピーすることもできます。
この例では、転送先ホストの/tmp/transport_solaris/ディレクトリにファイルを格納します。ファイルの元の場所からのサブディレクトリ構造を保持します。つまり、データファイルは次の場所に格納されます。
TARGETとして(ソース・データベースではなく)転送先データベースに接続します。たとえば、次のコマンドを入力します。
% rman RMAN> CONNECT TARGET SYS@prod_dest
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/ディレクトリに一連の変換済データファイルが格納されます。これらのファイルの名前は次のとおりです。
「クロス・プラットフォーム・データ転送の基本的な概念」で説明されているように、Recovery ManagerのCONVERT DATABASEコマンドを使用すると、あるプラットフォームから別のプラットフォームへのデータベース全体のコピーを自動化できます。
データベースを変換する前に、CONVERT DATABASEの前提条件のリストについて『Oracle Databaseバックアップおよびリカバリ・リファレンス』を参照してください。たとえば、ソース・プラットフォームと転送先プラットフォームでは同じエンディアン形式を使用する必要があります。この項の手順を試行する前に、これらのすべての前提条件を満たしてください。
クロス・プラットフォーム・トランスポータブル・データベースの主な前提条件は、ソース・プラットフォームと転送先プラットフォームのエンディアン形式が同じである必要があるということです。たとえば、Microsoft WindowsからLinux for x86(両方ともリトル・エンディアン)またはHP-UXからAIX(両方ともビッグ・エンディアン)にデータベースを転送することはできますが、HP-UXからLinux for x86にデータベース全体を転送することはできません。
SYSDBAとしてSQL*Plusセッションを開始します。
ALTER DATABASE OPEN READ ONLY;
たとえば、次のSQL*Plusコマンドを入力します。
SET SERVEROUTPUT ON
DBMS_TDB.CHECK_DBファンクションを実行します。このチェックを実行すると、データベースの転送を妨げる条件がないことが確認されます。転送を妨げる条件には、不適切な互換性設定、インダウト・トランザクションやアクティブ・トランザクション、ソース・プラットフォームと転送先プラットフォーム間の互換性のないエンディアン形式などがあります。
CHECK_DBを引数指定せずにコールすると、ソース・データベースに転送を妨げる条件があるかどうかを確認できます。このファンクションは、表25-1に示す引数を指定してコールすることもできます。
例25-1では、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が戻された場合は、この時点でデータベースを転送できません。次の手順に進みます。
DBMS_TDBのドキュメントを参照してください。
DBMS_TDB.CHECK_EXTERNALを実行して、すべての外部表、ディレクトリまたはBFILEを識別します。Recovery Managerは、これらのファイルの転送を自動化できません。したがって、ファイルを手動でコピーしてデータベースのディレクトリを再作成する必要があります。例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上で実行されるデータベースに変換するとします。
ALTER DATABASE OPEN READ ONLY;
TARGETとしてソース・データベースに接続します。たとえば、次のコマンドを入力します。
% rman RMAN> CONNECT TARGET SYS@source_db
CONVERT DATABASEコマンドを実行します。例25-3に、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 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
CONVERT DATABASEの完了後、ソース・データベースを読取り/書込みで再度オープンできます。
CONVERT DATABASEで生成されたデータファイルを転送先ホスト上の目的の場所に移動します。例25-3では、このコマンドによって、ソース・ホストの/tmp/convertdb/ディレクトリにファイルが作成されます。転送先データベースのファイルが格納される転送先ホストのディレクトリに、これらのファイルを移動します。
初期化パラメータ・ファイルの先頭のいくつかのエントリは、データベースを転送先プラットフォームに移動する際に編集する必要があります。たとえば、初期化パラメータ・ファイルは次のような内容になっている場合があります。
# 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"
例25-3では、転送スクリプトの名前は/tmp/convertdb/transportscript.sqlです。データベースを実際に作成するには、転送先ホストでこのスクリプトを実行します。したがって、データファイルの正しい名前を使用してこのスクリプトを編集する必要があります。
SYSDBAとして転送先データベース・インスタンスに接続します。たとえば、次のように接続します。
SQL> CONNECT / AS SYSDBA
オペレーティング・システム認証を使用しない場合は、まず、Oracle Netファイルを構成してパスワード・ファイルを作成し、リスナーを起動する必要があります。その後、ネット・サービス名を使用してインスタンスに接続できます。
SQL> @transportscript
転送スクリプトが終了すると、新しいデータベースの作成が完了します。
この項では、CONVERT DATABASEのすべての前提条件をすでに満たし、「クロス・プラットフォーム・データベース変換の前のデータベースの確認」の手順を実行済であると想定しています。この手順の目的は、クロス・プラットフォーム・データベース転送の一部として、転送先ホスト上のデータファイルの形式を変換することです。
データファイルの変換には、次のフェーズがあります。
この手順では、ソース・ホスト上でCONVERT DATABASEコマンドを実行します。このコマンドによって、初期化パラメータ・ファイル、および転送先ホストで使用するために編集可能なスクリプトが生成されます。また、変換前のデータファイルをソース・ホストから転送先ホストにコピーします。
TARGETとしてソース・データベースに接続します。 たとえば、次のコマンドを入力します。
% rman RMAN> CONNECT TARGET SYS@source_db
CONVERT DATABASE ON DESTINATIONコマンドを実行します。例25-4に、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 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を含む変換スクリプトが作成されます。
この項では、前の項で作成したスクリプトを使用して、転送先ホストのデータファイルを変換する方法について説明します。
前の項で作成した変換スクリプトでは、ソース・データベース・ファイルの元のデータファイル名を使用します。FORMATパラメータによって、CONVERT DATABASEのFORMATまたはDB_FILE_NAME_CONVERTパラメータを使用して生成される名前を指定します。
同じパス名を使用して転送先ホストからソース・データベースのデータファイルにアクセス可能な場合、変換スクリプトは、ソース・データベースが読取り専用であるかぎり、変更せずに転送先ホストで実行できます。たとえば、ソース・ホストおよび転送先ホストの両方でNFSを使用してソース・データファイルを含むディスクがマウントされており、両方のホストのマウント・ポイントが/fs1/dbs/である場合、編集は必要ありません。
変換スクリプトでは、変換するデータファイルごとに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パラメータを編集し、転送済データベースのデータファイルの任意の最終格納場所を指定します。
初期化パラメータ・ファイルの先頭のいくつかのエントリは、データベースを転送先プラットフォームに移動する前に編集する必要があります。たとえば、初期化パラメータ・ファイルは次のような内容になっている場合があります。
# 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"
NOMOUNTモードで起動します。前の手順でコピーした初期化パラメータ・ファイルを指定します。たとえば、次のコマンドを入力します。
SQL> STARTUP NOMOUNT PFILE='/tmp/init_convertdb_00i2gj63_1_0.ora'
TARGETとして(ソース・データベースではなく)転送先データベースに接続します。たとえば、次のコマンドを入力します。
% rman RMAN> CONNECT TARGET SYS@prod_dest
RMAN> @/tmp/convertdb/convertscript-target
実行する必要がある転送スクリプトにSTARTUP NOMOUNTコマンドがすでに含まれているため、この手順が必要となります。
例25-3では、転送スクリプトは/tmp/convertdb/transportscript.sqlです。データベースを作成するには、転送先ホストでこのスクリプトを実行します。したがって、データファイルの正しい名前を使用してこのスクリプトを編集する必要があります。
たとえば、次のように入力して転送先ホスト上に新しいデータベースを作成します。
SQL> @/tmp/convertdb/transportscript
転送スクリプトが終了すると、転送先データベースが作成されます。
|
![]() Copyright © 2003, 2008, Oracle Corporation. All Rights Reserved. |
|