5.7.7 障害発生時の対処(定義追加または定義変更前の状態に戻す場合)
SDBデータベースの定義追加または定義変更中に障害が発生し,定義追加または定義変更前の状態に戻す場合の手順を次の図に示します。
なお,障害の発生時点によって(「5.7.3 SDBデータベースの定義追加または定義変更の手順(各手順の詳細)」の手順のどの時点で障害が発生したかによって),障害対処の手順の開始位置が異なります。
図中の項番は,以降の説明の( )の番号と対応しています。
「5.7.3(4) SDBディレクトリ情報ファイルを作成して配布する」以前に障害が発生した場合は,UAPの実行環境は変更されていないため,上記の図に示す対処は必要ありません。
- 注意事項
-
(1)以降の説明で,【4V FMB,4V AFM】の表記がある個所の説明は,4V FMBまたは4V AFMのSDBデータベースの定義追加または定義変更をする際に実行する操作です。SD FMBのSDBデータベースの定義追加をする際は,実行する必要がない操作です。
- 〈この項の構成〉
(1) TP1/FSPのSDB定義情報領域の正副を元に戻す【4V FMB,4V AFM】
TP1/FSPのeesdhchg -cコマンドで,SDB定義情報領域の正副を切り替えて元の状態(定義追加または定義変更前の状態)に戻します。
(2) TP1/FSPのUAP共用ライブラリを入れ替え前の状態に戻す【4V FMB,4V AFM】
TP1/FSPのeechglibコマンドで,TP1/FSPのUAP共用ライブラリを入れ替え前の状態(定義追加または定義変更前の状態)に戻します。
(3) トランザクションの静止化を解除する
-
4V FMBまたは4V AFMのSDBデータベースの場合
TP1/FSPのeesvctl -rコマンドで,トランザクションの静止化をいったん解除します。
-
SD FMBのSDBデータベースの場合
サービスの閉塞を解除して,トランザクションの静止化をいったん解除します。サービスの閉塞を解除するには,OpenTP1のスケジュール閉塞解除コマンドを実行します。詳細については,マニュアル「OpenTP1 Version 7 分散トランザクション処理機能 OpenTP1 運用と操作」を参照してください。
なお,(3)の操作は,障害対処作業の完了前にとりあえず業務を再開したい場合だけ実施してください。「(7) トランザクションを静止化する」の操作の前までは,業務を実行できます。
(4) 変更前のSDBディレクトリ情報ファイルを配布する
変更前のSDBディレクトリ情報ファイルを,pdsdbdefコマンドで全ユニットに配布してください。
(5) 待機系ユニットを再起動する
高速系切り替え機能を使用している場合は,HAモニタのmonsbystpコマンドですべての待機系ユニットをいったん終了し,pdstart -qコマンドですべての待機系ユニットを開始してください。
待機系ユニットを再起動することによって,SDBディレクトリ情報が常用常駐領域に常駐されます。
(6) SDBディレクトリ情報を事前常駐領域に常駐する
pdsdbarc -eコマンドで,SDBディレクトリ情報を事前常駐領域に常駐します。
(7) トランザクションを静止化する
-
4V FMBまたは4V AFMのSDBデータベースの場合
TP1/FSPのeesvctl -sコマンドで,トランザクションを静止化します。eesvctl -sコマンドが正常終了して,完全にトランザクションが静止化したことを確認してから次の手順に進んでください。
(3)でトランザクションの静止化を解除した場合に,この操作を実行します。
- 注意事項
-
完全にトランザクションが静止化していない状態で次の手順を行った場合,データベース破壊やUAPの異常終了などが発生するおそれがあります。そのため,eesvctl -sコマンドが正常終了するまで,eesvctl -sを実行し続けてください。
-
SD FMBのSDBデータベースの場合
サービスを閉塞して,トランザクションを静止化します。サービスを閉塞するには,OpenTP1のスケジュール閉塞コマンドを実行します。詳細については,マニュアル「OpenTP1 Version 7 分散トランザクション処理機能 OpenTP1 運用と操作」を参照してください。
完全にトランザクションが静止化したことを確認してから次の手順に進んでください。
(3)でトランザクションの静止化を解除した場合に,この操作を実行します。
- 注意事項
-
完全にトランザクションが静止化していない状態で次の手順を行った場合,データベース破壊やUAPの異常終了などが発生するおそれがあります。
(8) 事前常駐領域を常用常駐領域に切り替える
pdsdbarc -w -qコマンドで,事前常駐領域を常用常駐領域に切り替えます。pdsdbarc -w -qコマンドはユニットごとに実行します。この操作は全ユニットで実行してください。
- 参考
-
pdsdbarc -w -qコマンドは実行系ユニットに対してだけ実行できます。待機系ユニットについては,「(5) 待機系ユニットを再起動する」の操作で,常用常駐領域にSDBディレクトリ情報が常駐されます。
事前常駐領域中のSDBディレクトリ情報が無効状態の場合,事前常駐領域を常用常駐領域に切り替えることはできません。切り替えられなかったSDBディレクトリ情報を使用しているユニット(フロントエンドサーバまたはバックエンドサーバ)を経由するAPIまたはDMLはエラーになるため,無効状態のSDBディレクトリ情報を次に示すどちらかの方法で正常な状態にしてください。
-
正しいSDBディレクトリ情報ファイルが配布済みの場合
「(6) SDBディレクトリ情報を事前常駐領域に常駐する」から作業を再実行してください。
-
正しいSDBディレクトリ情報ファイルが未配布の場合
「(4) 変更前のSDBディレクトリ情報ファイルを配布する」から作業を再実行してください。
(9) トランザクションの静止化を解除する
-
4V FMBまたは4V AFMのSDBデータベースの場合
TP1/FSPのeesvctl -rコマンドで,トランザクションの静止化を解除します。
-
SD FMBのSDBデータベースの場合
サービスの閉塞を解除して,トランザクションの静止化を解除します。サービスの閉塞を解除するには,OpenTP1のスケジュール閉塞解除コマンドを実行します。詳細については,マニュアル「OpenTP1 Version 7 分散トランザクション処理機能 OpenTP1 運用と操作」を参照してください。
(9)の操作が完了すると,定義追加または定義変更前の状態に戻ります。
- 注意事項
-
SDBディクショナリ情報およびSDBディレクトリ情報は,ディクショナリ表に追加された状態のままとなっています。そのため,同じSDBデータベースの定義追加または定義変更を再度行う場合は,いったんディクショナリ表に追加されているSDBディクショナリ情報およびSDBディレクトリ情報をpdsdbdefコマンドの*DELETE DICTIONARY文および*DELETE DIRECTORY文で削除する必要があります。
なお,SDBディクショナリ情報およびSDBディレクトリ情報を削除した場合,削除後にHiRDBを再起動する必要があります。