1.6.3 HiRDBの開始処理に失敗したときの注意事項(HiRDB/パラレルサーバ限定)
ここでは,ユニットの開始処理に失敗したときの注意事項について説明します。
- 〈この項の構成〉
(1) システムログファイルの処置
- 前提条件
-
2.と3.の条件については,どちらかを満たしていればよいです。
-
開始処理に失敗したユニットに複数のサーバを定義しています。
-
開始モードが,正常開始又は計画停止後の再開始です。
-
開始モードが強制終了又は異常終了後の再開始で,かつpd_log_rerun_swap=Yを指定しています。
-
- 現象
-
ユニットを開始するとき,HiRDBはユニット内のサーバを並列に起動しています。このとき,一部のサーバでHiRDBシステム定義のオペランド不正,又は何らかの障害が発生すると,そのユニット全体の開始に失敗します。このとき,次に示す現象が起きることがあります。
-
開始処理が完了したサーバでは,現用のシステムログファイルの割り当てが完了しています(KFPS01221-Iメッセージが出力されます)。
-
開始処理が完了していないサーバでは,現用のシステムログファイルが割り当てられていない状態になっています(KFPS01221-Iメッセージが出力されません)。
-
- 対策
-
このとき,HiRDBは次のユニット開始時に,新たな現用ファイルを割り当てます。したがって,前回のユニット開始時に割り当てられた現用ファイルをクローズ状態にします(再使用しません)。このクローズ状態になったシステムログファイルを,再度現用ファイルとして割り当てるために,HiRDB管理者は(a),又は(b)の,どちらかの方法で処置をしてください。
(a) システムログファイルを再初期化しない方法
該当するシステムログファイルにpdlogunld又はpdlogchgコマンドを実行した後に,HiRDBの稼働状況に応じて次の処置をします。
HiRDBの稼働状況 |
HiRDB管理者の処置 |
---|---|
HiRDBが稼働中の場合 |
該当するシステムログファイルにpdlogopenコマンドを実行します。 |
ユニットを正常開始する前の場合 |
処置をする必要はありません。ユニット開始時に現用として割り当てできるシステムログファイルとして認識されます。 |
ユニットを再開始する前の場合 |
ユニットを再開始した後に,該当するシステムログファイルにpdlogopenコマンドを実行してください。 |
(b) システムログファイルを再初期化する方法
- 〈手順〉
-
-
該当するシステムログファイルに,pdlogunld又はpdlogchgコマンドを実行します。
pdlogunld -d sys -s b001 -g syslogfgp03 -o /unld/unldlog01
-
pdlogrmコマンドでシステムログファイルを削除します。
pdlogrm -d sys -s b001 -f /unt1/sysfile01/log01
-
pdloginitコマンドで,該当するシステムログファイルを初期化します。
pdloginit -d sys -s b001 -f /unt1/sysfile01/log01 -n 5000
-
(2) ディクショナリサーバの開始
- 現象
-
次に示す操作後にユニットを開始すると,ディクショナリサーバがRDエリア構成情報を取得します。
-
BESの正常停止
-
データベース構成変更ユティリティ(pdmod)
・RDエリアの追加(create rdarea)
・RDエリアの拡張(expand rdarea)
・with reconstructionを指定したRDエリアの再初期化(initialize rdarea)
・RDエリアの属性変更(alter rdarea)
・RDエリアの移動(move rdarea)
・RDエリアのレプリカ定義(replicate rdarea)
・RDエリアの構成情報複写(define copy rdarea)
・RDエリアの統合(recast rdarea)
-
レプリカRDエリアのレプリカステータスの切り替え(pddbchg)
-
オンライン再編成のカレントRDエリアの切り替え(pdorchg)
-
オンライン再編成の追い付き反映(pdorend)
このとき,ディクショナリサーバを開始していないと,最大60回RDエリア構成情報の取得をリトライします。60回リトライしても情報を取得できないとき,RDエリア構成情報の取得処理を中断し,BESユニットの開始処理が失敗します。
-
- 対策
-
ディクショナリサーバを開始してから,BESユニットを開始してください。