26 データベースの複製: 高度なトピック
この章では、データベースの複製の高度な形式について説明します。
この章のトピックは、次のとおりです:
26.1 複製データベース・ファイルの代替名の指定
ソース・データベースと複製データベースでデータベース・ファイルに同じ名前を使用しない場合、複製ファイル用に別の名前を付ける方法を選択する必要があります。
ソース・データベースと複製データベースでOracle Managed Files(OMF)またはOracle Automatic Storage Management (ASM)のどちらを使用するかに応じて、次の方法のいずれかを使用します。
26.1.1 複製データベース・ファイルの非OMFまたは非ASM代替名の指定
ソース・データベースと複製データベースで異なるディレクトリ構造を使用するか、または同じ構造を使用するが重複ファイルに異なる名前を付ける場合は、複製データベース・ファイルの命名方法を指定する必要があります。
表26-1に、各タイプのファイルの命名に使用できる形式の概要を示します。
表26-1 SET NEWNAMEコマンドの置換変数
| 変数 | 説明 |
|---|---|
|
|
ディレクトリ・パス以外のファイル名を指定します。たとえば、データファイルの名前が |
|
|
新しい名前を生成するデータファイルの絶対ファイル番号を指定します。たとえば、データファイル2を複製する場合は、 |
|
|
DBIDを指定します。 |
|
|
表領域名を指定します。 |
|
|
|
次のいずれかの方法を使用して、非OMFまたは非ASMの複製データベース・ファイルに代替名を指定します。
26.1.1.1 SET NEWNAMEコマンドを使用したファイル・システム・データファイルおよび一時ファイルの名前の指定
DUPLICATEコマンドを実行する前にSET NEWNAMEコマンドを使用して、複製データファイルの名前を指定します。
次に、RMANでサポートされているコマンドを優先順位の高い順に示します。
-
SET NEWNAME FOR DATAFILEおよびSET NEWNAME FOR TEMPFILE -
SET NEWNAME FOR TABLESPACE -
SET NEWNAME FOR DATABASE
この優先順位に従って、SET NEWNAME FOR DATAFILEおよびSET NEWNAME FOR TEMPFILEコマンドを使用して名前が指定されていないファイルにはSET NEWNAME FOR TABLESPACEコマンドを使用して名前が指定され、SET NEWNAME FOR TABLESPACE、SET NEWNAME FOR DATAFILEまたはSET NEWNAME FOR TEMPFILEコマンドを使用して名前が指定されていないファイルにはSET NEWNAME FOR DATABASEコマンドを使用して名前が指定されます。
SET NEWNAME FOR DATAFILEコマンドを使用する場合は、/oradata1/system01.dbfのようなリテラルのフルパスを指定できます。ただし、SETコマンドをFOR DATABASEまたはFOR TABLESPACEオプションとともに使用する場合は、表26-1に示す%b、%f、%Uの置換変数のうち、1つ以上を使用する必要があります(%Iと%Nはオプションです)。
SET NEWNAMEコマンドを使用して新しいファイル名を指定するには:
例26-1 SET NEWNAME FOR DATAFILEコマンドを使用したデータベースの複製
次の例は、データファイル1から5、および一時ファイル1に新しい名前を指定するスクリプトを示しています。データファイル6は、複製データベースから除外されるtools表領域内にあるため、このスクリプトでは新しい名前は設定されません。
-
DBIDは87650928
-
データベース名は
PROD
次のコマンドを使用してデータベースを複製します。
RUN
{
SET NEWNAME FOR DATAFILE 1 TO '/oradata1/system01.dbf';
SET NEWNAME FOR DATAFILE 2 TO '/oradata2/sysaux01.dbf';
SET NEWNAME FOR DATAFILE 3 TO '/oradata3/undotbs01.dbf';
SET NEWNAME FOR DATAFILE 4 TO '/oradata4/users01.dbf';
SET NEWNAME FOR DATAFILE 5 TO '/oradata5/users02.dbf';
SET NEWNAME FOR TEMPFILE 1 TO '/oradatat/temp01.dbf';
DUPLICATE TARGET DATABASE TO dupdb
SKIP TABLESPACE tools
LOGFILE
GROUP 1 ('/duplogs/redo01a.log','/duplogs/redo01b.log') SIZE 4M REUSE,
GROUP 2 ('/duplogs/redo02a.log', '/duplogs/redo02b.log') SIZE 4M REUSE;
}例26-2 SET NEWNAME FOR DATAFILEコマンドおよびSET NEWNAME FOR TABLESPACEコマンドを使用したデータベースの複製
この例は、例26-1を少し変更した例で、単一のSET NEWNAMEコマンドを使用して、users表領域内にあるすべてのデータファイルの名前を指定します。この例の完了後、users表領域のファイル名は/oradata4/users01.dbfおよび/oradata5/users02.dbfに設定されます。
次のコマンドを使用してデータベースを複製します。
{
SET NEWNAME FOR TABLESPACE users TO '/oradata%f/%b';
SET NEWNAME FOR DATAFILE 1 TO '/oradata1/system01.dbf';
SET NEWNAME FOR DATAFILE 2 TO '/oradata2/sysaux01.dbf';
SET NEWNAME FOR DATAFILE 3 TO '/oradata3/undotbs01.dbf';
SET NEWNAME FOR TEMPFILE 1 TO '/oradatat/temp01.dbf';
DUPLICATE TARGET DATABASE TO dupdb
SKIP TABLESPACE tools
LOGFILE
GROUP 1 ('/duplogs/redo01a.log','/duplogs/redo01b.log') SIZE 4M REUSE,
GROUP 2 ('/duplogs/redo02a.log','/duplogs/redo02b.log') SIZE 4M REUSE;
}例26-3 SET NEWNAME FOR DATABASEコマンドを使用したデータベースの複製
この例は例26-1を少し変更した例で、単一のSETコマンドを使用して、データベース内のすべてのデータファイルの名前を指定します。
次のコマンドを使用してデータベースを複製します。
RUN
{
SET NEWNAME FOR DATABASE TO '/oradata/%U';
DUPLICATE TARGET DATABASE TO dupdb
SKIP TABLESPACE tools
LOGFILE
GROUP 1 ('/duplogs/redo01a.log','/duplogs/redo01b.log') SIZE 4M REUSE,
GROUP 2 ('/duplogs/redo02a.log','/duplogs/redo02b.log') SIZE 4M REUSE;
}次の表に、この例の結果を示します。
表26-2 SET NEWNAME DATABASEコマンドの結果
| SET NEWNAME DATABASEの実行前 | 表領域名 | データファイル番号 | SET NEWNAME DATABASE TO '/oradata/%U';の実行後 |
|---|---|---|---|
|
|
|
1 |
|
|
|
|
2 |
|
|
|
|
3 |
|
|
|
|
4 |
|
|
|
|
5 |
|
|
|
|
1 |
|
関連項目:
SET NEWNAMEで使用可能な置換変数の詳細は、『Oracle Databaseバックアップおよびリカバリ・リファレンス』を参照してください。
26.1.1.2 CONFIGURE AUXNAMEコマンドを使用したファイル・システム・データファイルおよびOMFまたはASMターゲット・データファイルの名前の指定
CONFIGURE AUXNAMEコマンドは、SET NEWNAMEコマンドの代替となるコマンドです。一度このコマンドを使用して補助ファイル名を構成すると、構成した設定がその後のDUPLICATEコマンドで再利用される点が異なります。一方、SET NEWNAMEコマンドは、DUPLICATEコマンドを実行するたびに再発行する必要があります。
CONFIGURE AUXNAMEコマンドを使用して複製データファイル名を指定するには:
-
複製データベースで名前を指定するファイルごとに、
CONFIGURE AUXNAMEコマンドを発行します。たとえば、データファイル1から5の名前を指定するには、RMANプロンプトで次のコマンドを入力します。
CONFIGURE AUXNAME FOR DATAFILE 1 TO '/oradata1/system01.dbf'; CONFIGURE AUXNAME FOR DATAFILE 2 TO '/oradata2/sysaux01.dbf'; CONFIGURE AUXNAME FOR DATAFILE 3 TO '/oradata3/undotbs01.dbf'; CONFIGURE AUXNAME FOR DATAFILE 4 TO '/oradata4/users01.dbf'; CONFIGURE AUXNAME FOR DATAFILE 5 TO '/oradata5/users02.dbf'; -
DUPLICATEコマンドを発行します。たとえば、RMANプロンプトで次のコマンドを入力します。
SET NEWNAME FOR TEMPFILE 1 TO '/oradatat/temp01.dbf'; DUPLICATE TARGET DATABASE TO dupdb SKIP TABLESPACE tools LOGFILE GROUP 1 ('/duplogs/redo01a.log','/duplogs/redo01b.log') SIZE 4M REUSE, GROUP 2 ('/duplogs/redo02a.log','/duplogs/redo02b.log') SIZE 4M REUSE;
関連項目:
CONFIGURE AUXNAMEの使用方法の詳細は、『Oracle Databaseバックアップおよびリカバリ・リファレンス』を参照してください。
26.1.2 複製データベース・ファイルに対するOMFまたはASM代替名の指定
ソース・データベースと複製データベースでデータベース・ファイルに同じ名前を使用しない場合は、複製データベース・ファイルの命名方法を指定する必要があります。
次の項では、複製データベースの一部またはすべてのファイルでOMFまたはASMが使用されている場合に複製データベースを作成するための要件と手順について説明します。
関連項目:
ASMおよびOMFの概要については、『Oracle Automatic Storage Management管理者ガイド』を参照してください。
26.1.2.1 OMF初期化パラメータの設定および制限事項
OMFを使用する複製データベースを作成する場合は、補助インスタンスで初期化パラメータを設定する必要があります。DUPLICATEコマンドのSPFILEオプションを使用してファイルの名前を指定する場合は、SPFILEオプションで初期化パラメータを設定できます。
表26-3に、関連パラメータと推奨される設定を示します。
表26-3 Oracle Managed Filesの初期化パラメータ
| 初期化パラメータ | 目的 | 推奨 |
|---|---|---|
|
|
Oracle管理データファイルのデフォルトの場所を指定します。この場所は、どの |
このパラメータをOMFの場所に設定します。場所を指定せずにデータベース・ファイルを作成すると、そのファイルは |
|
|
Oracle管理の制御ファイルおよびオンラインREDOログのデフォルトの場所を指定します。複数のパラメータが設定されている場合は、それぞれの場所に制御ファイルおよびオンラインREDOログが1つずつ作成されます。 |
複数の場所の制御ファイルおよびオンラインREDOログ・ファイルを多重化する場合にのみ、これらのパラメータを設定します(_1、_2など)。 |
|
|
高速リカバリ領域のデフォルトの場所を指定します。高速リカバリ領域には、現行の制御ファイルおよびオンラインREDOログ・ファイルの多重コピーが含まれています。 |
リカバリ領域に制御ファイルおよびオンラインREDOログ・ファイルの多重コピーが必要な場合は、このパラメータを設定します。 |
表26-4に、他の初期化パラメータの設定に関する制限事項を示します。
表26-4 Oracle Managed Filesの初期化パラメータの制限事項
| 初期化パラメータ | 目的 | 制限事項 |
|---|---|---|
|
|
1つ以上の制御ファイル名をカンマで区切って指定します。 |
OMF形式でデータベース制御ファイルを複製する場合は、このパラメータを設定しないでください。OMF形式の制御ファイルを使用する場合は、複製データベースでサーバー・パラメータ・ファイルを使用することをお薦めします。 |
|
|
プライマリ・データベース上の新しいデータファイルのファイル名を複製データベース上のファイル名に変換します。 |
このパラメータを設定しないでください。このパラメータを省略することによって、データベースは複製データファイルにOracle Managed Filesの有効な名前を生成できます。 |
|
|
プライマリ・データベース上の新しいログ・ファイルのファイル名をスタンバイ・データベース上のログ・ファイルのファイル名に変換します。 |
このパラメータを設定しないでください。このパラメータを省略することによって、データベースはOracle管理オンラインREDOログ・ファイルの有効な名前を生成できます。 複製データベースのオンラインREDOログ・ファイルをOracle管理ストレージに格納するには、 |
26.1.2.2 ASMの初期化パラメータの設定
ファイルが作成される場所を制御する初期化パラメータを特定し、これらのパラメータをASMディスク・グループに対して設定する必要があります。
ASMの場所に複製データベースを作成する手順は、OMFに複製データベースを作成する手順と同様です。たとえば、DB_CREATE_FILE_DEST、DB_CREATE_ONLINE_DEST_nおよびCONTROL_FILESパラメータを+DISK1に対して設定します。
関連項目:
26.1.2.3 例: ASMへのデータベースの複製
この項では、ASMへのデータベースの複製例について説明します。
例26-4 ファイル・システムからASMへのデータベースの複製
この例では、アクティブなデータベースの複製を使用します。ソース・データベースでサーバー・パラメータ・ファイルが使用されている(またはバックアップが使用可能である)場合は、宛先ホストに一時初期化パラメータ・ファイルを作成し、DB_NAMEパラメータのみを設定できます。
ソース・データベースprodはhost1上にあり、データファイルは非ASMファイル・システムに保存されていると想定しています。prodの制御ファイルは、/oracle/oradata/prod/に存在します。ソース・データベースを複製し、リモート・ホストhost2上にdupdbデータベースを作成します。ASMディスク・グループ+DISK1に複製データベース・ファイルを保存します。
RMANをターゲット・データベース、複製データベースおよびリカバリ・カタログ・データベースに接続してから、次のRMANスクリプトを実行してデータベースを複製します。
DUPLICATE TARGET DATABASE TO dupdb
FROM ACTIVE DATABASE
SPFILE
PARAMETER_VALUE_CONVERT '/oracle/oradata/prod/', '+DISK1'
SET DB_CREATE_FILE_DEST +DISK1;DUPLICATEコマンドが完了すると、複製データベースはデータファイル、オンラインREDOログ・ファイルおよび制御ファイルとともに、ASMディスク・グループ+DISK1に作成されます。
例26-5 ASMからASMへのデータベースの複製
この例では、アクティブなデータベースの複製を使用します。ソース・データベースでサーバー・パラメータ・ファイルが使用されている(またはバックアップが使用可能である)場合は、宛先ホストに一時初期化パラメータ・ファイルを作成し、DB_NAMEパラメータのみを設定できます。
ソース・データベースprodはhost1上にあり、データファイルはASMディスク・グループ+DISK1に保存されていると想定しています。ターゲット・データベースを複製し、リモート・ホストhost2上にdupdbデータベースを作成します。ASMにdupdbのデータファイルを格納します。具体的には、ディスク・グループ+DISK2にデータファイルおよび制御ファイルを保存します。
DUPLICATEコマンドにPARAMETER_VALUE_CONVERTを設定し、すべてのディレクトリの場所を+DISK1から+DISK2に変換します。+DISK2の新しいファイル名は、ASMによって生成され、ディスク・グループ+DISK1の元のファイル名とは一致しません。
ターゲット・データベース、複製データベースおよびカタログ・データベースに接続してから、次のRMANスクリプトを実行してデータベースを複製します。
DUPLICATE TARGET DATABASE
TO dupdb
FROM ACTIVE DATABASE
SPFILE PARAMETER_VALUE_CONVERT '+DISK1','+DISK2'
SET DB_RECOVERY_FILE_DEST_SIZE='750G';DUPLICATEコマンドが完了すると、データファイル、オンラインREDOログおよび制御ファイルとともに複製データベースがより大きなASMディスク・グループ+DISK2に作成されます。
26.1.2.4 SET NEWNAMEコマンドを使用したOMFまたはASMファイルの作成
Oracle管理データファイルの名前を指定するには、TO 'filename'オプションではなくTO NEWオプションとともにSET NEWNAMEコマンドを使用します。RMANによって、指定したデータファイルまたは一時ファイルが、DB_CREATE_FILE_DESTパラメータで指定した場所にOMFの名前で作成されます。
SET NEWNAMEコマンドを使用してOMFの名前を指定するには:
-
補助インスタンスの
DB_CREATE_FILE_DEST初期化パラメータを任意の場所に設定します。 -
RUNブロックにDUPLICATEコマンドを含め、OMFに対してSET NEWNAMEコマンドをTO NEWオプションとともに使用します。
例26-6 SET NEWNAME FOR DATAFILEコマンドおよびSET NEWNAME FOR TABLESPACEコマンドを使用したデータベースの複製
この例に、データファイル1-5のリテラル名を指定するスクリプトを示します。ソース・データベース内のOracle Managed Filesは、users表領域内のデータファイルのみです。このため、これらのファイルのSET NEWNAMEコマンドにはTO NEWオプションを指定します。
RUN
{
SET NEWNAME FOR TABLESPACE users TO NEW;
SET NEWNAME FOR DATAFILE 3 TO NEW;
SET NEWNAME FOR DATAFILE 1 TO '/oradata1/system01.dbf';
SET NEWNAME FOR DATAFILE 2 TO '/oradata2/sysaux01.dbf';
SET NEWNAME FOR TEMPFILE 1 TO '/oradatat/temp01';
DUPLICATE TARGET DATABASE TO dupdb
SKIP TABLESPACE tools
LOGFILE
GROUP 1 ('/duplogs/redo01a.log','/duplogs/redo01b.log') SIZE 4M REUSE,
GROUP 2 ('/duplogs/redo02a.log','/duplogs/redo02b.log') SIZE 4M REUSE;
}例26-7 SET NEWNAMEコマンドを使用したASMディスク・グループでのファイルの作成
この例では、SET NEWNAMEコマンドを使用して、指定したASMディスク・グループに個々のデータファイル、一時ファイルまたは表領域を格納します。
RUN
{
SET NEWNAME FOR DATAFILE 1 TO "+DGROUP1";
SET NEWNAME FOR DATAFILE 2 TO "+DGROUP2";
.
.
.
DUPLICATE TARGET DATABASE
TO dupdb
FROM ACTIVE DATABASE
SPFILE SET DB_CREATE_FILE_DEST +DGROUP3;
}26.1.2.5 DB_FILE_NAME_CONVERTパラメータを使用した非OMFまたはASMデータファイルの名前の生成
SET NEWNAMEまたはCONFIGURE AUXNAMEコマンドを使用する方法に加えて、DB_FILE_NAME_CONVERTパラメータを使用してターゲット・ファイル名を変更することもできます。DB_FILE_NAME_CONVERTオプションは、DUPLICATEコマンドで指定するか、または補助インスタンスの初期化パラメータ・ファイルで設定できます。
たとえば、ターゲット・ファイル名を/oracle/ディレクトリから/dup/oracle/ディレクトリに変更できます。DB_FILE_NAME_CONVERTパラメータでは複数の変換ファイル名のペアを指定できますが、Oracle Database 12cリリース2 (12.2)以降では、ファイル名の文字列のペアが99個を超えないようにすることをお薦めします。DB_FILE_NAME_CONVERTパラメータを使用して、データファイルおよび一時ファイルの名前を生成することもできます。
DB_FILE_NAME_CONVERTパラメータの制限事項
DUPLICATEコマンドのDB_FILE_NAME_CONVERTオプションを使用して、ソース・データベース・インスタンスではOMF形式である、複製インスタンスにあるファイル用の新しい名前の生成を制御することはできません。
26.1.2.6 LOG_FILE_NAME_CONVERTパラメータを使用した非OMFまたはASMログ・ファイルの名前の生成
LOG_FILE句が省略されており、OMFの初期化パラメータDB_CREATE_FILE_DEST、DB_CREATE_ONLINE_DEST_nまたはDB_RECOVERY_FILE_DESTのいずれも指定されていない場合、LOG_FILE_NAME_CONVERTパラメータでターゲット・ファイル名を変更できます。これは、DB_FILE_NAME_CONVERTパラメータと同様に機能し、ターゲット・ファイル名をlog_*からduplog_*に変更します。
このパラメータを使用すると、複数の変換ファイル名のペアを指定できます。LOG_FILE_NAME_CONVERTパラメータを指定すると、RMANは、オンラインREDOログの作成時にREUSEパラメータを使用します。オンラインREDOログ・ファイルが名前の付けられた場所に存在し、適切なサイズである場合、そのファイルは複製プロセスに再利用されます。
LOG_FILE_NAME_CONVERTパラメータの制限事項
-
OMF初期化パラメータを設定する場合、
LOG_FILE_NAME_CONVERTパラメータは指定しないでください。 -
LOG_FILE_NAME_CONVERTパラメータは、DUPLICATEコマンドの句としては指定できません。補助インスタンスの初期化パラメータでのみ指定できます。 -
LOG_FILE_NAME_CONVERT初期化パラメータを使用して、ソース・データベース・インスタンスではOMF形式である、複製インスタンスにあるファイル用の新しい名前の生成を制御することはできません。
26.2 共有ディスクを使用しないディスク・バックアップのアクセス可能化
共有ディスクの方法を使用して、補助インスタンスでバックアップを使用できるようにできます。ターゲットまたはリカバリ・カタログ接続なしにBACKUP LOCATIONオプションがDUPLICATEコマンドに使用されていないかぎり、NFSまたは共有ディスクを使用できない場合、バックアップを格納するパスはソース・ホストおよび宛先ホストの両方に存在する必要があります。
srchostおよびdsthostという2つのホストがあるとします。srchost上のデータベースは、srcdbです。srcdbのRMANバックアップは、ホストsrchost上の/dsk1/bkpディレクトリ内に存在します。ディレクトリ/dsk1/bkpは宛先ホストで使用されているため、バックアップは宛先ホスト上の/dsk2/dupディレクトリに格納します。
バックアップをソース・ホストから宛先ホストに転送するには:
-
バックアップを格納する宛先ホスト上にあるディレクトリと同じ名前のディレクトリをソース・ホスト上に作成します。
たとえば、RMANバックアップを宛先ホストの
/dsk2/dupディレクトリに格納する場合、ソース・ホスト上に/dsk2/dupディレクトリを作成します。 -
ソース・ホスト上で、前のステップで作成したディレクトリにバックアップをコピーして、バックアップをカタログに追加します。次のいずれかの方法を使用できます。
- RMANを
TARGETとしてソース・データベースに接続し、BACKUPコマンドを使用してバックアップを実行します。たとえば、BACKUP COPY OF DATABASEコマンドを使用して、ソース・ホストの/dsk1/bkpにあるバックアップをソース・ホストの/dsk2/dupにコピーします。この場合、RMANは、新しい場所のバックアップを自動的にカタログに追加します。PDBを複製する場合、BACKUP COPY OFコマンドのPLUGGABLE DATABASE構文を使用して、PDBのバックアップのみをコピーします。 - オペレーティング・システム・ユーティリティを使用して、ソース・ホストの
/dsk1/bkpディレクトリにあるバックアップを、ソース・ホストの/dsk2/dupディレクトリにコピーします。後で、RMANをTARGETとしてソース・データベースに接続し、CATALOGコマンドを使用して、手動で転送したバックアップの場所で、ソースの制御ファイルを更新します。
- RMANを
-
ソース・ホスト上の新しいディレクトリから宛先ホスト上の同じ名前のディレクトリに、バックアップを手動で転送します。
たとえば、FTPを使用して、ソース・ホストの
/dsk2/dupディレクトリにあるバックアップを、宛先ホストの/dsk2/dupディレクトリに転送します。
/dsk2/dupディレクトリでバックアップを検索してリストアできます。