資源管理の運用中に、テンポラリログファイルに入出力障害が発生した場合のリカバリ方法について説明します。
テンポラリログファイルに入出力障害が発生した場合は、システムメッセージ“qdg12111u”、“qdg12440u”、“qdg12441u”または“qdg12442u”が出力されます。これらのシステムメッセージが出力されたあと、テンポラリログファイルは閉塞状態となります。
ログ管理ファイルとテンポラリログファイルを同一のボリュームに配置している場合と、配置していない場合で、リカバリ手順が異なるので注意してください。
テンポラリログファイルの入出力障害が発生した場合のリカバリ方法は、以下の形態により異なります。
資源管理を正常停止した場合
資源管理を強制停止した場合
資源管理を正常停止した場合の操作
テンポラリログファイルの閉塞状態から、資源管理を正常停止した場合は、rdblogコマンドにより、テンポラリログファイルの再作成または作成を行ってください。
資源管理停止中にテンポラリログファイルをリカバリする場合のリカバリ操作の手順とリカバリ操作例を以下に示します。
図2.5 リカバリ操作の流れ
(1)業務中にテンポラリログファイルのアクセスエラーが発生した場合、システム メッセージを出力して、テンポラリログファイルを閉塞します。 (2) トランザクションの状態(Tran)の“TINH”が無くなる ――― rdbcninfコマンド まで待ちます。 (3) 資源管理を停止します。 ――― rdbstopコマンド (4) 障害ボリュームを取り換えます。 ――― CE作業 (5) ボリュームの構成情報をリカバリします。 ――― partedコマンド ログ管理ファイルとテンポラリログファイルを同一のボリュームに配置している場合 → (6)へ ログ管理ファイルとテンポラリログファイルを同一のボリュームに配置していない場合 → (10)へ (6) ログ管理ファイルを作成します。 ――― rdblogコマンド (Iオプション) アーカイブログ運用を行っている場合 → (7)へ (7) アーカイブログファイルを再登録します。 ――― rdblogコマンド (Aオプションかつ aオプション) (8) アーカイブログファイルが正常に登録されたことを確認 ――― rdblogコマンド します。 (Vオプションかつ aオプション) ログ管理ファイルを作成していない場合 → (9)へ ログ管理ファイルを作成した場合 → (10)へ (9) テンポラリログファイルを強制的に削除します。 ――― rdblogコマンド (Dオプションかつ tオプションかつ eオプション) (10) テンポラリログファイルを再作成します。 (Gオプションかつ tオプション [かつrオプション]) (11) テンポラリログファイルが正常に再作成されたことを ――― rdblogコマンド 確認します。 (Vオプションかつ tオプション) (12) 資源管理を起動します。 ――― rdbstartコマンド (13) ロールバック不可閉塞となった資源をリカバリします。 “2.7 資源管理の管理領域のリカバリ”を実行してください。
例
ここでは、以下の場合を想定しています。
ログ管理ファイルとテンポラリログファイルを同一のボリュームに配置していない
rdb: ERROR: qdg12111u: テンポラリログファイルに 入出力障害が発生しました ファイル名='/dev/raw/raw22' errno=5 rdb: INFO : qdg13239i: ロググループ'system'において事象'qdg12111u'が発生しました rdb: ERROR: qdg13303e: テンポラリログファイルを閉塞しました rdb: INFO : qdg13239i: ロググループ'system'において事象'qdg13303e'が発生しました $ rdbcninf -s $ rdbstop CE作業 … 障害ボリュームの交換およびボリューム構成情報のリカバリ $ rdblog -G -t -r -c 10M /dev/raw/raw29 -in -in 30M 30M 20 $ rdblog -V -t $ rdbstart
注意
資源管理の停止は、ロードコマンドや資源管理コマンドなど資源管理を操作するコマンドおよび資源管理常駐プロセスを終了させてから行ってください。終了しているかはrdbcninfコマンドで確認することができます。
資源管理を強制停止した場合の操作
テンポラリログファイルの閉塞状態から、資源管理を強制停止(rdbstopコマンドのeオプション)した場合は、rdbadjrcvコマンドにより、資源管理のリカバリを行ってください。
テンポラリログファイルをリカバリする場合のリカバリ操作の手順とリカバリ操作例を以下に示します。
なお、RDBディクショナリまたはRDBディレクトリが破壊されている場合は、rdbadjrcvコマンドは実行できないため、(10)の手順を迂回して実施してください。rdbadjrcvコマンドでRDBディクショナリのリカバリが失敗した場合は、rdbrcvdicコマンドでRDBディクショナリおよびRDBディレクトリを復旧後、rdbadjrcvコマンドを実行してください。
図2.6 リカバリ操作の流れ
(1) 業務中にテンポラリログファイルのアクセスエラーが発生した場合、システム メッセージを出力して、テンポラリログファイルを閉塞します。 (2) 資源管理を強制停止します。 ――― rdbstopコマンド (eオプション) (3) 障害ボリュームを取り換えます。 ――― CE作業 (4) ボリュームの構成情報をリカバリします。 ――― partedコマンド ログ管理ファイルとテンポラリログファイルを同一のボリュームに 配置している場合 → (5)へ ログ管理ファイルとテンポラリログファイルを同一のボリュームに 配置していない場合 → (8)へ (5) ログ管理ファイルを作成します。 ――― rdblogコマンド (Iオプション) (6) アーカイブログファイルを再登録します。 ――― rdblogコマンド (Aオプションかつ aオプション) (7) アーカイブログファイルが正常に登録されたことを確認 ――― rdblogコマンド します。 (Vオプションかつ aオプション) (8) テンポラリログファイルを再作成します。 ――― rdblogコマンド (Gオプションかつ tオプションかつ rオプション) (9) テンポラリログファイルが正常に再作成されたことを ――― rdblogコマンド 確認します。 (Vオプションかつ tオプション) RDBディクショナリ、または、RDBディレクトリファイルも 破壊されている場合 → (11)へ (10) アーカイブログファイルを使用したデータベースの復 ――― rdbadjrcvコマンド 旧を行います。 rdbadjrcvコマンドによって、RDBディクショナリが リカバリできなかった場合 → (11)へ rdbadjrcvコマンドによって、RDBディクショナリがリカバリできた場合 → (12)へ (11) RDBディクショナリをリカバリします。 ――― rdbrcvdicコマンド (Fオプション) RDBディクショナリのリカバリができた場合 → (10)へ (12) 資源管理を起動します。 ――― rdbstartコマンド (13) rdbadjrcvコマンドでリカバリできなかった資源をリカバリしてください。 “2.8 資源管理の管理領域のリカバリ”を実行してください。 (14)資源管理の管理領域の退避データを取得します。 “2.5.3.5 資源管理の管理領域バックアップ”を実行してください。 (15) RDBディクショナリのリカバリを行った場合は、 ――― rdbdmpdicコマンド RDBディクショナリの退避データも取得します。 “2.5.3.6 RDBディクショナリのバックアップ”を実行してください。
例
ここでは、以下の場合を想定しています。
ログ管理ファイル、テンポラリログファイルを同一のボリュームに配置していない
rdbadjrcvコマンドでRDBディクショナリがリカバリできない
rdbadjrcvコマンドでリカバリできない資源が存在する
rdb: ERROR: qdg12111u: テンポラリログファイルに 入出力障害が発生しました ファイル名='/dev/raw/raw1' errno=5 rdb: INFO : qdg13239i: ロググループ'system'において事象'qdg12111u'が発生しました rdb: ERROR: qdg13303e: テンポラリログファイルを閉塞しました rdb: INFO : qdg13239i: ロググループ'system'において事象'qdg13303e'が発生しました $ rdbstop -e rdb: ERROR: qdg02842u: シグナル9を受信したため RDBIIシステム空間が異常終了しました CE作業 … 障害ボリュームの交換およびボリューム構成情報のリカバリ $ rdblog -G -t -r -c 10M /dev/raw/raw9 -in -in 30M 30M 20 $ rdblog -V -t $ rdbadjrcv -w /home/rdb1/work rdb: ERROR:qdg13038u: アジャストリカバリが不可能なためRDBディクショナリをアクセス 禁止状態にしました $ rdbrcvdic -F -f dicback@/backup/rdb -du 1M -w /tmp $ rdbadjrcv -w /home/rdb1/work rdb: ERROR:qdg13037e: アジャストリカバリが不可能なため データベースをアクセス禁止 状態にしました DB名='INFOSTORAGEDB' DSI名='CATEGORY_TDSI' $ rdbstart $ rdbinh -i INFOSTORAGEDB.CATEGORY_TDSI $ rdbrcv -F -i INFOSTORAGEDB.CATEGORY_TDSI -f stock@/backup/rdb -w /home/rdb1/work $ rdbdmp -i INFOSTORAGEDB.CATEGORY_TDSI -f stock1@/backup/rdb -e -y $ rdbdmpdic -f dicback@/backup/rdb -y -e
注意
rdbadjrcvコマンドにより資源管理のリカバリを行う場合、アーカイブログファイル内のアーカイブログ量によっては、コマンドが異常終了する場合があります。この場合には、更に以前の退避アーカイブログファイルを併せて指定してコマンドを再実行してください。
テンポラリログファイルの入出力障害が発生する少し前に行ったデータの格納や削除が資源管理上では取り消されている可能性があります。データリカバリ後、不整合検出コマンド(dcccheck)を実行して、蓄積データファイルと資源管理の管理レコードとの不整合がないか確認してください。