スケーラブルデータベースサーバ HiRDB Version 8 システム運用ガイド(UNIX(R)用)

[目次][索引][前へ][次へ]

19.17.1 再開始の手順

システムログファイルの容量不足などで,現用として割り当てられるファイルがなくなると,HiRDBはKFPS01220-Eメッセージを出力してHiRDB(ユニット)を異常終了します。このとき,アボートコード Psjnf07又は Psjn381が出力されます。このとき,HiRDB管理者は次に示す手順に従って業務を再開してください。

〈手順〉
[図データ]
[図データ]

処理ボックスの左にある数字はこの後で説明している( )レベルに対応しています。例えば,5の操作は(5)で説明しています。

注※1
この操作は,「19.17.2 システムログファイルの最低追加個数の求め方」で説明されています。

注※2
この操作は,「19.17.3 スワップ先にできる状態のファイルの作成方法」で説明されています。

 

以降で説明する手順の中で,メッセージを調べる操作があります。このとき,HiRDBのメッセージログファイル($PDDIR/spool/pdlog1及びpdlog2)中のメッセージは上書きされている可能性があるため,syslogfile中のメッセージを参照するようにしてください。

<この項の構成>
(1) 異常終了の原因となったサーバを調べます(HiRDB/パラレルサーバの場合)
(2) 再開始時の入力情報になるシステムログファイルの個数を求めます
(3) pdfstatfsコマンドで,システムファイル用のHiRDBファイルシステム領域に空きがあるかどうかを確認します
(4) サーバ定義にpdlogadfg及びpdlogadpfオペランドを追加します
(5) pdloginitコマンドでシステムログファイルを追加します
(6) pdstartコマンドでHiRDBを再開始します
(7) シンクポイントダンプが有効化されたのを確認します
(8) pdcopyコマンドでバックアップを取得します(アンロードレスシステムログ運用をしていた場合)
(9) pdloglsコマンドで,スワップ先にできる状態のシステムログファイルがあることを確認します
(10) 業務を再開します
(11) システムログファイルの容量を見直します

(1) 異常終了の原因となったサーバを調べます(HiRDB/パラレルサーバの場合)

異常終了の原因となったサーバは,KFPS01220-Eメッセージから分かります。

syslogfileの内容

 
KFPS01220-E PRDT untF Request to swap sys(bes1) log file unable to be executed
because there is no standby log file group available.(13830)
 

この例では,異常終了の原因となったサーバは bes1です。このサーバのシステムログファイルの構成は次のようだとします。

[図データ]

(2) 再開始時の入力情報になるシステムログファイルの個数を求めます

再開始時の入力情報になるシステムログファイルの個数は,KFPS01229-Iメッセージとpdloglsコマンドから分かります。

参考
  • この方法以外でも再開始時の入力情報になるシステムログファイルの個数を求められます。方法については,「19.17.5 再開始時の入力情報になるシステムログファイル数の求め方」を参照してください。
  • pd_mode_conf=AUTO又はMANUAL1を指定していると,ユニットの異常終了後に自動的に再開始処理が何回か行われています。そのため,KFPS01229-Iメッセージがそのたびに出力されているので注意してください。最初(オンライン中)に異常終了したときに出力されたKFPS01229-Iメッセージを参照してください。

syslogfileの内容

KFPS01220-E PRDT untF Request to swap sys(bes1) log file unable to be executed
because there is no standby log file group available.(13830)
KFPO00105-E PRDT untF Server _log1s(process ID=13830) killed by 
code=Psjnf07(13830)
KFPS01821-E PRDT untF Unable to continue HiRDB unit processing because serious 
error occurred; stops HiRDB unit untF (13776)
KFPS01229-I PRDT untF Next bes1 log file restart point,generation number=4, 
block number=d. restart end point, generation number=6, blocknumber=11. 
last acquired syncpoint dump 1998/11/15 15:54:41 (13776)

pdloglsコマンドの実行結果

pdlogls -d sys -s bes1
 
HOSTNAME : dcm3500(163541)
***** Off-line Information *****
Group    Type Server   Gen No.  Status    Run ID      Block No.
logfg01  sys  bes1     1        cna---u  364a4ac2     1       6
logfg02  sys  bes1     2        cna---u  364a4ac2     7       9
logfg03  sys  bes1     3        cna---u  364a4ac2     a       c
logfg04  sys  bes1     4        cna---u  364a4ac2     d       e
logfg05  sys  bes1     5        cna---u  364a4ac2     f       10
logfg06  sys  bes1     6        cn---cu  364a4ac2     11      0
logfg07  sys  bes1     0        cn-----  00000000     0       0
logfg08  sys  bes1     0        cn-----  00000000     0       0
 

〔説明〕
KFPS01229-Iは,再開始時の入力情報になるシステムログファイルの情報を表示したメッセージです。この例では,再開始時のシステムログファイルの入力開始世代が4入力終了世代が6となっています。世代番号(Gen No)が4〜6のファイル(logfg04,logfg05,logfg06)が,再開始時の入力情報になるシステムログファイルです。したがって,再開始時の入力情報になるシステムログファイル数は3個になります。
「再開始時の入力情報になるシステムログファイル数+1(3+1=4)」個分のシステムログファイルが追加できる場合は,すぐにHiRDBを再開始できます。追加できない場合は,「19.17.2 システムログファイルの最低追加個数の求め方」を参照して,最低追加個数を求めてください。その後,上書きできる状態のファイルをスワップ先にできる状態にしてHiRDBを再開始します。
[図データ]

(3) pdfstatfsコマンドで,システムファイル用のHiRDBファイルシステム領域に空きがあるかどうかを確認します

システムログファイルを追加するHiRDBファイルシステム領域に,(2)で求めた4個分のシステムログファイルを追加するだけの空き領域があるかどうかをpdfstatfsコマンドで確認してください。

 
pdfstatfs /bes1/sysfile_a
pdfstatfs /bes1/sysfile_b
 

なお,一つ当たりのシステムログファイルの大きさが分からない場合は,次に示す手順で調べてください。

〈手順〉
  1. pdflsコマンドで,既存のシステムログファイルのレコード数を調べてください。
  2. 1.で求めたレコード数をaとした場合,次に示す計算式から求められます。
    a×4096(単位:バイト)

●HiRDBファイルシステム領域に空きがない場合
HiRDBファイルシステム領域に,(2)で求めた4個分のシステムログファイルを追加するだけの空き領域がない場合は,次に示すどれかの方法をとってください。
  1. 19.17.2 システムログファイルの最低追加個数の求め方」を参照して,最低追加個数を求めてください。その後,上書きできる状態のファイルをスワップ先にできる状態にします。
  2. ハードディスクの空き領域にシステムファイル用のHiRDBファイルシステム領域を作成します。そして,そこにシステムログファイルを追加します。システムファイル用のHiRDBファイルシステム領域の作成方法については,「19.17.4 システムファイル用のHiRDBファイルシステム領域の作成方法」を参照してください。
  3. ハードディスクに空き領域がない場合は,システムログファイルを追加できません。この場合は,新しいハードディスクを追加して,そこにシステムファイル用のHiRDBファイルシステム領域を作成してください。そうしないとユニットを再開始できません。

(4) サーバ定義にpdlogadfg及びpdlogadpfオペランドを追加します

 
pdlogadfg -d sys -g logfg09 ONL
pdlogadpf -d sys -g logfg09 -a /bes1/sysfile_a/log09a\
                            -b /bes1/sysfile_b/log09b
pdlogadfg -d sys -g logfg10 ONL
pdlogadpf -d sys -g logfg10 -a /bes1/sysfile_a/log10a\
                            -b /bes1/sysfile_b/log10b
pdlogadfg -d sys -g logfg11 ONL
pdlogadpf -d sys -g logfg11 -a /bes1/sysfile_a/log11a\
                            -b /bes1/sysfile_b/log11b
pdlogadfg -d sys -g logfg12 ONL
pdlogadpf -d sys -g logfg12 -a /bes1/sysfile_a/log12a\
                            -b /bes1/sysfile_b/log12b
 

追加するシステムログファイルに対応するpdlogadfg及びpdlogadpfオペランドを追加指定します。この例では,A系とB系それぞれ4個追加しています。

注意
HiRDB Datareplicatorが稼働中の場合は,いったんHiRDB Datareplicatorを終了してください。そして,(4)〜(5)の手順が終了したら,HiRDB Datareplicatorを開始してください。

(5) pdloginitコマンドでシステムログファイルを追加します

 
pdloginit -d sys -s bes1 -f /bes1/sysfile_a/log09a -n 5000
pdloginit -d sys -s bes1 -f /bes1/sysfile_b/log09b -n 5000
pdloginit -d sys -s bes1 -f /bes1/sysfile_a/log10a -n 5000
pdloginit -d sys -s bes1 -f /bes1/sysfile_b/log10b -n 5000
pdloginit -d sys -s bes1 -f /bes1/sysfile_a/log11a -n 5000
pdloginit -d sys -s bes1 -f /bes1/sysfile_b/log11b -n 5000
pdloginit -d sys -s bes1 -f /bes1/sysfile_a/log12a -n 5000
pdloginit -d sys -s bes1 -f /bes1/sysfile_b/log12b -n 5000
 

この例では,A系とB系それぞれ4個追加しています。

(6) pdstartコマンドでHiRDBを再開始します

●HiRDB/シングルサーバの場合

 
pdstart
 

●HiRDB/パラレルサーバの場合

HiRDB/パラレルサーバの場合は該当するユニットを再開始してください。

 
pdstart -u untF
 

HiRDB(ユニット)を再開始するとすぐに業務を受付られますが,まだ業務を再開しないでください。HiRDB(ユニット)の再開始直後は,HiRDBはまだデータベースの回復処理中です。このとき大量のデータベース更新業務をしてしまうと,再度システムログファイル不足になることがあります。そうなると,そのHiRDB(ユニット)が再度異常終了してしまいます。したがって,(9)までの手順が完了するまでは業務の再開を控えてください。

(7) シンクポイントダンプが有効化されたのを確認します

HiRDBを再開始すると,シンクポイントダンプが有効化されます。シンクポイントダンプが有効化されると,KFPS02183-Iメッセージが出力されます。シンクポイントダンプが有効化されたのを確認してから,次の操作をしてください。

なお,KFPS02183-Iメッセージは,pd_spd_assurance_msgオペランドにYを指定しているか,又はこのオペランドを省略していないと出力されません。この条件を満たしていない場合は,「19.17.6 シンクポイントダンプの有効化の確認方法」で説明している方法で,シンクポイントダンプが有効化されたのを確認してください。

(8) pdcopyコマンドでバックアップを取得します(アンロードレスシステムログ運用をしていた場合)

 
pdcopy -m dcm3500:/dbarea/area1/rdmt1 -M x -p /usr/ofile -f /usr/seifile/cfl
-z /usr/bes1/logpoint02
 

アンロードレスシステムログ運用をしていた場合は業務を再開する前に,データベース複写ユティリティ(pdcopyコマンド)でサーバ内の全RDエリアのバックアップを取得します。このとき,-zオプションを指定してログポイント情報ファイルを取得してください。バックアップの取得については,「6. バックアップの取得方法」を参照してください。

そして,バックアップを取得した後に,pdlogchg -zコマンドでシステムログファイルを解放して,ファイルの状態をアンロード済み状態にしてください。

 
pdlogchg -z /usr/bes1/logpoint02 [-x host_name]
 

(9) pdloglsコマンドで,スワップ先にできる状態のシステムログファイルがあることを確認します

 
pdlogls -d sys -s bes1
 

スワップ先にできる状態のファイルがないと,再度HiRDBが異常終了する可能性があります。早急にスワップ先にできる状態のファイルを作成してください。例えば,アンロード待ち状態を解除すればスワップ先にできる状態にできる場合は,pdlogunldコマンドでシステムログをアンロードしてください。

(10) 業務を再開します

業務を再開してください。

(11) システムログファイルの容量を見直します

システムログファイルの容量を見直してください。システムログファイルの容量の求め方については,マニュアル「HiRDB Version 8 システム導入・設計ガイド」を参照してください。その結果,追加したシステムログファイルが不要な場合は削除してください。システムログファイルの削除手順を次に示します。

ただし,アンロードレスシステムログ運用をしている場合には,削除対象のシステムログファイルを現用として使用している間は,システムログファイルを削除できません。削除対象でないシステムログファイルを現用として使用していることを確認して,再度前記(8)の処置をした後にシステムログファイルを削除してください。

〈手順〉
  1. pdstopコマンドでHiRDBを正常終了させます。
  2. 削除対象のシステムログファイルをアンロード又は状態変更します。
  3. HiRDB Datareplicatorを使用している場合は,HiRDB Datareplicatorが削除対象のシステムログファイルの抽出を終えたことを確認します。
  4. HiRDB Datareplicatorが稼働している場合は,HiRDB Datareplicatorを終了します。
  5. pdlogrmコマンドで,システムログファイルを削除します。
  6. 削除したシステムログファイルに対応するpdlogadfg及びpdlogadpfオペランドを削除します。
  7. pdstartコマンドでHiRDBを正常開始します。
  8. HiRDB Datareplicatorを使用している場合はHiRDB Datareplicatorを起動します。