複製データベースの作成は、RMANからDUPLICATEコマンドを発行します。RMANからは、同時に2つのインスタンスに接続します。TARGETが複製元DBで、AUXILIARYが複製先のインスタンスの接続です。
OS> rman TARGET / AUXILIARY sys/パスワード@複製先インスタンス
まずは、バックアップを使った複製です。あらかじめ基となるデータベースの完全バックアップとアーカイブログを、準備しておきます。
RMANは、基となるデータベースのRMANリポジトリを確認してバックアップの保存先を確認、そしてバックアップを複製先に転送します。アーカイブログは、バックアップからのログを適用し、現在の状態に近づけるために使います。
RMAN> DUPLICATE TARGET DATABASE TO dup; -- dupという名前の複製データベースを作成 Dupl icate Dbが開始されました(開始時間: YY-MM-DD) リカバリ・カタログの代わりにターゲット・データベース制御ファイルを使用しています チャネル: ORA_AUX_DISK_1が割り当てられました チャネルORA_AUX_DISK_1: SID=153 デバイス・タイプ=DISK 〜 中略 〜 メモリ・スクリプトの内容: { Alter clone database open resetlogs; } メモリ・スクリプトを実行しています データベースがオープンしました。 Duplicate Dbが完了しました(完了時間: YY-MM-DD) RMAN>
初期化パラメータに複製データベースの作成先に関するファイルパスの指定があれば、このコマンドだけで、複製できてしまいます。
続いて、現在稼働中のデータベースを直接複製するコマンドです。この場合も、初期化パラメータに複製先のファイルパスを記述可能です。ただし今回は、DUPULICATEにファイルパスを指定するコマンドを組み入れました。
RMAN> RUN { 2> SET NEWNAME FOR DATAFILE 1 TO '/u01/app/oracle/oradata/dup/system01.dbf'; 3> SET NEWNAME FOR DATAFILE 2 TO '/u01/app/oracle/oradata/dup/sysaux01.dbf'; 4> SET NEWNAME FOR DATAFILE 3 TO '/u01/app/oracle/oradata/dup/undotbs01.dbf'; 5> SET NEWNAME FOR DATAFILE 4 TO '/u01/app/oracle/oradata/dup/users01.dbf'; 6> SET NEWNAME FOR TEMPFILE 1 TO '/u01/app/oracle/oradata/dup/temp01.dbf'; 7> 8> DUPLICATE target database TO dup 9> FROM ACTIVE database 10> SKIP TABLESPACE example 11> LOGFILE 12> GROUP 1 ('/u01/app/oracle/oradata/dup/redo01a.log') size 100M 13> ,GROUP 2 ('/u01/app/oracle/oradata/dup/redo02a.log') size 100M 14> ,GROUP 3 ('/u01/app/oracle/oradata/dup/redo03a.log') size 100M; 15> }
2〜6行目が、データファイル・一時ファイルの複製先の指示。9行目が現在稼働中のデータベースファイルを直接複製する指示。10行目は、今回複製しない表領域の指示。12〜14行目は、REDOログの作成先です。
DUPULICATEコマンドではSKIP TABLESPACE以外に、次に示すようなオプションを使用できます。
オプション | 説明 |
SKIP READONLY | DUPLICATEコマンド中の作業として読み取り専用表領域のデータ転送は除外。別途OSコピーにて転送を行い複製データベースに組み入れる |
SKIP TABLESPACE | 指定した表領域を除外 |
NOFILENAMECHECK | データファイルとREDOログファイルのファイル名チェックを行わない。異なるホストにソースデータベースと同じディレクトリ構造で複製データベースを作成する場合に指定 |
OPEN RESTRICTED | 複製データベース作成の最終盤で、複製データベースをオープンする直前に、セッション制限を掛ける |
リカバリカタログは、複数のデータベースのRMANリポジトリを記録していますが、その識別子となるのがDBIDです。DBIDは制御ファイルに記録されているのですが、複製データベースの際の状況を想定してみましょう。
今回、手順の詳細には触れませんでしたが、バックアップとアーカイブログをOSレベルでコピーして、RMANを使わずにデータベースを複製することも可能です。「複製」ですから、当然、同じDBIDを持ったデータベースが生まれます。このデータベースは同じリカバリカタログに登録できません。
そこで、DBNEWIDユーティリティではDBIDを変更可能です。また、DUPLICATEコマンドで作成された複製データベースは、自動的に別のDBIDが割り振られています。
この部分はOracle Master試験で頻出します。ぜひとも押さえておきたいポイントです。
RMAN DUPLICATEコマンドでFROM ACTIVE DATABASE句を含めずデータベースを複製した。結果について正しい説明を選べ。
a. RMANは、既存のバックアップだけを使用して複製データベースを作成
b. RMANは、複製データベースの制御ファイルを作成しない
c. 新規の複製データベースにオンラインREDOログがコピーされる
d. 複製データベースには、新たに一意のDBIDが割り当てられる
正解:d
●解説
DUPLICATEコマンドを使用してデータベースを複製すると、複製データベースには新規に一意のDBIDが割り当てられます。
aは誤りです。確かにRMANは既存のバックアップを使用しますが、アーカイブREDOログ・ファイルと増分バックアップも使用して不完全リカバリを実行します。
bは誤りです。RMANは、複製データベースの制御ファイルも作成します。
cは誤りです。オンラインREDOログ・ファイルはコピーできないため、複製先でREDOログファイルを再作成します。
データベース全体を複製したいと考えているが、「READONLY_A」「READONLY_B」という名前の2つが読み取り専用表領域に指定されていた。以下のコマンドを実行した際の正しい説明はどれか選べ。なお、ファイルパスの指定は解決済みとする。
RMAN> DUPULICATE TARGET DATABASE TO dup;
a. データベースのデータファイルがすべて複製される
b. READONLY_AとREADONLY_Bは複製されない
c. 読み取り専用表領域に関する記述がないため、失敗
d. 読み取り専用表領域のデータ転送は行われないが、複製データベースに表領域のMETA情報は登録される
正解:a
●解説
読み取り専用表領域だからといって、特別なことはないため、b、c、dは誤りです。dは、SKIP READONLYオプションを追加したときの挙動です。
Copyright © ITmedia, Inc. All Rights Reserved.