21.3.1 例題1(全RDエリアを回復する場合)
システム用RDエリアを含む全RDエリアを障害発生直前の最新の同期点に回復します。バックアップは,システム単位で取得したバックアップ(全RDエリアを対象としたバックアップ)があります。システムログファイルの運用方法は,システムログをアンロードする運用をしています。
- 〈この項の構成〉
-
(1) pdloglsコマンドで現用のシステムログファイルを調べます
HiRDB/パラレルサーバの場合は,ディクショナリサーバ及びバックエンドサーバのシステムログファイルを調べてください。
pdlogls -d sys
(2) pdlogswapコマンドでシステムログファイルをスワップします
現用ファイルの内容をアンロードするため,システムログファイルをスワップします。HiRDB/パラレルサーバの場合は,ディクショナリサーバ及びバックエンドサーバのシステムログファイルをスワップしてください。
pdlogswap -d sys -w
(3) 現用だったファイルの内容をpdlogunldコマンドでアンロードします
(1)で調べた現用ファイルの内容をアンロードしてください。HiRDB/パラレルサーバの場合は,ディクショナリサーバ及びバックエンドサーバの現用ファイルの内容をアンロードしてください。
pdlogunld -d sys -s bes1 -g log01 -o C:\unld\unldlog02
- ●自動ログアンロード機能を使用している場合
-
この操作は必要ありません。pdlogatulコマンドで自動ログアンロード機能が動作していることを確認してください。また,pdloglsコマンドでアンロード処理が終了したかどうかを確認してください。
(4) pdstopコマンドでHiRDBを正常終了します
pdstop
HiRDBを正常終了できない場合は,pdstop -fコマンドで強制終了します。なお,既にHiRDBが異常終了している場合は,この手順は必要ありません。
(5) pdstart -rコマンドでHiRDBを開始します
pdstart -r
(6) pdrstrコマンドで全RDエリアを最新の同期点に回復します※
pdrstr -m C:\rdarea\mast\mast01 -b C:\pdcopy\backup01 -a -l C:\unld\unldlog02
- 注※
-
オブジェクト格納用データディクショナリLOB用RDエリアを使用している場合,ログを使った回復でシステムログを取得しないトランザクションが動作していることを検知(KFPR16334-E)することがあります。
オブジェクト格納用データディクショナリLOB用RDエリアについては,(10)で回復(初期化)するため,エラーを無視して問題ありません。
データベース回復ユティリティでエラーメッセージを出力しないようにするためには,-rオプションでオブジェクト格納用データディクショナリLOB用RDエリア以外のRDエリア名を指定してください。
- 〔説明〕
-
-m:マスタディレクトリ用RDエリアの先頭のHiRDBファイル名称を指定します。
-b:全RDエリアを対象としたバックアップを格納したバックアップファイルの名称を指定します。
-a:全RDエリアの回復を指定します。
-l:バックアップファイルの取得時点以降のアンロードログファイルの名称を指定します。
(7) pdcopyコマンドで全RDエリアのバックアップを取得します
次回,データベースを回復するときに備えて,バックアップを取得します。
pdcopy -m C:\rdarea\mast\mast01 -M x -b C:\pdcopy\backup02 -a
- 〔説明〕
-
-m:マスタディレクトリ用RDエリアの先頭のHiRDBファイル名称を指定します。
-M:バックアップ取得モードを指定します。
-b:バックアップファイル名を指定します。
-a:全RDエリアのバックアップを取得する際に指定します。
(8) pdstopコマンドでHiRDBを正常終了します
pdstop
(9) pdstartコマンドでHiRDBを開始します
pdstart
(4)の手順でHiRDBを正常終了できなかった場合は,HiRDBを開始する前にシステムログファイル,シンクポイントダンプファイル,及びステータスファイルを初期化してください。
システムログファイル,及びシンクポイントダンプファイルを初期化しない場合,一部のファイルがクローズ状態となることがあります。この場合,クローズ状態となったファイルについては,「システムログファイルに障害が発生したときの対処方法」を参照し,使用できる状態にしてください。
(10) オブジェクト格納用データディクショナリLOB用RDエリアを回復します
データディクショナリLOB用RDエリアがない場合は,この手順は必要ありません。
- 〈手順〉
-
-
オブジェクト格納用データディクショナリLOB用RDエリアを閉塞クローズします。
pdhold -r RDDICOBJ -c
-
pdmodコマンドで,オブジェクト格納用データディクショナリLOB用RDエリアを再初期化します。
pdmod -a C:\rdarea\conf\control2
-
オブジェクト格納用データディクショナリLOB用RDエリアを閉塞解除,オープンします。
pdrels -r RDDICOBJ -o
-
ALTER ROUTINEで,全ストアドルーチン及び全トリガのSQLオブジェクトを再作成します。
ALTER ROUTINE ALL
-
(11) リスト用RDエリアを回復します
リスト用RDエリアがない場合は,この手順は必要ありません。
- 〈手順〉
-
-
リスト用RDエリアを閉塞クローズします。
pdhold -r LISER1 -c
-
pdmodコマンドでRDエリアを再初期化します。
pdmod -a C:\rdarea\conf\control3
-
リスト用RDエリアを閉塞解除,オープンします。
pdrels -r LISER1 -o
-
(12) 一時表用RDエリアを回復します
一時表用RDエリアがない場合は,この手順は必要ありません。
- 〈手順〉
-
-
一時表用RDエリアを閉塞クローズします。
pdhold -r TMPRDAREA -c
-
pdmodコマンドでRDエリアを再初期化します。
pdmod -a C:\rdarea\conf\control4
-
一時表用RDエリアを閉塞解除,オープンします。
pdrels -r TMPRDAREA -o
-