1
®1998 年 1月 21日 1
Oracle8 Oracle8 バックアップバックアップ&&リカバリリカバリ
日本オラクル株式会社日本オラクル株式会社
2
®1998 年 1月 21日 2
内容
• VLDB環境におけるバックアップの要件• Oracle8 におけるバックアップ/リカバリ• Recovery Manager のレポート機能• リカバリ・カタログのメンテナンス• Recovery Manager の設定• 活用するためのTips & 注意点
3
®1998 年 1月 21日 3
VLDB環境におけるバックアップの要件
4
®1998 年 1月 21日 4
VLDB環境におけるバックアップの要件
• バックアップ管理の自動化→ データベースによるバックアップの履歴管理
• バックアップ・リストア操作におけるミスの軽減→ Recovery Managerによるシンプルな操作
• 高速なバックアップの実現→ パラレル・バックアップ
• 効率的なデータのバックアップ→ 増分バックアップのサポート
5
®1998 年 1月 21日 5
データベースによるバックアップの履歴管理
• リカバリ・カタログによるバックアップの履歴管理– バックアップを実行した日時
– バックアップの対象領域
– バックアップの保存場所
• リストア・リカバリ時に必要なバックアップを自動判別
– 対象領域を指定する事で適切なバックアップをリストア
– リカバリ時に必要となるアーカイブログのバックアップも
自動的にリストアされる
6
®1998 年 1月 21日 6
シンプルなバックアップ・リカバリ操作
• 単一のRecovery Managerコマンドによる操作
• バックアップ先としてディスク、テープ装置を透過的
に使用可能
• RAWデバイス、OSファイルシステムの違いを意識せ
ずにバックアップ、リストアが可能
• Oracle Enterprise Manager、バックアップ管理ソフト
ウェアによる GUI 操作及び定期的なバックアップの
実行
7
®1998 年 1月 21日 7
高速なバックアップの実現
• 複数のデバイスを使用して
並列にバックアップを実行
• 割り当てるデバイス数によ
り自動的にパラレルでバッ
クアップを実行
テープテープ装置装置
ディスクディスク
リカバリ・リカバリ・カタログカタログ
OracleOracleEnterpriseEnterpriseManagerManager
RecoveryRecoveryManagerManager
ディスクディスク ディスクディスク ディスクディスク
テープテープ装置装置
テープテープ装置装置
テープテープ装置装置
(GUIツール)
Oracle8サーバー・プロセス
Oracle8サーバー・プロセス
Oracle8Oracle8サーバー・サーバー・プロセスプロセス
8
®1998 年 1月 21日 8
効率的なデータのバックアップ
• 変更されたデータのみのバックアップ
• バックアップサイズ、実行時間の短縮
• 複数レベルを組み合わせて、柔軟なバックアッ
プ計画を作成可能
9
®1998 年 1月 21日 9
Oracle8におけるバックアップ/リカバリ
10
®1998 年 1月 21日 10
Oracle8におけるバックアップの仕組み
リカバリ・カタログデータベース
管理者
Recovery Manager
Recovery Manager
制御ファイル
ターゲットDBファイル
MML(libobk.so)
MML(libobk.so)
OEM(GUI)OEM(GUI)
テープ・デバイス
バックアップ・ファイル
バックアップソフトウェアサーバー
バックアップソフトウェアサーバーバックアップ
ソフトウェアクライアント
バックアップソフトウェアクライアント
v$ビュー
V$BACKUPV$BACKUP_SET ...
Oracleサーバープロセス
Oracleサーバープロセス
Oracleサーバープロセス
Oracleサーバープロセス
Oracleサーバープロセス
Oracleサーバープロセス
SQL*Net
チャネル(SBT_TAPE)
チャネル(DISK)
イメージ・コピー
バックアップ・セット
メディア管理ベンダから提供
DBMS_BACKUP_RESTORE
バックアップ/リストアパッケージ (FIXED)
• Recovery Manager(RMAN)Oracle8でのバックアップ/リストア/リカバリ操作に使用するコマンドライン・ツールです。バックアップ等の各コマンドは管理者からRecovery Managerに対して実行されます。
• Oracleサーバ・プロセスRecovery Managerに対して実行されたバックアップ、リカバリなどの各コマンドは、実際にはOracleのサーバー・プロセスにより実行されます。RMANとサーバー・プロセスとのやりとりは、DBMS_BACKUP_RESTORE パッケージ中のファンクション、プロシージャを実行する事によって行われます。
• DBMS_BACKUP_RESTOREパッケージRecovery Managerがバックアップ/リストアを行うために実行するパッケージです。このパッケージはインスタンスが起動されていればNOMOUNT、MOUNT状態でも実行する事が可能です。またユーザーがこのパッケージを直接実行する必要はありません。
• Oracle Enterprise ManagerOracleのGUI管理ツール Oracle Enterprise Manager(OEM)からRecovery Managerを操作してバックアップ/リカバリを実行する事も可能です。この場合 OEM のコンポーネントである Backup Manager と ターゲットDB 上で動作する Agent で Recovery Manager を実行します。
• 制御ファイル制御ファイル中にはデータベースの構成に関する情報(表領域、データファイルなど)と共にRecovery Managerによって作成されたバックアップの履歴情報が格納されます。
• リカバリ・カタログターゲットDBの構成、バックアップの履歴情報、Recovery Managerのコマンドスクリプトなどを格納しておくデータベース・スキーマです。制御ファイル中にもバックアップの履歴情報が格納されるため、リカバリ・カタログを使用しない場合にもRecovery Managerによるバックアップ/リカバリを行う事が可能です。
11
• チャネルOracleのサーバー・プロセスからデバイス(ディスク、テープ装置)へのデータの流れ(ストリーム)を指す用語です。Recovery Managerからバックアップ/リストア/リカバリを実行する際には、必ず1つ以上のチャネルを割り当てる必要があります。この時割り当てるチャネルの種類で使用するデバイスが決まります。チャネルに指定出来るタイプには以下の種類があります。
– DISK OSのファイルシステムをバックアップで使用する場合に指定するチャネル。
– ‘SBT_TAPE’ Oracleと連携したバックアップ・ソフトウェアへのインターフェースを使用するチャネル。テープ装置へのバックアップを行う場合に指定します。
• バックアップ・ファイルRecovery Managerによりバックアップされたファイル。Recovery Managerによるバックアップにはバックアップ・セットとイメージコピーの2種類があります。
• バックアップ・ソフトウェア(サーバー、クライアント)メディア管理ベンダー(MMV)から提供されるバックアップ管理ソフトウェア。これはテープへのバックアップを行う際に必要となります。
• メディア管理ライブラリ(Media Management Library MML)メディア管理ベンダーから提供されるOracleとバックアップ・ソフトウェアの連携をとるライブラリ・モジュール。Oracle実行モジュール($ORACLE_HOME/bin/oracle)とダイナミックリンクさせて、バックアップ/リストア操作におけるバックアップ・ソフトウェアとのやり取りを行います。またMMLの名称は各メディア管理ベンダーによってことなります。例えばSun Solstice Backup では Database Module for Oracle(DMO) やBusiness Suit for Oracle(BMO)という名称になっています。
• ターゲット・データベースバックアップの対象となるデータベース。バックアップ・リストアを実行するサーバ・プロセスはターゲットDBのサーバ・プロセスです。
• カタログ・データベースリカバリ・カタログを格納するデータベースです。ターゲット・データベースと離れている(別のマシン上、もしくは同一マシン上でも別のディスク)ほど耐障害性が高くなります。
12
®1998 年 1月 21日 12
Recovery Manager の起動
• 実行モジュール– UNIX ・・・ rman
– Windows ・・・ rman80.exe
• 起動コマンド
%setenv ORACLE_SID je803%rman target system/manager rcvcat rman/[email protected]
Recovery Manager: リリース 8.0.3.0.0 - Production
RMAN-06005: ターゲット・データベース: JE803に接続されました。RMAN-06008: 回復カタログ・データベースに接続されました。RMAN>
%setenv ORACLE_SID je803%rman target system/manager rcvcat rman/[email protected]
Recovery Manager: リリース 8.0.3.0.0 - Production
RMAN-06005: ターゲット・データベース: JE803に接続されました。RMAN-06008: 回復カタログ・データベースに接続されました。RMAN>
•Recovery Managerの起動オプション
target ターゲット・データ・ベース用接続文字列
rcvcat リカバリ・カタログ用接続文字列
cmdfile 入力コマンド・ファイルの名前
msglog 出力メッセージ・ログファイルの名前
•リカバリ・カタログを使用しない場合の Recovery Manager の起動
リカバリ・カタログを使用しないで Recovery Manager を使用する場合は “nocatalog”キーワードを指定します。
・CONNECT コマンドによるターゲットDBへの接続
ターゲットDBへの接続は、コマンドラインからだけではなく、Recovery Manager のCONNECT コマンドにより実行する事も出来ます。
%rman target system/manager nocatalog
%rman nocatalog
Recovery Manager: リリース 8.0.3.0.0 - Production
RMAN-06009: 回復カタログに代えてターゲット・データベース制御ファイルを使用しています。RMAN> CONNECT TARGETRMAN-06005: ターゲット・データベース: JE803に接続されました。RMAN>
13
®1998 年 1月 21日 13
Recovery Manager によるバックアップ・リストア・リカバリ操作
• バックアップのコマンド例:
• リストア・リカバリのコマンド例
RUN { ALLOCATE CHANENL ch1 TYPE ‘SBT_TAPE’; BACKUP FORMAT ‘tbs_1_%d_%s_%p_%t’ (TABLESPACE tbs1); RELEASE CHANNEL ch1;}
RUN { ALLOCATE CHANENL ch1 TYPE ‘SBT_TAPE’; BACKUP FORMAT ‘tbs_1_%d_%s_%p_%t’ (TABLESPACE tbs1); RELEASE CHANNEL ch1;}
RUN{ ALLOCATE CHANNEL ch1 TYPE DISK; ALLOCATE CHANNEL ch2 TYPE 'SBT_TAPE'; RESTORE TABLESPACE tbs1; RECOVER TABLESPACE tbs1;}
RUN{ ALLOCATE CHANNEL ch1 TYPE DISK; ALLOCATE CHANNEL ch2 TYPE 'SBT_TAPE'; RESTORE TABLESPACE tbs1; RECOVER TABLESPACE tbs1;}
Recovery Manager からバックアップを実行する場合には以下の様なコマンドを使用します。
• RUNコマンド
RUNコマンドの{ ... }中に記述されたコマンドを一連のジョブとして実行します。バックアップ、リストア、リカバリなどのコマンドは RUNコマンド内で実行されなければなりません。
• ALLOCATE CHANNELコマンド
バックアップ、リストア、リカバリで使用するチャネルを割り当てます。この時指定するチャネルの種類で使用するデバイスが決定されます。
– DISK
OSのファイルシステムをバックアップで使用する場合に指定するチャネル。
– SBT_TAPE
Oracleと連携したバックアップ・ソフトウェアへのインターフェースを使用するチャネル。テープ装置へのバックアップを行う場合に指定します。
• BACKUPコマンド
バックアップ・セットを使用したバックアップを実行します。イメージ・コピーによるバックアップはCOPYコマンドを使用します。バックアップ・セットやイメージ・コピーについては以降のページを参照して下さい。
バックアップ・セットの宛先、名前はFORMAT句で指定します。この時‘%d’の様な置換文字列を使用する事が可能です。置換文字列はバックアップの実行時にそれぞれの値(%dの場合、データベース名)に変換されます。
• RELEASE CHANNELコマンド
割り当てたチャネルを開放します。通常チャネルはジョブの終了時に自動的に開放されるため、明示的に指定する必要はありません。ジョブ内でバックアップ先を変更する場合に用います。
14
®1998 年 1月 21日 14
Oracle8 で使用可能なバックアップ形式
• バックアップ・セット(Recovery Manager : BACKUPコマンド)
• イメージ・コピー(Recovery Manager : COPYコマンド)
• OSコピーcp、tar などの OS コマンド
15
®1998 年 1月 21日 15
Oracle8におけるバックアップ
• Recovery Manager によるバックアップのコマンド例
• Oracle8で使用可能なバックアップの形式– バックアップ・セット (Recovery Manager : BACKUPコマンド)
– イメージ・コピー (Recovery Manager : COPYコマンド)
– OSコピー
RUN { ALLOCATE CHANENL ch1 TYPE DISK; BACKUP FORMAT ‘/backup/%d_%s_%p_%t’ (TABLESPACE tbs1); RELEASE CHANNEL ch1;}
RUN { ALLOCATE CHANENL ch1 TYPE DISK; BACKUP FORMAT ‘/backup/%d_%s_%p_%t’ (TABLESPACE tbs1); RELEASE CHANNEL ch1;}
Recovery Manager からバックアップを実行する場合には以下の様なコマンドを使用します。
• RUNコマンド
RUNコマンドの{ ... }中に記述されたコマンドを一連のジョブとして実行します。バックアップ、リストア、リカバリなどのコマンドはRUNコマンド内で実行されなければなりません。
• ALLOCATE CHANNELコマンド
バックアップ、リストア、リカバリで使用するチャネルを割り当てます。この時指定するチャネルの種類で使用するデバイスが決定されます。
– DISK
OSのファイルシステムをバックアップで使用する場合に指定するチャネル。
– SBT_TAPE
Oracleと連携したバックアップ・ソフトウェアへのインターフェースを使用するチャネル。テープ装置へのバックアップを行う場合に指定します。
• BACKUPコマンド
バックアップ・セットを使用したバックアップを実行します。イメージ・コピーによるバックアップはCOPYコマンドを使用します。バックアップ・セットやイメージ・コピーについては以降のページを参照して下さい。
バックアップ・セットの宛先、名前はFORMAT句で指定します。この時‘%d’の様な置換文字列を使用する事が可能です。置換文字列については「注意事項&Tips」を参照して下さい。
• RELEASE CHANNELコマンド
割り当てたチャネルを開放します。通常チャネルはジョブの終了時に自動的に開放されるため、明示的に指定する必要はありません。ジョブ内でバックアップ先を変更する場合に用います。
16
バックアップ・セットは複数のファイルを単一のセットにまとめる形式のバックアップです。バックアップ・セットとして作成されるバックアップは、オリジナルのデータファイルと比較した場合サイズ、フォーマット共に異なります。このためバックアップ・セットはRecovery Manager以外では使用する事が出来ません。
バックアップの対象として指定出来る単位には以下のものがあります。
• データベース全体(全てのデータファイルと制御ファイルが含まれます。ただしオンラインログファイルは含まれません。)
• 表領域
• データファイル
• 制御ファイル
• アーカイブログ
またバックアップ対象には複数の表領域、データファイルを含める事が可能です。以下のコマンド例を参照してください。
®1998 年 1月 21日 16
バックアップ・セット
RUN { ALLOCATE CHANENL ch1 TYPE DISK; BACKUP FORMAT ‘/backup/%d_%s_%p_%t’ (TABLESPACE tbs1); RELEASE CHANNEL ch1;}
RUN { ALLOCATE CHANENL ch1 TYPE DISK; BACKUP FORMAT ‘/backup/%d_%s_%p_%t’ (TABLESPACE tbs1); RELEASE CHANNEL ch1;}
データファイル 1
データファイル 2
データファイル 3
表領域 tbs1
バックアップ・セットへのバックアップ
バックアップ・セット
表領域tbs1、tbs2を1つのバックアップセットにバックアップする場合:BACKUP FORMAT '/backup/%d_%s_%p_%t' (TABLESPACE tbs1,tbs2);
表領域tbs1、tbs2を別々のバックアップセットにバックアップする場合:BACKUP FORMAT '/backup/%d_%s_%p_%t' (TABLESPACE tbs1) (TABLESPACE tbs2);
17
®1998 年 1月 21日 17
バックアップ・セットの分割
RUN { ALLOCATE CHANENL ch1 TYPE DISK; SET LIMIT CHANNEL 2000 KBYTES; BACKUP FORMAT ‘/backup/%d_%s_%p_%t’ (TABLESPACE tbs1); RELEASE CHANNEL ch1;}
RUN { ALLOCATE CHANENL ch1 TYPE DISK; SET LIMIT CHANNEL 2000 KBYTES; BACKUP FORMAT ‘/backup/%d_%s_%p_%t’ (TABLESPACE tbs1); RELEASE CHANNEL ch1;}
バックアップ・ピース 2
バックアップ・セット
バックアップ・ピース 1
データファイル 1
データファイル 2
データファイル 3
表領域 tbs1
最大ファイルサイズを指定してバックアップ・セットへのバックアップ
1つのバックアップ・セットは複数のバックアップ・ピース(断片)と呼ばれる単位から構成されます。バックアップ・ピースによるバックアップ・セットの分割は、Recovery Managerの SET LIMITコマンドでバックアップ・ピースのサイズを指定する事で行われます(上記の例を参照してください)。
これはバックアップ・セットが OSのファイルシステムの制限や1本のテープ容量に収まらない場合に用いられます。
SET LIMIT CHANNEL ch1 nnnn KBYTES;(nnnn は整数を指定)
18
®1998 年 1月 21日 18
バックアップ・セットによるバックアップ時の動作
•ブロックの整合性検査•ブロックの変更回数チェック
DBブロック単位のコピー
データファイル バックアップ・セット一度も使用されていないブロック
バックアップ・セットへのバックアップでは、以下の処理が行われます。
• バックアップ対象のデータファイルに対するチェックポイントの実行
• 各DBブロックについての処理
また各DBブロックについて以下の処理を実行します。
• ブロックの読み込みデータファイル中の全てのブロックを読み込み、以下の処理を行います。
• ブロックの整合性検査各ブロックについて整合性検査を実施し、チェックサムをブロックに書き込みます。この時書き込まれたチェックサムは、リストア時の妥当性検査で使用されます。
• ブロックの変更回数各ブロック中には、そのブロックが作成されて(表領域の作成など)から、変更された回数が記録されています。サーバープロセスはブロックのコピー中にこの値を確認し、一度も変更されていない(未使用の)ブロックについては、バックアップには書き出しません。
• バックアップ・セットへのブロックの書き出し
バックアップが正常に終了した時点で、制御ファイルとリカバリ・カタログにバックアップの名前、実行した日時、対象領域(データファイル名)、バックアップ時点のSCNなどの情報が書き込まれます。
19
®1998 年 1月 21日 19
アーカイブログのバックアップ
• 初期化パラメータ LOG_ARCHIVE_DEST で指定され
たディレクトリに存在するアーカイブログの一括バックアップ
• バックアップされたアーカイブの削除も可能
• リカバリ時に必要なアーカイブのバックアップが自動的にリストアされる
RUN{ ALLOCATE CHANNEL ch1 TYPE 'SBT_TAPE'; BACKUP ARCHIVELOG ALL DELETE INPUT FORMAT ‘arc_%d_%s_%p_%t’;}
RUN{ ALLOCATE CHANNEL ch1 TYPE 'SBT_TAPE'; BACKUP ARCHIVELOG ALL DELETE INPUT FORMAT ‘arc_%d_%s_%p_%t’;}
20
®1998 年 1月 21日 20
パラレル・サーバーのサポート
• パラレル・サーバーの各インスタンスにバックアップを実行させる事が可能
• 各インスタンスがバックアップする対象はコマンド中で明示的に指定する
• スレッド別にアーカイブログをバックアップする事も可能
allocate channel node_1 type disk connect 'internal/kernel@node_1';allocate channel node_2 type disk connect 'internal/kernel@node_2';backup filesperset 1 format 'df_%s_%p' (tablespace system, data1, data2 channel node_1) (tablespace data3, data4 channel node_2);
allocate channel node_1 type disk connect 'internal/kernel@node_1';allocate channel node_2 type disk connect 'internal/kernel@node_2';backup filesperset 1 format 'df_%s_%p' (tablespace system, data1, data2 channel node_1) (tablespace data3, data4 channel node_2);
・パラレル・サーバでのバックアップのコマンド例
run { allocate channel node_1 type disk connect 'internal/kernel@node_1'; allocate channel node_2 type disk connect 'internal/kernel@node_2'; backup filesperset 1 format 'df_%s_%p' (tablespace system, data1, data2 channel node_1) (tablespace data3, data4 channel node_2); backup filesperset 20 format 'al_%s_%p' (archivelog until time 'SYSDATE' thread 1 delete input channel node_1); (archivelog until time 'SYSDATE' thread 2 delete input channel node_2); release channel node_1; release channel node_2;}
21
®1998 年 1月 21日 21
増分バックアップ
月末level 0
バックアップ 月曜 ~ 金曜level 2
バックアップ
週末level 1
バックアップ 月曜 ~ 金曜level 2
バックアップ
31日 月曜 火曜 水曜 木曜 金曜 土・日曜 月曜 火曜 水曜
一週間分の変更をバックアップ
一週間分の変更をバックアップ
一日分の変更をバックアップ
一日分の変更をバックアップ
ファイル全体をバックアップ
ファイル全体をバックアップ
バックアップ・セットによるバックアップの場合、前回のバックアップから変更された部分のみをバックアップする増分バックアップが使用可能です。
Oracle8 では複数レベルの増分バックアップをサポートしているため、運用に合わせた柔軟な構成が可能です。上図は、以下の様な3つのレベルによる増分バックアップを使用したバックアップで運用を行っている場合の例です。
• 月末毎月月末にレベル0増分バックアップを実行します。レベル0増分バックアップは全てのデータを含むバックアップで、増分バックアップを回復する際のベースとなるものです。このため上図の例で示した運用パターンでファイルに障害が起こった場合、常に月末に取得したレベル0増分バックアップをリストアし、その後適切な増分バックアップとアーカイブログを適用する事になります。
• 月曜~金曜の毎日月曜から金曜には、それぞれ一日毎に変更されたデータをバックアップします。上図の例ではレベル2バックアップを実行し、前日からの差分をバックアップしています。
• 週末各週の週末に、その週に変更されたデータをまとめてバックアップします。上図の例ではこれをレベル1増分バックアップで実行しています。これにより月の後半でデータに障害が起こった場合でも、それまでの週毎の変更を適用する事で、回復するために適用しなければならないバックアップを減らす事が可能です。
また増分バックアップはARCHIEVLOG、NOARCHIVELOGモードのどちらでも実行可能です。ただしNOARCHIVELOGモードでのバックアップはデータベースを正常に停止した状態で(SHUTDOWN NORMAL、IMMEDIATE)、データベース全体をバックアップする必要があります。
22
®1998 年 1月 21日 22
増分バックアップの種類
• レベル0増分バックアップ– 増分バックアップのベースとなるバックアップ
• (非累積)増分バックアップ– 同一レベルにおける変更の差分を取得するバックアップ
• 累積増分バックアップ– 同一レベルにおける変更の累積を取得するバックアップ
増分バックアップにはレベル0、非累積、累積の3種類があります。
•レベル0増分バックアップデータファイルの回復を行う際のベースとなるバックアップです。増分バックアップを実行する際には、必ず対象データファイルにレベル0増分バックアップが存在しなければなりません。レベル0増分バックアップと非増分バックアップでは、作成されるバックアップ自体には違いはありません。しかし非増分バックアップは増分バックアップの回復計画の対象として選択されません。
バックアップ・セットによるレベル0増分バックアップのコマンド例:RUN { ALLOCATE CHANNEL ch1 TYPE 'SBT_TAPE'; BACKUP INCREMENTAL LEVEL 0 FORMAT 'inclv0_db_%s_%p_%t' (DATABASE);}
イメージ・コピーによるレベル0増分バックアップのコマンド例:RUN{ ALLOCATE CHANNEL ch1 TYPE DISK; COPY LEVEL 0 DATAFILE '/oracle/data/rman_db/dbs/data2rman_db.dbf' TO '/oracle/backup/rman_db/data2rman_db.bak';}
23
®1998 年 1月 21日 23
非累積増分バックアップ(デフォルトの増分バックアップ)
回復に必要なファイル=バックアップ A+バックアップ E+ バックアップ F+バックアップ G+REDOログ
回復に必要なファイル=バックアップ A+バックアップ E+ バックアップ F+バックアップ G+REDOログ
バックアップ B
バックアップ D
バックアップ E
バックアップ F
level 0バックアップ
level 2バックアップ
level 2バックアップ
level 1バックアップ
level 2バックアップ
level 2バックアップ
媒体障害の発生
level 2バックアップ
バックアップ C
バックアップ G
REDOログ
• 非累積増分バックアップ(デフォルトの増分バックアップのタイプ)増分バックアップにおけるデフォルトのバックアップです。指定されたレベルと同一レベル以下で前回実行された増分バックアップを起点として、それ以降に変更されたブロックをバックアップします。例えばレベル2を指定した場合、前回レベル2以下で増分バックアップを実行した時点以降に変更されたブロックをバックアップします。このため同一レベルでの差分をバックアップする形のバックアップとなります。
非累積増分バックアップのコマンド例:RUN{ ALLOCATE CHANNEL ch1 TYPE ‘SBT_TAPE‘; BACKUP INCREMENTAL LEVEL 2 (DATABASE FORMAT 'inclv2_db_%d_%s_%p_%t'); RELEASE CHANNEL ch1;}
24
®1998 年 1月 21日 24
累積増分バックアップ
回復に必要なファイル=バックアップ A+バックアップ E+ バックアップ G+REDOログ
回復に必要なファイル=バックアップ A+バックアップ E+ バックアップ G+REDOログ
バックアップ A
バックアップ B
バックアップ D
バックアップ E
バックアップ F
level 0バックアップ
level 2バックアップ
level 2バックアップ
level 1バックアップ
level 2バックアップ
level 2バックアップ
媒体障害の発生
level 2バックアップ
バックアップ C
バックアップ G
REDOログ
•累積増分バックアップ(CUMULATIVEオプション)前回の(同一レベル-1)のレベルで実行した増分バックアップ以降に変更されたブロックをバックアップします。BACKUPコマンドでCUMULATIVEオプションを指定した増分バックアップの場合に実行されます。非累積増分バックアップに比べて作成されるバックアップのサイズが大きくなり、冗長なバックアップが多くなりますが、回復時に必要となるバックアップの量を減らし、回復に必要となる時間を節約する事が出来ます。
累積増分バックアップのコマンド例:RUN{ ALLOCATE CHANNEL ch1 TYPE ‘SBT_TAPE’; BACKUP INCREMENTAL LEVEL 2 CUMULATIVE (DATABASE FORMAT 'inclv2c_db_%d_%s_%p_%t'); RELEASE CHANNEL ch1;}
25
®1998 年 1月 21日 25
増分バックアップ時の動作
•ブロックの検査•ブロックの変更回数チェック•SCNの比較
DBブロック単位のコピー
データファイル
バックアップ・セット
前回のバックアップ以降に変更されたブロック
通常のバックアップ・セットによるバックアップ時の動作に加え、増分バックアップでは前回対象領域がバックアップされた時点でのSCN(システム変更番号)と、データブロックに含まれるSCNが比較されます。データブロックに含まれるSCNとは、ブロックが最後に変更された時点のSCNです。
この時前回バックアップ時のSCNよりデータブロックの SCNが大きい場合には、そのブロックはバックアップ対象となりバックアップ・セットに書き出されます。システム変更番号はデータベースに対する変更に対して一意に割り振られる番号であるため、SCNの比較により前回のバックアップから変更されたブロックを判別する事が可能となります。
26
®1998 年 1月 21日 26
Oracle8におけるリストア/リカバリ
回復に必要なファイル=バックアップ A+バックアップ E+ バックアップ F+バックアップ G+REDOログ
回復に必要なファイル=バックアップ A+バックアップ E+ バックアップ F+バックアップ G+REDOログ
バックアップ Aバックアップ B
バックアップ D
バックアップ E
バックアップ F
level 0バックアップ
level 2バックアップ
level 2バックアップ
level 1バックアップ
level 2バックアップ
level 2バックアップ
媒体障害の発生
level 2バックアップ
バックアップ C
バックアップ G
REDOログ
RUN{ ALLOCATE CHANNEL ch1 TYPE DISK; ALLOCATE CHANNEL ch2 TYPE 'SBT_TAPE'; RESTORE TABLESPACE tbs1; RECOVER TABLESPACE tbs1;}
RUN{ ALLOCATE CHANNEL ch1 TYPE DISK; ALLOCATE CHANNEL ch2 TYPE 'SBT_TAPE'; RESTORE TABLESPACE tbs1; RECOVER TABLESPACE tbs1;}
Recovery Managerによるリストア/リカバリでは、必要なバックアップとアーカイブログを自動的に判断して操作を実行します。増分バックアップやイメージコピーなどが混在している場合でも、最適な計画を選択してリストアを実行します。またバックアップされたアーカイブログが存在する場合、必要なアーカイブログもディスク上に自動的にリストアされます。
Recovery Managerからリストア、リカバリを実行する場合に使用するコマンド
•RESTOREコマンド
指定された領域(DB全体、表領域、データファイル)のリストアを実行します。この時指定された領域がオンラインの場合には、安全のためリストアは実行されません。リストア実行時にはRUNコマンド内で割り当てられているチャネルで指定されたメディア上に存在するバックアップの中から、最新のバックアップが自動的にリストアされます。またRESTOREコマンドでは増分バックアップは適用されません。増分バックアップはRECOVERコマンドを実行した時点で対象領域に適用されます。
•RECOVERコマンド
指定された対象(DB全体、表領域、データファイル)に対して媒体回復を実行します。この時バックアップされたアーカイブ・ログが必要な場合、自動的に必要なアーカイブログのバックアップをディスク上にリストアします。
またインクリメンタル・バックアップの適用もRECOVERコマンドで行います。リカバリの方法として増分バックアップとアーカイブ・ログのどちらも適用可能な場合、Recovery Managerは必ず増分バックアップの適用を行います。
上記の例では複数のチャネルを割り当てています。これはRecovery Managerがリストアするファイルを選択する際、割り当てられたチャネルに保存されているバックアップのみをリストアの候補とするためです。このためリストア、リカバリ時には、それまで使用したチャネルを全て割り当てるようにしてください。
27
®1998 年 1月 21日 27
イメージ・コピー
•ブロックの整合性検査
DBブロック単位のコピー
データファイル イメージ・コピー一度も使用されていないブロック
イメージ・コピーはRecovery Managerによって作成されるデータファイルのコピーです。このためバックアップ・セットと異なり、ファイルのサイズ、フォーマットはオリジナルのファイルと同じになります。イメージ・コピーの実行ではデータファイル、制御ファイル、アーカイブログのいずれかのみ指定可能です。以下にコマンドの例を示します。
また対象がデータファイルの場合、絶対ファイル番号を指定してイメージ・コピーを行う事も可能です。
イメージ・コピーをテープ上に作成する事は出来ません。ただしディスク上のイメージ・コピーをテープにバックアップ・セットとしてバックアップする事は可能です。
RUN{ ALLOCATE CHANNEL ch1 TYPE DISK; COPY DATAFILE '/oracle/data/rman_db/dbs/data2rman_db.dbf' TO '/oracle/backup/rman_db/data2rman_db.bak';}
RUN{ ALLOCATE CHANNEL ch1 TYPE DISK; COPY DATAFILE 05 TO '/oracle/backup/rman_db/data2rman_db.bak';}
28
®1998 年 1月 21日 28
• RESTOREコマンド
• SWITCHコマンド
イメージ・コピーを使用したリストア
バックアップ データファイル バックアップ
バックアップ データファイル
データファイル
データファイル 元データファイル
RESTOREコマンドの実行
SWITCHコマンドの実行
ファイルのコピー
DB上のデータファイルエントリを変更
イメージ・コピーを使用してデータファイルをリストアする場合、Recovery Manager のRESTORE コマンドと SWITCH コマンドの2種類が使用可能です。
SWITCHコマンドを用いた場合、ディスク上に存在するバックアップを直接データファイルとして使用します。このためファイルのコピーを実行する必要が無いので、リストアに必要となる時間を短縮できます。これはSQLのALTER DATABASE RENAME FILEコマンドと同じ処理になります。またSWITCHされたイメージ・コピーのバックアップ情報はリカバリ・カタログから削除されます。
以下にそれぞれのコマンド例を示します。
注)Recovery ManagerではSQLコマンドを用いて、SQL文を実行する事が可能です。この時実行SQL文として引用符(‘ や “)で囲まれた文字列を指定します。SQLコマンド中でデータファイルの指定などを行う場合、単一引用符を2つ重ねて('')使用する必要があります。
RESTOREコマンドによるリストアの例:RUN{ ALLOCATE CHANNEL ch1 TYPE DISK; RESTORE DATAFILE '/mnt3/dbs/tstrman.dbf'; RECOVER DATAFILE '/mnt3/dbs/tstrman.dbf'; SQL "ALTER DATABASE DATAFILE ''/mnt3/dbs/tstrman.dbf''ONLINE";}
SWITCHコマンドによるリストアの例:RUN{ ALLOCATE CHANNEL ch1 TYPE DISK; SWITCH DATAFILE '/mnt3/dbs/tstrman.dbf' TO DATAFILECOPY '/mnt3/backkup/tstrman.dbf'; RECOVER DATAFILE '/mnt3/backkup/tetrman.dbf'; SQL "ALTER DATABASE DATAFILE ''/mnt3/backkup/testrman_db.dbf'' ONLINE";}
29
®1998 年 1月 21日 29
バックアップ・セットとイメージコピーの比較
バックアップ・セット イメージ・コピーバックアップの単位 DB 全体、表領域、データ
ファイル、複数アーカイブログの一括バックアップ
データファイル、制御ファイル、アーカイブログ
テープ装置への書き込み
可能 不可(ディスク上のイメージ・コピーはテープに書き込み可能)
増分バックアップ 可能 不可(増分バックアップのベースとする事は可能)
ファイルの多重化 可能 不可リストア時の処理 バックアップからブロック
単位で必要なブロックを取り出す。
バックアップをそのまま使用する。SWITCH コマンドによる高速なリストアも可能。
30
®1998 年 1月 21日 30
OSコピー
• OSコマンド(cp,dd...)によるバックアップ方法
• Oracle8でもOracle7と同じバックアップ/リカバリを使用
可能 → 運用パターンの変更は不要
• cp などのファイル単位のOSコピーを、RecoveryManagerのリカバリで使用する事も可能
→ CATALOGコマンドによるリカバリ・カタログへの登録
RMAN>CATALOG DATAFILECOPY '/backup/systemora803.dbf';RMAN>CATALOG ARCHIVELOG '/backup/arch18.log';RMAN>CATALOG DATAFILECOPY '/backup/systemora803.dbf';RMAN>CATALOG ARCHIVELOG '/backup/arch18.log';
Oracle8でのバックアップでは、Recovery Managerを用いずにOracle7で行っていたOSコピーによるバックアップ手法を用いる事も可能です。
OSコピーによるバックアップ時の処理は以下の様になります。
• ALTER ... BEGIN BACKUP の実行(ホットバックアップ・モードへの変更)BEGIN BACKUPにより対象の領域に対してチェックポイントが実行されます。またこれ以降に対象領域のブロックが変更される場合、ブロック全体のイメージがREDOに書き出されます。
• OSコマンドによるコピーの実行
• ALTER ... END BACKUP の実行(ホットバックアップ・モードの終了)
またRecovery ManagerのCATALOGコマンドを用いて、OSコピーをリカバリ・カタログに登録する事も出来ます。これにより OSコマンドで作成したバックアップを RecoveryManager によるリストア、リカバリで用いる事が出来ます。OSコピーのカタログへの登録については「リカバリ・カタログのメンテナンス」を参照してください。
31
®1998 年 1月 21日 31
Recovery ManagerとOSコピー(≒Oracle7)におけるバックアップの違い
RecoveryManager
OS コマンド(≒Oracle7)
オンライン・バックアップ時のホット・バックアップ・モードへの変更
不要 必要
オンライン・バックアップを使用した回復時の REDO の適用
必要 必要
バックアップ中に更新されるブロック全体の REDO への書き出し
なし あり
•オンライン・バックアップ時のホットバック・アップモードへの変更
Recovery ManagerによるバックアップではServer Managerなどから明示的にALTER TABLESPACE ... BEGIN BACKUP;などのコマンドを実行する必要はありません。
しかしバックアップ対象のファイルに対するチェックポイントなどは内部的に実行されます。
•オンライン・バックアップを使用した回復時のREDOの適用
Recovery Managerを使用して取得したオンライン・バックアップでも、回復時にはREDOの適用が必要です。
•バックアップ中に更新されるブロック全体のREDOへの書き出し
これはRecovery Managerによるバックアップでは、バックアップ時の分裂ブロックの検出を行っているためです。分裂ブロックについては次ページを参照して下さい。
32
®1998 年 1月 21日 32
Recovery ManagerとOSコピー(≒Oracle7)におけるバックアップの違い(分裂ブロックの検出)
• 分裂ブロックとは– 単一の Oracle ブロック内で整合性が取れていないブロック
– DBWRによる書き出しと、バックアップのための読み取りが同時に一つのブロックに対して行われた場合に発生
• OSコピーの場合– ホット・バックアップ・モード中の更新の場合、必ず更新前のブロッ
ク全体のイメージをREDOに書き出す
– REDO適用時にまずブロックイメージが適用される
• Recovery Managerの場合– 読み込んだブロックが分裂ブロックの場合、再度そのブロックを
読み直す
通常1つのデータベース・ブロックは複数のOSブロックから構成されます。
例えばSolarisの場合、OSのブロックサイズは通常512bytesなので、2KBのデータベース・ブロックは4つのOSブロックから構成されます。
33
®1998 年 1月 21日 33
パラレル・バックアップ
• パラレル・バックアップの条件– 複数チャネルの割り当て
– バックアップセット毎のファイル数を指定
RUN{ ALLOCATE CHANNEL ch1 TYPE 'SBT_TAPE'; ALLOCATE CHANNEL ch2 TYPE 'SBT_TAPE'; BACKUP FORMAT '%d_%s_%p_%t' (TABLESPACE data1) (TABLESPACE data2) (TABLESPACE data3) (TABLESPACE data4);}
RUN{ ALLOCATE CHANNEL ch1 TYPE 'SBT_TAPE'; ALLOCATE CHANNEL ch2 TYPE 'SBT_TAPE'; BACKUP FORMAT '%d_%s_%p_%t' (TABLESPACE data1) (TABLESPACE data2) (TABLESPACE data3) (TABLESPACE data4);}
バックアップ・セット、イメージ・コピーのどちらの場合でも、複数のデバイスを使用して同時にバックアップを行うパラレル・バックアップが可能です。
パラレル・バックアップは上記の条件が満たされた場合に自動的に実行されます。
また通常この他にもバックアップ管理ソフトウェア側で複数デバイスを使用可能にする設定も必要となります。
34
®1998 年 1月 21日 34
パラレル実行とコマンドの書式
• パラレルに実行される場合
• シリアルに実行される場合
RUN{ ALLOCATE CHANNEL c1 TYPE disk; ALLOCATE CHANNEL c2 TYPE disk; COPY DATAFILE 01 TO ‘/backups/copy_01.dbf’, DATAFILE 02 TO ‘/backups/copy_02.dbf’;}
RUN{ ALLOCATE CHANNEL c1 TYPE disk; ALLOCATE CHANNEL c2 TYPE disk; COPY DATAFILE 01 TO ‘/backups/copy_01.dbf’, DATAFILE 02 TO ‘/backups/copy_02.dbf’;}
RUN{ ALLOCATE CHANNEL c1 TYPE disk; ALLOCATE CHANNEL c2 TYPE disk; COPY DATAFILE 01 TO ‘/backups/copy_01.dbf’; COPY DATAFILE 02 TO ‘/backups/copy_02.dbf’;}
RUN{ ALLOCATE CHANNEL c1 TYPE disk; ALLOCATE CHANNEL c2 TYPE disk; COPY DATAFILE 01 TO ‘/backups/copy_01.dbf’; COPY DATAFILE 02 TO ‘/backups/copy_02.dbf’;}
Recovery ManagerのRUNコマンドでは、{...}内に記述されたコマンドを順番に実行します。この時パラレルの度合いは、1つのコマンドのコンテキストの中だけで適用されます。例えば、2つのデータファイル・コピーが必要である場合、2つのCOPYコマンドを個別に発行した場合、それぞれのコマンドはシリアルに実行されます。2つのコピーをパラレルに実行するには、1つのCOPYコマンドの中で両方のデータファイルのコピーを指定します。
35
®1998 年 1月 21日 35
レポート機能
36
®1998 年 1月 21日 36
レポート機能の概要
ターゲットデータベース
リカバリ・マネージャー
RMAN>リカバリ・カタログ
Oracleデータベース
管理者が知りたい情報
•現在どのようなバックアップが存在するか
•UNRECOVERABLE操作をしたためにリカバリする事が出来ないファイルはどれか
•どのバックアップ・ファイルを削除しても良いのか
•どのファイルがバックアップを必要としているのか
•最近5日間バックアップが取られていないファイルはどれか
•現在どのようなバックアップが存在するか
•UNRECOVERABLE操作をしたためにリカバリする事が出来ないファイルはどれか
•どのバックアップ・ファイルを削除しても良いのか
•どのファイルがバックアップを必要としているのか
•最近5日間バックアップが取られていないファイルはどれか
Oracle7までは、データベース管理者がバックアップ情報を管理し、不要なバックアップなどを決定する必要がありました。 Oracle8ではRecovery Managerが、これらの情報を管理者の代わりに管理してくれます。管理者はRecovery Managerのリポート機能を利用する事によって、バックアップの管理に必要な情報を得る事が出来ます。
Recovery Managerはバックアップやリカバリに必要な情報やファイルをユーザーの要件に基づいて表示します。データベース管理者は、リポート機能を利用する事によって、以下のような情報を得る事が出来ます。
• 現在どのようなバックアップが存在するか
• UNRECOVERABLE操作をしたためにリカバリする事が出来ないファイルはどれか(REPORT UNRECOVERABLE....)
• 削除しても問題の無いバックアップ・ファイルはどれか(REPORT OBSOLETE UNTIL TIME....)
• 最近 n 日間バックアップが取られていないファイルはどれか (REPORT NEED BACKUP DAYS n ....)
• 増分バックアップを連続して実行し過ぎたために、回復に必要な増分バックアップが n 個より多くなってしまったファイルはどれか(REPORT NEED BACKUP INCREMENTAL n ...)
37
®1998 年 1月 21日 37
リカバリ・カタログ内の情報表示
• LIST コマンド– 存在するバックアップをすべて表示する場合
– デバイスを指定してバックアップを表示する場合
– 登録されているデータベース情報を表示する場合
RMAN> LIST BACKUPSET OF DATABASE;RMAN> LIST COPY OF TABLESPACE tbs1;
RMAN> LIST BACKUPSET OF DATABASE;RMAN> LIST COPY OF TABLESPACE tbs1;
RMAN> LIST BACKUPSET OF DATABASE DEVICE TYPE ‘SBT_TAPE’;RMAN> LIST BACKUPSET OF DATABASE DEVICE TYPE ‘SBT_TAPE’;
RMAN> LIST INCARNATION OF DATABASE;RMAN> LIST INCARNATION OF DATABASE;
• LIST BACKUPSETコマンドの実行例:
• LIST INCARNATION コマンドの実行例:
RMAN> LIST BACKUPSET OF DATABASE;
RMAN-03022: コンパイル・コマンド: listRMAN-06230: データファイルのバックアップ・リストRMAN-06231: キー File 型 LV 完了時刻 Ckp SCN Ckp時刻RMAN-06232: ------- ---- ------------ -- --------------- ---------- --------RMAN-06233: 195 1 Full 97-08-05 12394 97-08-05RMAN-06233: 1272 1 Full 97-09-05 35119 97-09-05RMAN-06233: 1273 1 Full 97-09-05 35120 97-09-05RMAN-06233: 195 2 Full 97-08-05 12394 97-08-05RMAN-06233: 1272 2 Full 97-09-05 35119 97-09-05 : :
RMAN> LIST INCARNATION OF DATABASE;
RMAN-03022: コンパイル・コマンド: listRMAN-06240: データベースの表示リストRMAN-06241: DBキー Incキー DB名 DB ID CUR Reset SCN Reset時刻RMAN-06242: ------- ------- -------- --------------- --- ---------- ---------RMAN-06243: 203 204 CATALOG 155514224 YES 1 97-08-02RMAN-06243: 1 2 RMAN_DB 757973162 YES 1 97-08-04
38
®1998 年 1月 21日 38
UNRECOVERABLE操作が行われたファイルのレポート
• REPORT UNRECOVERABLE コマンド
• UNRECOVERABLE 操作の例– CREATE TABLE NOLOGGING AS SELECT
– CREATE INDEX NOLOGGING
– SQL*Loader (NOLOGGING)
– PARALLEL INSERT (NOLOGGING)
RMAN> REPORT UNRECOVERABLE DATABASE;RMAN> REPORT UNRECOVERABLE DATABASE;
REPORT UNRECOVERBLEコマンドを実行する事で現在のバックアップでは完全に回復する事の出来ないデータファイルを表示する事が出来ます。
この時データファイルのバックアップが存在しないというだけでは回復不能とはみなされません。これはこの様なデータファイルの場合、そのデータファイルが作成された後のアーカイブログがすべて存在すれば、SQL文のALTER DATABASE CREATE DATAFILEコマンドを使用して回復する事が可能なためです。
このためREPORT UNRECOVERABLEコマンドで表示されるデータファイルは以下の様な条件に当てはまるものになります。
• UNRECOVERBLE(NOLOGGING)操作が実行されたオブジェクトを含むファイル
• 作成後一度もバックアップを実行しておらず、かつ作成後のアーカイブログが一部でも存在しないもの
REPORT UNRECOVERABLEコマンドの実行例:
注)Oracle7の CREATE TABLE や CREATE INDEX コマンドで指定可能な“UNRECOVERABLE”オプションは、Oracle8では“NOLOGGING”オプションに変更されています。ただし互換性のために“UNRECOVERABLE"も引き続き使用する事が可能ですが、今後は”NOLOGGING“を指定するようにしてください。
RMAN>REPORT UNRECOVERABLE DATABASE;RMAN-03022: コンパイル・コマンド: reportRMAN-06250: 回復不能操作のためバックアップの必要なファイルの一覧RMAN-06251: File 必要なバックアップの型 名前RMAN-06252: ---- ----------------------- ---------------------------RMAN-06253: 6 full /test/mnt9/data/test1.dbfRMAN-06253: 9 full /test/mnt9/data/test4.dbfRMAN-06253: 10 full /test/mnt9/data/test5.dbfRMAN-06253: 11 full /test/mnt9/data/test6.dbf : :
39
®1998 年 1月 21日 39
削除可能なファイルのレポート
• REPORT OBSOLETE コマンド
• 指定した時間以前へのPoint-In-Time回復が必要ない場合に、このレポート コマンドを使用すれば、削除可能なバックアップファイルの一覧が表示されます。
RMAN>REPORT OBSOLETE UNTIL TIME "08/18/1997 16:17:00";RMAN>REPORT OBSOLETE UNTIL TIME "08/18/1997 16:17:00";
以下にREPORT OBSOLETEコマンドの実行例を示します。
この例でも分かるように、REPORT コマンドは Recovery Managerのコマンドラインから直接実行します。RUNコマンド内では実行出来ません。
REPORT OBSOLETEコマンドの注意事項
• バックアップ・ファイルが削除可能となるタイミングデータベース全体のバックアップをとった時に、それ以前にとったデータベース全体のバックアップや、表領域ごとのバックアップは削除可能となると考えられますが、実際には、さらにその次のバックアップをとったタイミングで、削除可能になります。ただし、そのバックアップは必ずしもデータベース全体のバックアップである必要はありません。
• NLS_DATE_FORMAT環境変数REPORT OBSOLETE コマンドで UNTIL TIMEを使用する場合、環境変数NLS_DATE_FORMATを指定する必要があります。UNTIL TIME句ではNLS_DATE_FORMATで指定した形式で時間指定を行ってください。また年の指定では必ず‘YYYY’の4桁を指定する必要があります。
RMAN>REPORT OBSOLETE UNTIL TIME "1997/08/18 16:17:00";
RMAN-03022: コンパイル・コマンド: reportRMAN-06280: 古いバックアップ集合およびデータ・ファイル・コピーのレポートRMAN-06281: タイプ Recid スタンプ ファイル名RMAN-06282: -------------------- ------ --------- -------------------------RMAN-06284: Backup Set 34 309541134RMAN-06285: Backup Piece 34 309541026 /test/backups/bpi0_35_1RMAN-06284: Backup Set 35 309541487RMAN-06285: Backup Piece 35 309541483 /test/backups/bpi0t_36_1
%setenv NLS_DATE_FORMAT ‘YYYY/MM/DD HH24:MI:SS‘
40
®1998 年 1月 21日 40
バックアップを必要とするファイルのレポート
• 指定した日数以上バックアップが実行されていないファイルをリストアップ(REPORT NEED BACKUP DAYS コマンド)
• 回復するために必要となる増分バックアップが指定した数より多いファイルをリストアップ(REPORT NEED BACKUP INCREMENTAL コマンド)
RMAN>REPORT NEED BACKUP DAYS 7 DATABASE;RMAN>REPORT NEED BACKUP DAYS 7 DATABASE;
RMAN>REPORT NEED BACKUP INCREMENTAL 5 DATABASE;RMAN>REPORT NEED BACKUP INCREMENTAL 5 DATABASE;
REPORT NEED BACKUP DAYS コマンドの実行例:
#最近の3日間より長期間バックアップが取られていないファイルを出力しますRMAN>REPORT NEED BACKUP DAYS 3 DATABASE;RMAN-03022: コンパイル・コマンド: reportRMAN-06270: 回復に3より多い日数のアーカイブ・ログが必要なファイルの一覧RMAN-06271: File 日数 名前RMAN-06272: ---- ----- --------------------------------------------------RMAN-06273: 1 4 /test/data/test1.dbfRMAN-06273: 2 4 /test/data/test2.dbf : :
41
®1998 年 1月 21日 41
リカバリ・カタログのメンテナンス
42
®1998 年 1月 21日 42
リカバリ・カタログのメンテナンス
• リカバリ・カタログと制御ファイルの再同期
• リカバリ・カタログへのOSコピーの登録
RMAN>CATALOG DATAFILECOPY '/backup/systemora803.dbf';RMAN>CATALOG ARCHIVELOG '/backup/arch18.log';RMAN>CATALOG DATAFILECOPY '/backup/systemora803.dbf';RMAN>CATALOG ARCHIVELOG '/backup/arch18.log';
RMAN>RESYNC CATALOG;RMAN>RESYNC CATALOG;
• リカバリ・カタログと制御ファイルの再同期「再同期」とは、リカバリ・カタログと制御ファイルの情報を一致させるためにRecoveryManagerが行う処理の事です。リカバリ・カタログを使用している場合、定期的に再同期化処理が必要になります。再同期には以下の2種類があります。
– 部分再同期Recovery Managerによるバックアップ、リストア操作などの前後に行われる再同期化です。バックアップ履歴、アーカイブログ履歴などの情報がリカバリ・カタログに転送されます。
– 完全再同期Recovery ManagerのRESYNC CATALOGコマンド等によって実行される再同期化処理です。部分再同期に追加して以下の情報が転送されます。
• 追加、削除されたデータファイル
• 追加、削除された表領域
• 追加、削除されたオンラインREDOログ・グループおよびメンバー
自動的な再同期はRecovery Managerでバックアップ等の操作を行った場合しか実行されません。このため上記の変更が行われた場合には必ずRecovery ManagerからRESYNCコマンドを用いて明示的な再同期化を行うって下さい。
• リカバリ・カタログへのOSコピーの登録Recovery ManagerではOSコピーで作成されたデータファイル、アーカイブログ、制御ファイルのバックアップをリカバリ・カタログに登録する事が出来ます。これによりOSコピーで作成されたバックアップを、Recovery Managerによるデータベースの回復計画で使用させる事が可能です。
43
®1998 年 1月 21日 43
リカバリ・カタログのメンテナンス(続き)
• カタログからのバックアップ情報の削除
• バックアップの削除
RMAN> ALLOCATE CHANNEL FOR DELETE TYPE DISK;RMAN> CHANGE BACKUPPIECE '/mnt/backup/bk_1_1' DELETE;RMAN> CHANGE DATAFILECOPY '/mnt/backup/data1.dbf' DELETE;
RMAN> ALLOCATE CHANNEL FOR DELETE TYPE DISK;RMAN> CHANGE BACKUPPIECE '/mnt/backup/bk_1_1' DELETE;RMAN> CHANGE DATAFILECOPY '/mnt/backup/data1.dbf' DELETE;
RMAN> CHANGE BACKUPPIECE '/mnt/backup/bk_1_1' UNCATALOG;RMAN> CHANGE DATAFILECOPY '/mnt/backup/data1.dbf' UNCATALOG;RMAN> CHANGE BACKUPPIECE '/mnt/backup/bk_1_1' UNCATALOG;RMAN> CHANGE DATAFILECOPY '/mnt/backup/data1.dbf' UNCATALOG;
• バックアップの削除バックアップされたファイルを削除する場合、削除用のチャネルをALLOCATACHANNEL FOR DELETEコマンドで割り当てる必要があります。この場合のALLOCATE CHANNEL ... コマンドはRUNコマンドの{...}内では割り当てる事が出来ないので注意してください。実際のバックアップの削除はチャネル割り当て後のCHANGE ... DELETEコマンドで実行します。バックアップ・セットの場合、バックアップを削除する事でカタログ内の情報も削除されますが、イメージ・コピーの場合バックアップ情報自体は削除されず、バックアップのステータスが‘D‘に変更されます。以下のイメージ・コピーを削除した後にLISTコマンドを実行した場合の例を参照してください。
RMAN> LIST COPY OF TABLESPACE tbs1;
RMAN-03022: コンパイル・コマンド: listRMAN-06210: データファイルのコピー・リストRMAN-06211: キー File S 完了時刻 Ckp SCN Ck時刻 名前RMAN-06212: ------- ---- - --------- -------- --------- -----------------RMAN-06213: 1310 6 D 97-10-06 55885 97-10-06 /bkup/b.bkRMAN-06213: 1321 6 A 97-10-06 55890 97-10-06 /bkup/tbs1.dbf
44
®1998 年 1月 21日 44
Recover Manager の設定
45
®1998 年 1月 21日 45
Recovery Managerの設定
• 設定前の要件• リカバリ・カタログの設定• バックアップ管理ソフトウェア(テープ装置)を使用するため
の設定
46
®1998 年 1月 21日 46
設定前の要件
• リカバリ・カタログの必要性• パスワードファイルの必要性• 初期化パラメータファイル、パスワード・ファイルのバック
アップ
• リカバリ・カタログの必要性RMANによるバックアップの運用を行う場合、Oracleでは基本的にリカバリ・カタログを使用することを推奨しています。ただしDBを2つ運用することが困難な場合、以下の制限があることを前提にリカバリ・カタログを使用しない運用も可能です。
– 制御ファイルが壊れた場合のリカバリが困難である事全ての制御ファイルに障害が発生し、かつデータファイル、アーカイブログのリストアが必要な場合には通常の方法では Recovery Managerを用いて行ったバックアップをリストアする事が出来ません。このような場合にはカスタマーサポートの支援が必要となります。またこの時バックアップをとった際のファイル名などが含まれているログファイルも必要になります。このためリカバリ・カタログを使用しない運用を選択した場合には、制御ファイルの障害に備え、Recovery Managerによるバックアップ実行時のログファイルをなるべく保存するようにして下さい。
– Point-In-Time回復制御ファイル中にバックアップの履歴が保存されていないバックアップを使用するPoint - in - Time回復が実行出来ません。これは制御ファイル中のバックアップ情報が循環的に使用されるため、エントリが上書きされる場合があるためです。
– ストアド・スクリプトリカバリ・カタログ中にスクリプトを格納しておくストアド・スクリプトの機能が使用出来ません。
• パスワードファイルの必要性Recovery Managerを用いてリモートからDBバックアップ、リカバリなどを行う場合、OSによる認証が行えないため、パスワードファイルを使用して認証を行う必要があります。
• 初期化パラメータファイル、パスワードファイルのバックアップRecovery Managerではこれらのファイルをバックアップする事が出来ません。これらはOSコマンドを使用してバックアップを行ってください。またこれらのファイルに障害が発生した場合には、再作成で対処する事も可能です。
47
®1998 年 1月 21日 47
リカバリ・カタログの設定
1. カタログ用DBの準備
2. リカバリ・カタログ所有者の作成3. CATRMAN.SQLの実行
4. SQL*Netの設定
5. データベースの登録
1. カタログ用DBの準備新規にDBを作成するか、既存のDBをカタログDBとして利用してカタログDBを準備します。このときリカバリ・カタログを作成する表領域には、10MB以上の空き領域を確保して下さい。またこの時ターゲットDB内にリカバリ・カタログを作成する事や、ターゲットDBと同一のディスクにカタログDBを作成することは避けてください。またOracle7 の RDBMS上にリカバリ・カタログを作成する事は出来ません。
2. リカバリ・カタログ所有者の作成このとき作成したユーザーにRECOVERY_CATALOG_OWNERロールを与える必要があります。(このロール自体はcatalog.sqlによって作成されています。またCONNECT、RESOURCEなどのロールを別途与える必要はありません。)
3. CATRMAN.SQLの実行作成したユーザーに接続して$ORACLE_HOME/admin/catrman.sqlを実行し、リカバリ・カタログを作成してください。
4. SQL*Netの設定Recovery Managerはリカバリ・カタログにSQL*Netを経由して接続します。このためtnsnames.ora、listener.oraなどのSQL*Net設定ファイルを変更し、ターゲットDBのノードからカタログDBへSQL*Net経由で接続できるよう設定してください。
5. データベースの登録Recovery ManagerのREGISTERコマンドを用いて、ターゲットDBをカタログに登録します。
SVRMGR> CONNECT INTERNALSVRMGR> CREATE USER rman IDENTIFIED BY rman 2> TEMPORARY TABLESPACE temp 3> DEFAULT TABLESPACE data 4> QUOTA UNLIMITED ON data;SVRMGR> GRANT RECOVERY_CATALOG_OWNER TO rman;
SVRMGR> CONNECT rman/rmanSVRMGR> @?/rdbms/admin/catrman
RMAN>REGISTER DATABASE;
48
®1998 年 1月 21日 48
テープ装置利用に必要なバックアップ管理ソフトウェアの設定
1. バックアップ管理ソフトウェア(サーバー、クライアント)のインストールと設定
2. Oracle実行モジュールとMMLとのリンク
3. リンクの確認lddコマンドなど
例:Solaris+ Solstice Backup を使用した環境で MMLが /usr/lib/libobk.so に インストールされている場合
%cd $ORACLE_HOME/rdbms/lib%make -f ins_rdbms.mk ioracle LLIBMM=/usr/lib/libobk.so
例:Solaris+ Solstice Backup を使用した環境で MMLが /usr/lib/libobk.so に インストールされている場合
%cd $ORACLE_HOME/rdbms/lib%make -f ins_rdbms.mk ioracle LLIBMM=/usr/lib/libobk.so
Recovery Managerからテープ装置へバックアップを行うには、メディア管理ベンダーから提供されるMMLとOracleの実行モジュールがダイナミックリンクされる必要があります。
リンクの実行方法については各プラットホームの$ORACLE_HOME/rdbms/README.docやメディア管理ベンダーから提供されるマニュアルを参照してください。
Oracle実行モジュールが正しくMMLとダイナミック・リンクされているか、実行モジュールの依存関係を調べるOSコマンドで確認できます。Solarisの場合 ldd コマンドを使用して下さい。以下に例を示します。
%cd $ORACLE_HOME/bin%ldd ./oracle libobk.so => /usr/lib/libobk.so libnsl.so.1 => /usr/lib/libnsl.so.1 libsocket.so.1 => /usr/lib/libsocket.so.1 libdl.so.1 => /usr/lib/libdl.so.1 libc.so.1 => /usr/lib/libc.so.1 libaio.so.1 => /usr/lib/libaio.so.1 libm.so.1 => /usr/lib/libm.so.1 libintl.so.1 => /usr/lib/libintl.so.1 libmp.so.1 => /usr/lib/libmp.so.1 libw.so.1 => /usr/lib/libw.so.1
49
®1998 年 1月 21日 49
注意事項 & 活用するためのTips
50
®1998 年 1月 21日 50
リソース制限の設定
• データファイルの読み込み速度の制限– SET LIMIT CHANNEL name READREATE n ;
– name = チャネル名、n = バッファの個数
– バッファ サイズ = DB_BLOCK_SIZE × DB_FILE_DIRECT_IO_COUNT
データファイル読み込み速度の制限
比較的遅いテープ装置へバックアップを実行する場合、テープへの書き込みによるI/O待ちが発生する場合があります。このような場合には、バックアップ時のデータファイルの読み込み速度を制限して無駄なリソースの消費を抑える事が出来ます。
コマンド上の指定としては SET LIMIT CHANNEL コマンドをRUNコマンドで行います。
READRATEで指定する1つのバッファの大きさは以下の2つの初期化パラメータで決定されます。
DB_BLOCK_SIZE:データベース・ブロックのバイト単位のサイズ
DB_FILE_DIRECT_IO_COUNT(デフォルト 64) :バックアップ、リストア時に使用するバッファのサイズ。DB_BLOCK_SIZEの個数で指定します。
51
®1998 年 1月 21日 51
リカバリ・カタログのバックアップ
• リカバリ・カタログ自身もデータベース上に構築されているため、RMANを用いたバックアップが可能
• ターゲットDB ⇔ カタログDBで互いにリカバリ・カタログとして機能させる方式を推奨
• EXPORTなどによるバックアップも可能
RMANRMAN
RMANRMAN
リカバリ・カタログ
リカバリ・カタログ
ターゲットDBカタログDB
バックアップの履歴を管理するリカバリ・カタログ自身も、通常のデータベース・スキーマの中に構築されています。このためリカバリ・カタログのバックアップもターゲットデータベースと同様に行われなければなりません。
カタログDBのバックアップに関してもっとも望ましい方法は、カタログDBのリカバリ・カタログとしてターゲットDBを用いる方法です。
52
®1998 年 1月 21日 52
制御ファイルに障害が発生した場合のリストア
• データベースがNOMOUNT状態でのみリストア可能• データベース全体のリストアでは制御ファイルはリストア
されない→ RESTORE CONTROLFILEコマンドを使用
• リストア後にREPLICATE CONTROLFILEコマンドを実行
RMAN>RUN{2> ALLOCATE CHANNEL ch1 TYPE DISK;3> ALLOCATE CHANNEL ch2 TYPE 'SBT_TAPE';4> RESTORE CONTROLFILE TO '/tmp/bkrman_db.ctl';5> REPLICATE CONTROLFILE FROM '/tmp/bkrman_db.ctl';6> SQL "ALTER DATABASE MOUNT";7> RESTORE DATABASE;
RMAN>RUN{2> ALLOCATE CHANNEL ch1 TYPE DISK;3> ALLOCATE CHANNEL ch2 TYPE 'SBT_TAPE';4> RESTORE CONTROLFILE TO '/tmp/bkrman_db.ctl';5> REPLICATE CONTROLFILE FROM '/tmp/bkrman_db.ctl';6> SQL "ALTER DATABASE MOUNT";7> RESTORE DATABASE;
制御ファイルに障害が発生しかつデータファイルをリストアする必要がある場合、バックアップされた制御ファイルをリストアする必要があります。制御ファイルのリストアはデータファイルのリストアと若干手順が異なるため、注意が必要となります。
制御ファイルのリストアを行う場合は以下の手順で実行してください。
1. データベースをNOMOUNT状態にする。制御ファイルのリストアはNOMOUNT状態でしか実行する事が出来ません。
2. RESTORE CONTROLFILEコマンドを用いて制御ファイルをリストアする。この時リストアする場所は元の制御ファイルが存在した場所以外でも構いません。
3. REPLICATE CONTROLFILEコマンドを用いて制御ファイルをコピーする。REPLICATE ... コマンドは初期化パラメータファイルのCONTROL_FILESで指定された場所にリストアされた制御ファイルをコピーします。
4. データベースをMOUNT状態に変更する。
5. 通常の回復手順を実行する。
6. RESETLOGSオプションでデータベースをオープンする。
7. Recovery Manager の RESET DATABASEコマンドを実行する。RESETLOGSオプション付きでデータベースされた事をRESET DATABASEコマンドを実行して、Recovery Managerに通知します。これは通常RESETLOGS以前のバックアップがリカバリに使用出来なくなるためです。
8.データベース全体のバックアップを実行する。RESETLOGSオプション付きでデータベースをオープンしたため、それ以前のバックアップがリカバリに使用出来なくなっています。このためデータベース全体のバックアップを直ちに実行してください。
RMAN>RESET DATABASE;
53
®1998 年 1月 21日 53
その他の注意事項
• テープの最大容量/OSファイルサイズの最大値
• バックアップ・ピースの命名の一意性
• バックアップ管理ソフトウェア上のインデックスとリカバリ・カタログの整合性
• テープの最大容量/OSファイルサイズの最大値特にバックアップ・セットでのバックアップを行う場合、テープやファイルの最大サイズを上回らないよう、注意してください。上限を超えるようであれば、SET LIMITコマンドでバックアップ・ピースに分割されるよう設定して下さい。
バックアップ・ピースの命名の一意性FORMAT句の部分には、必ずファイルシステムやバックアップ・ソフトウェアの管理下で一意となる名前を指定してください。重複するファイル名のバックアップが既に存在した場合でも、Recovery Managerは以前存在したファイルを上書きします。このためFORMAT句では下に示す 置換文字列を組み合わせて一意な名前を指定してください。
• バックアップ管理ソフトウェア上のインデックスとリカバリ・カタログの整合性バックアップ管理ソフトウェアでバックアップのリサイクルなどの機能を使用している場合、バックアップ管理ソフトウェア側のインデックスとリカバリ・カタログの整合性を取る必要があります。この場合RMANのCHANGE ... UNCATALOGコマンドを使用して、リカバリ・カタログのバックアップ情報を削除してください。以下の例ではイメージ・コピーの情報をカタログから削除しています。
置換文字列 意味%d データベース名%n 8 文字未満の場合に空白を‘x’で埋めたデータベース名。例えばデータベース
名が RMAN の場合、RMANxxxx。%s 各データベースにおいて作成されたバックアップ・セットの順に割り振られる番
号。バックアップに失敗した場合でもこの番号が増加する場合があります。%p それぞれのバックアップ・セットで作成したバックアップ・ピースに対して割り振
られる番号。%t バックアップ・セットのタイムタンプ。基準となる日付からの経過秒数に置換さ
れます。バックアップ・セット番号と組み合わせてファイル名が一意になるように指定します。
%u バックアップ・セット番号とそのバックアップの作成時刻を組み合わせて圧縮形式で表現した 8 文字の文字列。
CHANGE DATAFILECOPY '/oracle/backup/temprman_db.dbf' UNCATALOG;
54
®1998 年 1月 21日 54
Oracle8 R8.0.4(98年春以降)での変更点
• Legato Software Module のバンドル• Legato Networker の機能制限版
• バックアップソフトウェアを追加購入せずに、テープに対するバックアップが可能
• Oracleとの同時インストール&デフォルト・セットアップにより、比較的簡単に使用可能
• Recovery Manager による表領域 Point in Time Recovery のサポート
LSMはOracle8.0.4のメディアにバンドルされており、Oracleのインストール時にLSMのインストールを選択可能です。
OracleとLSMを同時にインストールする場合には、共有ライブラリとのリンクなどが不要になります(インストール中に自動実行されます)。
•LSMとLegato Networkerの機能比較
機能 LSM Legato Networker
テープ・チェンジャーのサポート × ○
OS ファイル(データベース以外)のバックア
ップ
× ○
サポートするテープ装置の最大数 4 台 16 台
一部の高速テープデバイスのサポート
(Sony DTF, IBM Magster, Storage Tek
Redwood , Amplex DST など)
× ○
バックアップの自動実行 Oracle Enterprise
Manager から実行
Networker 管理ツール
から実行
リモートマシンのテープ装置へバックアップ × ○
55
®1998 年 1月 21日 55
Oracle8(≒Workgroup Server)での機能制限
• 増分バックアップ未サポート
• パラレル・バックアップ未サポート