インダウトログファイルのリカバリには、Symfoware/RDB運用中に行う方法と、Symfoware/RDB停止中に行う方法があります。Symfoware/RDB運用中のリカバリは、Symfoware Server Enterprise Extended Editionで利用できます。
インダウトログファイルに入出力障害が発生した場合、Symfoware/RDBは自動的にフォールバック運用になります。このため、業務スケジュールの都合の良い時間にリカバリしてください。
インダウトログファイルに入出力障害が発生した場合のフォールバック運用では、インダウト状態となったトランザクションが更新していたデータベースはインダウトリカバリ不可閉塞となり、データベースのリカバリが必要です。ただし、その他のデータベースについては引き続きアクセス可能となります。
システムロググループの場合は、Capitalシステムの運用ノードでリカバリをしてください。
ユーザロググループの場合は、ロググループが偏在するSatelliteシステムでリカバリをしてください。
(1) 業務中にインダウトログファイルのアクセスエラーが 発生した場合、システムメッセージを出力して、 インダウトログファイルを閉塞します。 テンポラリログファイルとインダウトログファイルを 同一ローデバイスに配置している場合 ⇒(2) テンポラリログファイルとインダウトログファイルを 同一ローデバイスに配置していない場合 ⇒(5) (2) テンポラリログファイルを閉塞します。 ――― rdblogコマンド (Hオプションかつ tオプションかつ gオプション) ログ管理ファイルとテンポラリログファイルを同一 ローデバイスに配置している場合 ⇒(3) ログ管理ファイルとテンポラリログファイルを同一 ローデバイスに配置していない場合 ⇒(5) (3) ログ管理ファイルを閉塞します。 ――― rdblogコマンド (Hオプションかつ Iオプションかつ gオプション) ロググループ管理ファイルとログ管理ファイルを同一 ローデバイスに配置している場合 ⇒(4) ロググループ管理ファイルとログ管理ファイルを同一 ローデバイスに配置していない場合 ⇒(5) (4) ロググループ管理ファイルを閉塞します。 ――― rdblogコマンド (Hオプションかつ Mオプション) (5) 媒体障害の場合は、障害ボリュームを取り換え、 ――― CE作業 ボリュームの構成情報をリカバリします。 ロググループ管理ファイル、ログ管理ファイル、 テンポラリログファイル、インダウトログファイルを 同一ローデバイスに配置している場合 ⇒(6) ログ管理ファイル、テンポラリログファイル、 インダウトログファイルを同一ローデバイスに配置 している場合 ⇒(7) テンポラリログファイル、インダウトログファイルを 同一ローデバイスに配置している場合 ⇒(8) 上記以外の場合 ⇒(9) (6) ロググループ管理ファイルをリカバリし閉塞を解除します。 ――― rdblogコマンド (Pオプションかつ Mオプション) (7) ログ管理ファイルをリカバリし閉塞を解除します。 ――― rdblogコマンド (Pオプションかつ Iオプションかつ gオプション) (8) テンポラリログファイルをリカバリし閉塞を解除します。 ――― rdblogコマンド (Pオプションかつ tオプションかつ gオプション) (9) インダウトログファイルをリカバリし閉塞を解除します。 ――― rdblogコマンド (Pオプションかつ iオプションかつ gオプション) 以下の処理はDSIが偏在するSatelliteシステムで実施してください。 (10) インダウトリカバリ不可閉塞が設定された資源が ――― rdbinfコマンド あるか調べます。 (lオプションかつ aオプション または iオプションかつ aオプション) (11) インダウトリカバリ不可閉塞が設定された資源が ――― rdbrcvコマンド ある場合は、それらを退避データとアーカイブログを 用いてメディアリカバリによりリカバリします。
ここでは、以下の場合を想定しています。
ログ管理ファイル、テンポラリログファイル、インダウトログファイルを同一のボリュームに配置している
ユーザロググループ
システムロググループの場合は、rdblogコマンドのgオプション(ロググループ名の指定)を省略して実行してください。
rdb: ERROR: qdg12850u:インダウトログファイルの入出力処理で異常が発生しました errno=5 (システム名=rdbsys1) rdb: INFO : qdg13239i:ロググループ”group1”において事象”qdg12850u”が発生しました (システム名=rdbsys1) rdb: ERROR: qdg13824e:インダウトログファイルを閉塞しました(システム名=rdbsys1) rdb: INFO : qdg13239i:ロググループ”group1”において事象”qdg13824e”が発生しました (システム名=rdbsys1) $ rdblog -H -t -g group1 $ rdblog -H -I -g group1 CE作業 … 媒体障害の場合は、障害ボリュームを取り換え、ボリュームの構成情報をリカバリします。 $ rdblog -P -I -g group1 $ rdblog -P -t -g group1 $ rdblog -P -i -g group1 $ rdbinf -l inh -a $ rdbrcv -F -i 在庫管理DB.在庫表DSI -f stock@/backup/rdb -w /home/rdb/work
閉塞状態のインダウトログファイルをリカバリして閉塞状態を解除するには、メモリ上の情報を使用します。そのため、インダウトログファイルが閉塞状態のままSymfoware/RDBを停止すると、Pオプションでリカバリできません。必ず、Symfoware/RDBを停止する前にPオプションでインダウトログファイルをリカバリしてください。なお、Pオプションによりインダウトログファイルをリカバリする前にSymfoware/RDBを停止した場合は、“Symfoware/RDB停止中のリカバリ”に従ってリカバリしてください。インダウトログファイルの入出力障害以外の理由でボリューム交換を行う場合は、ボリュームの交換を行う前に、インダウトログファイルを閉塞状態にしてください。インダウトログファイルの閉塞は、rdblogコマンドのHオプションおよびiオプションで行います。
インダウトログファイルが閉塞されると、DSIにインダウトリカバリ不可閉塞が設定されることがあります。よって、トランザクションモニタを起動してインダウトリカバリ(アプリケーションサーバからのコミット/ロールバック指示によるインダウトトランザクションの解決)が完了した後には、インダウトリカバリ不可閉塞が設定されたDSIを、退避データとアーカイブログを用いてメディアリカバリにより最新状態にリカバリしてください。このようにインダウトリカバリが完了してからメディアリカバリを行うことにより、資源は分散トランザクションの結果を正しく反映した状態でリカバリされます。このメディアリカバリは、インダウトリカバリが完了した後であれば、インダウトログファイルのリカバリ前でもリカバリ後でも行うことができます。
インダウトリカバリ不可閉塞が設定されているDSIは、以下のいずれかの方法で調べることができます。
rdbinfコマンドにlオプションとaオプションを指定して実行します。DSIの閉塞種別に“IIH” が表示されているDSIが、インダウトリカバリ不可閉塞が設定されているDSIです。
rdbinfコマンドにiオプション(またはpオプション)とaオプションを指定して実行します。State欄に“INH”かつCause欄に“IIH”が表示されているDSIが、インダウトリカバリ不可閉塞が設定されているDSIです。
インダウトリカバリ不可閉塞が設定される際にメッセージログファイルに次のようなメッセージが出力されます。メッセージに表示された資源名からリカバリすべきDSIを特定することができます。
rdb: ERROR: qdg13816u:インダウトリカバリによるリカバリが不可能なため データベースをアクセス禁止状態にしました DB名=’在庫管理DB’ DSI名=’在庫表DSI’ rdb: ERROR: qdg13817u:インダウトリカバリによるリカバリが不可能なため データベースをアクセス禁止状態にしました DB名=’在庫管理DB’ DSI名=’在庫表DSI’ ページ識別番号=’10’ rdb: INFO: qdg13820i:インダウトリカバリによるリカバリが不可能となったため、DSI’在庫管理DB.在庫表DSI’に 設定されているインダウト閉塞をインダウトリカバリ不可閉塞に置換しました
Capitalシステムが稼動する任意のノードで、RDBNAMEにCAPITALを指定して、以下の手順でリカバリをしてください。
(1) スケーラブル型のクラスタアプリケーションに 登録されているすべての運用系および待機系の クラスタアプリケーションを保守停止します。 クラスタアプリケーションの保守停止手順は、 “9.5 クラスタアプリケーションの保守のための停止”を 参照してください。 (2) 媒体障害の場合は、障害ボリュームを取り換え、 ―――― CE作業 ボリュームの構成情報をリカバリします。 ロググループ管理ファイル、ログ管理ファイル、 テンポラリログファイル、インダウトログファイル を同一ローデバイスに配置している場合 ⇒(3) ログ管理ファイル、テンポラリログファイル、 インダウトログファイルを同一ローデバイスに配置している場合 ⇒(6) テンポラリログファイル、インダウトログファイルを 同一ローデバイスに配置している場合 ⇒(9) 上記以外の場合 ⇒(11) (3) ロググループ管理ファイルを作成します。 ―――― rdblogコマンド (Mオプション) (4) 同一ローデバイス以外のすべてのロググループの ―――― rdblogコマンド ログ管理ファイルを再登録します。 (Aオプションかつ Iオプション) (5) 当該ロググループ以外のすべてのロググループのログ ―――― rdblogコマンド 管理ファイルが正常に登録されたことを確認します。 (Vオプションかつ Iオプション) (6) ログ管理ファイルを作成します。 ―――― rdblogコマンド システムロググループの場合 (Iオプション) ユーザロググループかつ(3)によりロググループ管理 (Iオプションかつ ファイルを作成している場合 gオプション) ユーザロググループかつ(3)によりロググループ管理 (Iオプションかつ ファイルを作成していない場合 rオプションかつ gオプション) (7) すべてのアーカイブログファイルを再登録します。 ―――― rdblogコマンド (Aオプションかつ aオプション) (8) すべてのアーカイブログファイルが正常に登録された ―――― rdblogコマンド ことを確認します。 (Vオプションかつ aオプションかつ gオプション) (9) テンポラリログファイルを再作成します。 ―――― rdblogコマンド (Gオプションかつ tオプションかつ rオプションかつ gオプション) (10) テンポラリログファイルが正常に登録されたことを ―――― rdblogコマンド 確認します。 (Vオプションかつ tオプションかつ gオプション) ログ管理ファイルがインダウトログファイルと 同一ローデバイスに配置していない場合 ⇒(11) ログ管理ファイルがインダウトログファイルと 同一ローデバイスに配置している場合 ⇒(12) (11) インダウトログファイルを削除します。 ―――― rdblogコマンド (Dオプションかつ iオプションかつ eオプションかつ gオプション) (12) インダウトログファイルを再作成します。 ―――― rdblogコマンド (Gオプションかつ iオプションかつ gオプション) (13) インダウトログファイルが正常に作成されたことを ―――― rdblogコマンド 確認します。 (Vオプションかつ iオプションかつ gオプション) (14) ユーザロググループかつ(6)によりログ管理ファイルを 作成している場合 ユーザロググループ用のRDBディレクトリファイルを ―――― rdbscldirコマンド 再登録します。 (Aオプションかつ gオプション) (15) ユーザロググループ用のRDBディレクトリファイルが ―――― rdbscldirコマンド 正常に登録されたことを確認します。 (Vオプションかつ gオプション) (16) Symfoware/RDBを起動します。(動作確認) ―――― rdbstartコマンド (17) Symfoware/RDBを停止します。(動作確認) ―――― rdbstopコマンド (18) rdbrcvdicコマンドのLOADモードでRDBディレクトリ ―――― rdbrcvdicコマンド ファイルのみをリカバリします。(インダウト閉塞の強制 (Lオプションかつ 解除およびRDBディクショナリとの整合をとります。) rオプションかつ RDBディレクトリファイルのリカバリは、インクリメンタル ddlオプション) リカバリによるリカバリを推奨します。(縮退運転の時間が 短縮できます。) (19) rdbrcvdicコマンドのLOADモードですべてのユーザログ ―――― rdbrcvdicコマンド グループ用のRDBディレクトリファイルをリカバリします。 (Lオプションかつ ユーザロググループ用のRDBディレクトリファイルの ddlオプションかつ リカバリは、インクリメンタルリカバリによるリカバリを gオプション) 推奨します。(縮退運転の時間が短縮できます。) (20) Symfoware/RDBを起動します。 ―――― rdbstartコマンド (21) ホットスタンバイの使用を宣言します。 ―――― rdbhsutyコマンド (monオプション) (22) Symfoware/RDBを停止します。 ―――― rdbstopコマンド (23) スケーラブル型のクラスタアプリケーションに登録 されているすべての運用系および待機系 クラスタアプリケーションの保守停止を解除します。 クラスタアプリケーションの保守停止解除の手順は、 “9.6 クラスタアプリケーションの保守停止の解除”を 参照してください。 以下の処理はDSIが偏在するSatelliteシステムで実施してください。 (24) RDBディレクトリファイルをインクリメンタルリカバリ ―――― rdbrcvコマンド によりリカバリした場合は、DSIのアクセス情報を復元します。 (Dオプション) (25) データベースの整合を以下の方法で確認します。 インダウトログファイルの入出力障害が発生した時に 更新中の処理が以下の状態になる可能性があります。更新の 状況を確認し、必要に応じてデータベースの再更新を行ってください。 - インダウトログの入出力障害が発生したノードで、その直前に 実行中の更新処理をコミットしていた場合、全ノードでロール バックになっている可能性がある。 - インダウトログの入出力障害が発生したノード以外で、その直前 にロールバックした更新が、インダウトログの入出力障害が発生 したノード内のデータベースでコミットになっている可能性がある。