ヘッダーをスキップ
Oracle® Databaseバックアップおよびリカバリ・リファレンス
11gリリース2(11.2)
B56270-05
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

CONVERT

用途

CONVERTコマンドを使用すると、異なるプラットフォーム間でのトランスポートの準備として、表領域、データファイルまたはデータベースをトランスポート先プラットフォームの形式に変換できます。

Oracle Database 10g以上のリリースでは、次の場合にCONVERT DATAFILEまたはCONVERT TABLESPACEが必要です。

  • V$TRANSPORTABLE_PLATFORM.ENDIAN_FORMATの値が異なるプラットフォーム間でのデータファイルをトランスポートする場合。

  • ENDIAN_FORMATが同じどうかにかかわらず、プラットフォーム間でUNDOセグメントを持つ表領域(通常は、SYSTEM表領域とUNDO表領域、およびロールバック・セグメントを持つ表領域)をトランスポートする場合。通常、SYSTEM表領域とUNDO表領域が変換されるのは、データベース全体を変換するときのみです。

  • その他のプラットフォーム固有のデータファイルで、追加のデータファイル変換が必要な場合(hp Tru64オペレーティング・システムとの間の変換など)。

CONVERTを使用するのは、ASMに格納されているデータベースに表領域をトランスポートするような場合です。Linuxのcp、WindowsのCOPYなどのオペレーティング・システムのネイティブ・コマンドでは、ASMディスク・グループの読み書きができません。


関連項目:

CONVERT DATAFILECONVERT TABLESPACEおよびCONVERT DATABASEの使用方法の詳細は、『Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド』を参照してください。

前提条件

プラットフォームが、CONVERTコマンドでサポートされている必要があります。サポートされているプラットフォームは、V$TRANSPORTABLE_PLATFORMを問い合せて確認します。プラットフォーム間の表領域トランスポートは、ソースとトランスポート先プラットフォームの両方がこのビューに含まれている場合にのみサポートされます。

ソース・データベースおよびトランスポート先データベースの両方とも、初期化パラメータCOMPATIBLEが10.0以上に設定されて実行されている必要があります。次の互換性の前提条件に注意してください。

  • COMPATIBLEの設定が11.0.0未満の場合、読取り専用の表領域またはトランスポートされた既存の表領域は、1回以上読み書き両用にされていなければ、別のプラットフォームにトランスポートできません。表領域は、読み書き両用でオープンした後、すぐに読取り専用に戻すことができます。

  • COMPATIBLEが11.0.0以上の場合、読み書き両用の表領域に関する前述の制限は適用されません。ただし、トランスポートされた既存の表領域は、トランスポート前にCOMPATIBLEが10.0に設定され読み書き両用にされた10.0の形式である必要があります。

CONVERT TABLESPACEの前提条件

CONVERT TABLESPACEは、ソース・データベースにTARGETとして接続し、ソース・プラットフォームで表領域を変換する場合にのみ使用できます。

ソース・データベースはマウントまたはオープン状態である必要があります。変換する表領域は、変換時に読取り専用である必要があります。ソース・データベースで表領域を変換する場合は、トランスポート先データベースの状態は関係ありません。

CONVERT DATAFILEの前提条件

CONVERT DATAFILEは、トランスポート先データベースにTARGETとして接続し、トランスポート先プラットフォームでデータファイルを変換する場合にのみ使用できます。

CONVERT DATABASE ON DESTINATIONで生成されたCONVERT DATAFILEスクリプトを実行している場合は、NOMOUNTオプションを指定してトランスポート先データベースのインスタンスを起動する必要があります。CONVERT DATABASE ON DESTINATIONで生成されたCONVERT DATAFILEスクリプトを実行していない場合は、トランスポート先データベースを起動、マウントまたはオープンすることができます。

トランスポート先データベースでデータファイルのコピーを変換する場合は、ソース・データベースの状態は関係ありません。ただし、トランスポート先データベースで、CONVERT DATAFILEスクリプトをデータベース変換の一部として実行し、そのスクリプトが(NFSマウントなどにより)ソース・データベースのデータファイルに直接アクセスしている場合は、ソース・データベースは読取り専用でオープンする必要があります。

トランスポート先のホストで表領域を変換する場合は、CONVERT TABLESPACEでは、トランスポート先データベースが変換時にデータファイルを表領域に関連付けることができないので、CONVERT DATAFILEを使用する必要があります。表領域に必要なデータファイルを変換した後は、そのファイルをトランスポート先データベースにトランスポートできます。

CONVERT DATABASEの前提条件

CONVERT DATABASEは、ソース・データベースにTARGETとして接続されている場合にのみ使用できます。また、ソース・データベースは読取り専用でオープンされている必要があります。CONVERT DATABASE ON DESTINATIONを実行しても、CONVERT DATABASEの実行時、トランスポート先データベースの状態には関係ありません。

CONVERT DATABASECONVERT TABLESPACEおよびCONVERT DATAFILEと同じメカニズムでデータファイルを変換するため、表領域とデータファイルの使用上の注意と制約事項も適用されます。

CONVERT DATABASEに追加される重要な前提条件として、ソースとターゲットの両方のプラットフォームで、同じエンディアン形式を共有する必要があるということがあります。たとえば、データベースをMicrosoft WindowsからLinux for x86(ともにリトル・エンディアン)にトランスポートしたり、HP-UXからAIX(ともにビッグ・エンディアン)にトランスポートすることはできますが、SolarisからLinux x86へはトランスポートできません。ただし、ターゲット・プラットフォームに新しいデータベースを手動で作成すると、CONVERT TABLESPACEまたはCONVERT DATAFILEを使用して、ソース・データベースの表領域を個々にトランスポートできます。

ソース・プラットフォームとトランスポート先プラットフォームのエンディアン形式は同じでも、トランスポータブル・データベースのデータファイルは、ソース・ホストまたはトランスポート先ホストのいずれかで変換する必要があります。エンディアン形式が同じ場合は変換を行う必要がないプラットフォーム間での表領域のトランスポートとは異なり、データベース全体のトランスポートでは、UNDOセグメント内のブロックなどの特定のタイプのブロックを変換して、トランスポート先プラットフォームとの互換性を確保する必要があります。

使用上の注意

変換処理はインプレースで実行されないため、入力ファイルがCONVERTによって変更されることはありません。かわりに、RMANによって指定された出力先に変換済ファイルが書き込まれます。

データ型の制約事項

CONVERTでは、エンディアン変換が必要なユーザー・データ型は処理されません。プラットフォーム固有のフォーマットでデータを格納する、基礎となる型に基づいて作成されたデータベースの間でオブジェクトをトランスポートするには、データ・ポンプ・インポートおよびエクスポート・ユーティリティを使用してください。

Oracle Database 10gより前のリリースでは、UTF8などの可変幅キャラクタ・セットで作成されたCLOBは、エンディアンに依存する固定幅フォーマットで格納されていました。CONVERTコマンドでは、これらのCLOBに対する変換は実行されません。かわりに、RMANによって、各LOB列のエンディアン形式が取得され、ターゲット・データベースに伝播されます。その後、SQLレイヤーでこのデータを読み取ると、いずれかのエンディアン形式に正確に基づいたデータが解析され、表領域が書込み可能な場合はエンディアンに依存しない方法で書き込まれます。Oracle Database 10g以上のリリースで作成されたCLOBは、プラットフォームに依存しないキャラクタ・セットAL16UTF16で格納されます。


関連項目:

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

セマンティクス

convert

この句は、変換するオブジェクト(データファイル、表領域またはデータベース)を指定します。

構文要素 説明
DATABASE 必要な他のデータベース・ファイルを確実に作成できるように、データファイルをトランスポート先プラットフォームの形式に変換します。

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

状況に応じて、ソース・プラットフォームまたはトランスポート先プラットフォームのいずれかでCONVERT DATABASEを使用できます(例2-56を参照)。データベースの次の要素は、直接トランスポートされません。

  • ソース・データベースのREDOログ・ファイルおよび制御ファイルはトランスポートされません。RMANでは、トランスポートの処理中に、ターゲット・データベースの制御ファイルとREDOログ・ファイルが新規に作成され、新規データベースの作成後にOPEN RESETLOGSが実行されます。変換されたデータベースの制御ファイルには、ソース・データベースのRMANリポジトリは含まれていません。ソース・データベースのバックアップは、変換されたデータベースでは使用できません。

  • BFILEはトランスポートされません。CONVERT DATABASEでは、BFILEデータ型を使用したオブジェクトのリストが出力されるため、ユーザーが、BFILEを手動でコピーし、ターゲット・プラットフォームでの格納場所を修正する必要があります。

  • ローカル管理の一時表領域のデータファイルはトランスポートされません。一時表領域は、変換スクリプトを実行すると、ターゲット・プラットフォームで再作成されます。

  • 外部表およびディレクトリはトランスポートされません。CONVERT DATABASEの出力には、該当するオブジェクトのリストが表示されますが、ユーザーは、そのオブジェクトをターゲット・プラットフォーム上で再定義する必要があります。外部表およびディレクトリの管理の詳細は、『Oracle Database管理者ガイド』を参照してください。

  • パスワード・ファイルはトランスポートされません。ソース・データベースでパスワード・ファイルが使用されていた場合は、CONVERT DATABASEによって、すべてのユーザー名および関連する権限のリストが出力されます。この情報を使用して、ターゲット・データベースで新しいパスワード・ファイルを作成してください。パスワード・ファイルの管理の詳細は、『Oracle Database管理者ガイド』を参照してください。

CONVERT DATABASEを使用している場合は、RMANで次の問題が検出されると、問題が修正されるまで処理を続行することはできなくなります。

  • データベースにアクティブまたは不正確なトランザクションが存在する。

  • データベースに保存されているUNDOセグメントが存在する。

  • データベースのCOMPATIBILITYが10未満に設定されている。

  • データベースのCOMPATIBILITYが10以上に設定されている場合に、読み書き両用でオープンされていない表領域がある。

;transportOptionList
トランスポートを制御するオプションを指定します。

関連項目: transportOptionListを参照してください。


[convertOptionList]
DATAFILE 'filename'
convertOptionList
トランスポート先データベースにトランスポートするデータファイルの名前を指定します(例2-54を参照)。

CONVERT DATAFILEコマンドは、プラットフォーム間でデータファイルをトランスポートする複数の手順のうちの1手順にすぎません。データファイルは、『Oracle Database管理者ガイド』で説明されているプロシージャでライブ・データファイルを使用してトランスポートするか、または『Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド』で説明されているプロシージャを使用してバックアップからトランスポートできます。プラットフォーム間で表領域をトランスポートする前に、そのマニュアルを参照してください。

convertOptionListFROM PLATFORMを使用して、変換するデータファイルのソース・プラットフォームを指定します。FROM PLATFORMを指定しなかった場合のデフォルト値は、トランスポート先のデータベース(RMANがTARGETとして接続されているデータベース)のプラットフォームです。トランスポート先ホストのプラットフォームが、暗黙的にトランスポート先のプラットフォームになります。

FROM PLATFORMTO PLATFORMを指定せずにCONVERT DATAFILEを使用して、データファイルをASMに移動したり、ASMから移動することもできます(例2-55を参照)。その場合、CONVERT DATAFILEで作成されるデータファイル・コピーは、ターゲット・データベースに属しません。そのため、LIST DATAFILECOPYコマンドでは、コピーが表示されません。次のSQL問合せを実行すると、データベースに属さない変換済データファイルがすべて表示されます。

SELECT NAME 
FROM   V$DATAFILE_COPY
WHERE  CONVERTED_FILE='YES';

CONVERT DATAFILE構文では、複数のフォーマット名を使用できるため、各データファイルには別々のフォーマットを使用できます。DATAFILE構文では、CONVERTキーワードの直後と各DATAFILE 'filename'句の後の両方でconvertOptionListを使用できます。ただし、次の状況では、RMANによってエラーが生成されます。

  • FORMAT以外のconvertOptionListオプションが複数回指定されている。

  • 複数のDATAFILE句が指定されている場合に、FORMAT以外のconvertOptionListオプションがDATAFILEオプション・リストに指定されている。


TABLESPACE
tablespace_name
convertOptionList
別のプラットフォーム上のトランスポート先データベースにトランスポートする予定の、ソース・データベース内の表領域の名前を指定します(例2-53を参照)。

このオプションを指定すると、指定した表領域のデータファイルが、別のトランスポート先プラットフォームのフォーマットで生成されます。変換したファイルは、トランスポート先プラットフォームにトランスポートできます。

CONVERT TABLESPACEは、ソース・データベースにTARGETとして接続し、ソース・プラットフォームで表領域を変換する場合にのみ使用できます。変換する表領域は、変換時に読取り専用である必要があります。CONVERT TABLESPACEは、変換予定のデータファイルがデータベースで認識されている場合に使用します。

変換するデータファイルのトランスポート先プラットフォームを指定するにはTO PLATFORMを使用します。TO PLATFORMを指定しなかった場合のデフォルト値は、RMANがTARGETとして接続されているデータベースのプラットフォームです。ソース・ホストのプラットフォームが、暗黙的にソース・プラットフォームになります。

CONVERT TABLESPACEコマンドは、プラットフォーム間で表領域をトランスポートする複数の手順のうちの1手順にすぎません。表領域は、『Oracle Database管理者ガイド』で説明されているプロシージャでライブ・データファイルを使用してトランスポートするか、または『Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド』で説明されているプロシージャを使用してバックアップからトランスポートできます。プラットフォーム間で表領域をトランスポートする前に、そのマニュアルを参照してください。

注意: ソース・ホスト上の表領域のデータファイルを変換するには、CONVERT TABLESPACE ... TOを使用して、変換する表領域とトランスポート先のプラットフォームを指定します。RMANではデータファイルが読取り専用の表領域に属しているかどうかが検証されないため、アクティブなデータファイルを変換してしまう可能性があることから、CONVERT DATAFILEを使用してソース・プラットフォーム上の個々のデータファイルを変換することは避けてください。

convertOptionList
変換を制御するオプションを指定します。

関連項目: convertOptionListを参照してください。


transportOptionList

この句は、トランスポートするデータファイル、表領域またはデータベースのオプションを指定します。

構文要素 説明

NEW DATABASE
database_name
CONVERT DATABASEコマンドで生成された新しいデータベースにDB_NAMEを指定します。
ON DESTINATION PLATFORM トランスポート先のホストで実行してデータベースを作成できるCONVERT DATAFILEコマンド(CONVERT SCRIPTパラメータを参照)の変換スクリプトを生成します。

注意: このオプションが指定されている場合、CONVERTによってスクリプトは生成されますが、変換されたデータファイルのコピーは生成されません。

このオプションは、変換処理に伴うソース・プラットフォームでのオーバーヘッドを回避する場合や、トランスポート先プラットフォームがわからない場合に有効です。たとえば、トランスポータブル表領域を、複数の様々なターゲット・プラットフォームで使用できるようにパブリッシュすることが必要な場合もあります。

ON DESTINATION PLATFORMオプションを指定してCONVERTを実行する場合は、ソース・データベースが読取り専用でオープンされている必要があります。ただし、CONVERT ON DESTINATION PLATFORMで生成されたスクリプトは、NOMOUNTで起動されたデータベース・インスタンス上で実行する必要があります。CONVERT DATAFILEコマンドの実行中に、変換スクリプトがソース・データベースからデータファイルを読み込む場合は、その実行中にソース・データベースを読み書き両用でオープンしないでください。


CONVERT SCRIPT
script_name
CONVERT DATABASE ... ON TARGET PLATFORMによって生成された変換スクリプトを含むファイルの場所を指定します。

指定しない場合、この変換スクリプトは生成されません。

skipSpec
CONVERT DATABASEによる変換処理時に、アクセス不能なデータファイル、オフラインのデータファイルまたは読取り専用のデータファイルがスキップされるように指定します。
SKIP UNNECESSARY DATAFILES UNDOセグメントを持つデータファイルのみがコマンドで変換されるように指定します。トランスポート先プラットフォームで変換する場合、生成されたCONVERTスクリプトにはUNDOセグメントを持つデータファイルのみが含まれます。UNDOセグメントを持たないデータファイルは変換する必要がないため、ソース・データベースからトランスポート先データベースに直接コピーすることができます。コマンドがhp Tru64との間で変換を実行している場合、ASSMセグメント・ヘッダーを持つデータファイルも変換する必要があります。

TRANSPORT SCRIPT
script_name
CONVERT DATABASEによって生成された変換スクリプトを含むファイルの場所を指定します。省略した場合、この変換スクリプトは生成されません。

skipSpec

この副次句は、変換処理から除外するファイルを指定します。

構文要素 説明
SKIP 次のキーワードで指定された基準に従って、データファイルを変換対象から除外します。
INACCESSIBLE I/Oエラーのために読み取ることができないデータファイルを変換対象から除外するように指定します。

データファイルは、読取りが不可能な場合にのみアクセス不能とみなされます。一部のオフライン・データファイルは、ディスク上に残っているために読取りが可能です。他のデータファイルは削除または移動されたためにアクセス不可となり、読取り不可となります。

OFFLINE オフライン・データファイルを変換対象から除外するように指定します。
READONLY 読取り専用データファイルを変換対象から除外するように指定します。

convertOptionList

この副次句は、変換の入出力オプションを指定します。

FORMATまたはfileNameConversionSpec引数を使用して、CONVERTコマンドで生成される出力ファイルの名前を制御できます。いずれも指定しない場合、出力ファイルの場所を管理する規則は、BACKUP AS COPY操作で生成される出力ファイルを管理する規則と同じになります。この規則については、backupTypeSpecを参照してください。

構文要素 説明
fileNameConversionSpec
文字列のペアです。ペアの最初の文字列がいずれかの入力ファイル名に含まれている場合は、含まれている場所に関係なく、常に、同じペアの2番目の文字列と置換されます。必要な数の置換文字列のペアを使用できます。一重引用符または二重引用符を使用できます。

関連項目: ASMおよびOracle Managed Filesに関連する制約事項については、「Oracle Managed Filesでの複製」を参照してください。

FORMAT formatSpec 出力ファイルのネーム・テンプレートを指定します。ここで有効なフォーマット値については、BACKUP AS COPYコマンドを参照してください。

RMANがTARGETとして接続されているデータベースでリカバリ領域が使用されている場合は、FORMAT句を指定する必要があります。

FROM PLATFORMまたはTO PLATFORMを指定せずに、CONVERT ... FORMATを使用できます。プラットフォームを指定しない場合は、ソース・データベース上でCONVERT TABLESPACEを実行すると、カタログ化されていないデータファイル・コピーが生成されます。CONVERT DATAFILEを宛先データベースで実行した場合に、データファイル・コピーで同じエンディアンが使用されていると、このコマンドによって別のデータファイル・コピーが生成されます。

例2-55で示すとおり、CONVERT DATAFILE ... FORMATを使用して、データファイルをASMフォーマットに変換できます。非常に大きなデータファイルをホスト間でコピーすると、大量の領域が消費されます。その場合は、NFSの使用またはディスクの共有を検討してください。バックアップをソース・ホスト上に作成し、そのバックアップが含まれるディスクをトランスポート先ホストにマウントしてから、データファイルをASMに変換できます。

FROM PLATFORM 'platform' ソース・プラットフォームの名前を指定します。指定しなかった場合のデフォルトは、RMANがTARGETとして接続されているデータベースのプラットフォームです。

指定するプラットフォームは、V$TRANSPORTABLE_PLATFORMPLATFORM_NAME列に表示されるプラットフォームである必要があります。ソース・プラットフォームまたはターゲット・プラットフォームの正確な名前をCONVERTコマンドのパラメータとして指定する必要があります。次のSQL文は、サポートされているLinuxプラットフォームを問い合せます。

SELECT PLATFORM_NAME, ENDIAN_FORMAT
FROM   V$TRANSPORTABLE_PLATFORM 
WHERE  UPPER(PLATFORM_NAME) LIKE 'LINUX%';
PARALLELISM integer この操作で使用するチャネルの数を指定します。指定しない場合は、ディスクに対して割り当てられたチャネルまたは構成されたチャネルによってチャネルの数が決定されます。
TO PLATFORM 'platform' トランスポート先プラットフォームの名前を指定します。指定しなかった場合のデフォルトは、RMANがTARGETとして接続されているデータベースのプラットフォームです。

指定するプラットフォームは、V$TRANSPORTABLE_PLATFORMPLATFORM_NAME列に表示されるプラットフォームである必要があります。ソース・プラットフォームまたはターゲット・プラットフォームの正確な名前をCONVERTコマンドのパラメータとして指定する必要があります。次のSQL文は、サポートされているLinuxプラットフォームを問い合せます。

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

例2-53 ソース・プラットフォームでの表領域の変換

ソース・データベースprodlinの表領域financeおよびhrを、トランスポート先データベースprodsunのプラットフォーム形式に変換するとします。finance表領域には、データファイル/disk2/orahome/fin/fin01.dbfおよび/disk2/orahome/fin/fin02.dbfが含まれています。hr表領域には、データファイル/disk2/orahome/fin/hr01.dbfおよび/disk2/orahome/fin/hr02.dbfが含まれています。

prodlinデータベースは、Linuxホストlin01上で実行されます。V$DATABASEを問い合せて、プラットフォーム名がLinux IA (32-bit)で、リトル・エンディアン形式が使用されていることを確認します。prodsunデータベースは、Solarisホストsun01上で実行されます。V$TRANSPORTABLE_PLATFORMを問い合せて、SolarisホストのPLATFORM_NAMESolaris[tm] OE (64-bit)で、ビッグ・エンディアン形式が使用されていることを確認します。

表領域の変換はソース・ホスト上で実行し、変換したデータファイルはホストlin01/tmp/transport_to_solaris/に格納するとします。この例は、ソース・データベースのCOMPATIBLEが10.0以上に設定されていることを前提としています。

ソース・ホストlin01で、RMANクライアントを起動して次のコマンドを実行します。

CONNECT TARGET SYS@prodlin

target database Password: password
connected to target database: PRODLIN (DBID=39525561)

SQL 'ALTER TABLESPACE finance READ ONLY';
SQL 'ALTER TABLESPACE hr READ ONLY';
CONVERT TABLESPACE finance, hr
  TO PLATFORM 'Solaris[tm] OE (64-bit)'
  FORMAT '/tmp/transport_to_solaris/%U';

この結果、変換されたデータファイルのセットが、Solaris(64-bit)プラットフォーム用の正しいエンディアン順序のデータとともに/tmp/transport_to_solaris/ディレクトリに出力されます。

ここからは、表領域トランスポートの一般的な手順に従います。構造情報ファイルをデータ・ポンプ・エクスポート・ユーティリティを使用して作成し、構造情報ファイルおよび変換済のデータファイルを/tmp/transport_to_solaris/からトランスポート先ホストの目的のディレクトリに移動し、データ・ポンプ・インポート・ユーティリティを使用して新しいデータベースに表領域を接続します。

例2-54 トランスポート先プラットフォームでのデータファイルの変換

この例では、表領域financeおよびhrをホストsun01のデータベースprodsunからトランスポート先ホストlin01のデータベースprodlinで使用可能な形式に変換します。変換前のデータファイルをトランスポート先ホストlin01のディレクトリ/tmp/transport_from_solaris/に一時的に格納し、CONVERT DATAFILEを使用して変換を実行します。トランスポート先データベースにデータファイルをトランスポートすると、そのファイルは/disk2/orahome/dbsに格納されます。

この例は、表領域トランスポートの準備として次の手順を実行していることを前提としています。

  • データ・ポンプ・エクスポート・ユーティリティを使用して、構造情報ファイル(この例ではexpdat.dmp)を作成していること。

  • ソース・データベースで表領域financeおよびhrを読取り専用に設定していること。

  • オペレーティング・システムのユーティリティを使用して、expdat.dmpおよびトランスポートする変換前のデータファイルを、トランスポート先ホストlin01/tmp/transport_from_solarisディレクトリにコピーしていること。データファイルは次のように保存されます。

    • /tmp/transport_from_solaris/fin/fin01.dbf

    • /tmp/transport_from_solaris/fin/fin02.dbf

    • /tmp/transport_from_solaris/hr/hr01.dbf

    • /tmp/transport_from_solaris/hr/hr02.dbf

  • ソース・プラットフォームの名前をV$TRANSPORTABLE_PLATFORMを問い合せて、PLATFORM_NAMESolaris[tm] OE (64-bit)であることを確認していること。

変換を実行するときは、次の点に注意してください。

  • データファイルは、表領域名ではなく、ファイル名で指定します。ローカル・インスタンスでは、データファイルが接続されるまで目的の表領域名を特定できません。

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

  • トランスポート先ホストで変換する場合、FROM引数を使用してソース・プラットフォームを指定する必要があります。指定しない場合、RMANは、ソース・プラットフォームが、変換が実行されるホストのプラットフォームと同じであると想定します。

RMANクライアントを起動し、TARGETとしてトランスポート先データベースprodlinに接続します。次のCONVERTコマンドを使用して、トランスポートするデータファイルをトランスポート先ホストの形式に変換し、/disk2/orahome/dbsにその結果を保存します。

CONNECT TARGET SYS@prodlin

target database Password: password
connected to target database: PRODLIN (DBID=39525561)

CONVERT DATAFILE
   '/tmp/transport_from_solaris/fin/fin01.dbf',
   '/tmp/transport_from_solaris/fin/fin02.dbf',
   '/tmp/transport_from_solaris/hr/hr01.dbf',
   '/tmp/transport_from_solaris/hr/hr02.dbf'
   DB_FILE_NAME_CONVERT
        '/tmp/transport_from_solaris/fin','/disk2/orahome/dbs/fin',
        '/tmp/transport_from_solaris/hr','/disk2/orahome/dbs/hr'
   FROM PLATFORM 'Solaris[tm] OE (64-bit)';

この結果、次のデータファイルがLinux形式に変換されています。

  • /disk2/orahome/dbs/fin/fin01.dbf

  • /disk2/orahome/dbs/fin/fin02.dbf

  • /disk2/orahome/dbs/hr/hr01.dbf

  • /disk2/orahome/dbs/hr/hr02.dbf

ここからは、表領域トランスポートの概要の残りの説明に従います。データ・ポンプ・インポート・ユーティリティを使用して、変換済の表領域を新しいデータベースに接続し、可能な場合は、表領域を読み書き両用に設定します。

例2-55 CONVERT DATAFILEを使用したデータファイルとASM間のコピー

この例では、通常のストレージからASMにデータファイルをコピーする方法を示します。生成されるファイルは、ターゲット・データベースに属するデータファイル・コピーとはみなされないため、LIST DATAFILECOPYには表示されません。

ソースおよびトランスポート先のプラットフォームを指定せずに、CONVERT DATAFILEを使用します。出力場所は、ASMディスク・グループ+DATAFILEを次に示すように指定します。

RMAN> CONVERT DATAFILE '/disk1/oracle/dbs/my_tbs_f1.df', 
   '/disk1/oracle/dbs/t_ax1.f'
   FORMAT '+DATAFILE';
 
Starting conversion at 29-MAY-05
using channel ORA_DISK_1
channel ORA_DISK_1: starting datafile conversion
input filename=/disk1/oracle/dbs/t_ax1.f
converted datafile=+DATAFILE/asmv/datafile/sysaux.280.559534477
channel ORA_DISK_1: datafile conversion complete, elapsed time: 00:00:16
channel ORA_DISK_1: starting datafile conversion
input filename=/disk1/oracle/dbs/my_tbs_f1.df
converted datafile=+DATAFILE/asmv/datafile/my_tbs.281.559534493
channel ORA_DISK_1: datafile conversion complete, elapsed time: 00:00:04
Finished conversion at 29-MAY-05
 

次の例では、表領域のデータファイルを一意に生成されたファイル名でASMストレージから/tmpディレクトリにコピーする方法を示します。

RMAN> CONVERT TABLESPACE tbs_2 FORMAT '/tmp/tbs_2_%U.df';
 
Starting conversion at 03-JUN-05
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=20 devtype=DISK
channel ORA_DISK_1: starting datafile conversion
input datafile fno=00006 name=+DATAFILE/tbs_21.f
converted datafile=/tmp/tbs_2_data_D-L2_I-2786301554_TS-TBS_2_FNO-6_11gm2fq9.df
channel ORA_DISK_1: datafile conversion complete, elapsed time: 00:00:01
channel ORA_DISK_1: starting datafile conversion
input datafile fno=00007 name=+DATAFILE/tbs_22.f
converted datafile=/tmp/tbs_2_data_D-L2_I-2786301554_TS-TBS_2_FNO-7_12gm2fqa.df
channel ORA_DISK_1: datafile conversion complete, elapsed time: 00:00:01
channel ORA_DISK_1: starting datafile conversion
input datafile fno=00019 name=+DATAFILE/tbs_25.f
converted datafile=/tmp/tbs_2_data_D-L2_I-2786301554_TS-TBS_2_FNO-19_13gm2fqb.df
channel ORA_DISK_1: datafile conversion complete, elapsed time: 00:00:01
channel ORA_DISK_1: starting datafile conversion
input datafile fno=00009 name=+DATAFILE/tbs_23.f
converted datafile=/tmp/tbs_2_data_D-L2_I-2786301554_TS-TBS_2_FNO-9_14gm2fqc.df
channel ORA_DISK_1: datafile conversion complete, elapsed time: 00:00:01
channel ORA_DISK_1: starting datafile conversion
input datafile fno=00010 name=+DATAFILE/tbs_24.f
converted datafile=/tmp/tbs_2_data_D-L2_I-2786301554_TS-TBS_2_FNO-10_15gm2fqd.df
channel ORA_DISK_1: datafile conversion complete, elapsed time: 00:00:01
Finished conversion at 03-JUN-05

例2-56 異なるプラットフォームへのデータベースのトランスポート

CONVERT DATABASEの引数は、データファイルの変換をソース・プラットフォームで実行するか、トランスポート先のプラットフォームで実行するかによって異なります。ソースおよびトランスポート先のプラットフォームでの変換処理の詳細および例は、『Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド』を参照してください。データベースの変換は、その説明を最後まで読んでから実行してください。

Linuxホスト上のデータベースprodをWindowsホストにトランスポートするとします。データファイルは、トランスポート先のホストではなく、ソース・ホストで変換することにします。次の例では、RMANをLinuxホストのprodデータベースに接続し、CONVERT DATABASE NEW DATABASEを実行してデータファイルを変換し、変換スクリプトを生成します。

CONNECT TARGET SYS@lin01

target database Password: password
connected to target database: PROD (DBID=39525561)

CONVERT DATABASE
  NEW DATABASE 'prodwin'
  TRANSPORT SCRIPT '/tmp/convertdb/transportscript'
  TO PLATFORM 'Microsoft Windows IA (32-bit)'
    DB_FILE_NAME_CONVERT '/disk1/oracle/dbs','/tmp/convertdb';

次の例は部分的に変更し、Linuxホストで実行されているデータベースをWindowsホストにトランスポートしますが、データファイルの変換は、ソース・ホストでなく、トランスポート先のホストで実行します。次の例では、RMANをLinuxホストのprodデータベースに接続し、CONVERT DATABASE ON DESTINATION PLATFORMを実行します。

CONNECT TARGET SYS@lin01

target database Password: password
connected to target database: PROD (DBID=39525561)

CONVERT DATABASE
  ON DESTINATION PLATFORM
  CONVERT SCRIPT '/tmp/convertdb/convertscript.rman'
  TRANSPORT SCRIPT '/tmp/convertdb/transportscript.sql'
  NEW DATABASE 'prodwin'
  FORMAT '/tmp/convertdb/%U';

Linuxデータベース上で実行されるCONVERT DATABASE ON DESTINATION PLATFORMコマンドにより、データファイルをWindows形式に変換するためにWindowsホスト上で実行可能な変換スクリプトが生成されます。また、このCONVERT DATABASEコマンドでは、変換スクリプトも生成されます。

例2-57 プラットフォームとストレージ・タイプが異なる場合のデータベースのトランスポート

この使用例では、sun01というSolarisホスト上のデータベースprodを、aix01というAIXホストに移動することにします。Solarisデータファイルは非ASMファイル・システムに保存されていますが、このデータファイルをAIXホスト上のASMに保存するとします。

次の例では、sun01に接続し、CONVERT DATABASEを実行して必要なスクリプトを生成します。

CONNECT TARGET SYS@sun01

target database Password: password
connected to target database: PROD (DBID=39525561)

CONVERT DATABASE
  ON DESTINATION PLATFORM
  CONVERT SCRIPT '/tmp/convert_newdb.rman'
  TRANSPORT SCRIPT '/tmp/transport_newdb.sql'
  NEW DATABASE 'prodaix'
  DB_FILE_NAME_CONVERT '/u01/oradata/DBUA/datafile','+DATA';

変換スクリプトには次の書式の文が記述されます(your_source_platformはソース・プラットフォームを表します)。

CONVERT DATAFILE '/u01/oradata/DBUA/datafile/o1_mf_system_2lg3905p_.dbf'
  FROM PLATFORM 'your_source_platform'
  FORMAT '+DATA/o1_mf_system_2lg3905p_.dbf';

変換時の停止時間を短縮するには、ネットワーク経由でデータファイルをコピーしたりバックアップをリストアするのではなく、NFSを使用できます。たとえば、Solarisファイル・システムは、AIXホストに/net/solaris/oradataとしてマウントできます。この場合、変換するソース・データファイルの場所としてNFSマウントのディレクトリを参照するように、次のように変換スクリプト・コマンドを編集します。

CONVERT DATAFILE '/net/solaris/oradata/DBUA/datafile/o1_mf_system_2lg3905p_.dbf'
  FROM PLATFORM 'your_source_platform'
  FORMAT '+DATA/o1_mf_system_2lg3905p_.dbf';

次に、RMANをトランスポート先のデータベース・インスタンス(この例では、ホストaix01のインスタンス)に接続し、データファイルを変換します(変換中、ホストsun01のデータベースは読取り専用モードでオープンされている必要があります)。その後、SQL*Plusをaix01のデータベース・インスタンスに接続し、変換スクリプトを実行してデータベースを作成します。