Hitachi

インナレプリカ機能 HiRDB Staticizer Option Version 10


付録F.2 コマンドが異常終了する事例

〈この項の構成〉

(1) データベースの静止化(pdorbeginコマンド)が異常終了(RDエリア状態不正)

次のメッセージが出力され異常終了しました。

よくある原因

レプリカRDエリアをアクセス抑止(コマンド閉塞かつクローズ)状態にしていません。

確認方法

pddblsコマンドで表示するレプリカRDエリアの状態が「CLOSE HOLD(CMD)」以外であることを確認します。

対処方法

レプリカRDエリアをコマンド閉塞状態にします。

対処手順

手順

操作

確認方法

1

レプリカRDエリアへのアクセスを抑止します。

「pdhold -r レプリカRDエリア名 -c」コマンドを実行します。

次のメッセージを確認します。

  • KFPH00130-I RDAREA held, RDAREA = "RDエリア名"

  • KFPH00130-I RDAREA closed, RDAREA = "RDエリア名"

2

pdorbeginコマンドを再実行します。

(2) データベースの静止化(pdorbeginコマンド)が異常終了(タイムアウト)

次のメッセージが出力され異常終了しました。

よくある原因

次のどちらかの原因が考えられます。

  • 長時間実行中のトランザクションが存在します。

  • 複数のRDエリアの排他,またはサーバ間の排他で,作業中のトランザクションとデッドロックしました。

対処方法

pdorbeginコマンドを再実行します。

再実行してもエラーになる場合は,次のコマンドを実行し,資料を取得してタイムアウトになる原因を調査してください。

  • pdls -d trn -a

  • pdls -d lck -a

  • pdls -d prc

  • pdls -d rpc -a

(3) データベースの静止化の解除(pdorbegin -uコマンド)が異常終了

次のメッセージが出力され異常終了しました。

よくある原因

データベースの静止化コマンド(pdorbegin)がエラーとなった直後に,静止化解除コマンド(pdorbegin -u)を実行しましたが,対象RDエリア数が多かったため,pdorbeginコマンドのロールバック処理が完了していません。

対処方法

pdorbegin -uコマンドを再実行します。

(4) カレントRDエリアの切り替え(pdorchgコマンド)が異常終了(タイムアウト)

次のメッセージが出力され,異常終了しました。

よくある原因

長時間実行中のトランザクションが存在します。

対処方法

pdorchgコマンドを再実行します。

再実行してもエラーになる場合は,次のコマンドを実行し,資料を取得してタイムアウトになる原因を調査してください。

  • pdls -d trn -a

  • pdls -d lck -a

  • pdls -d prc

  • pdls -d rpc -a

(5) カレントRDエリアの切り替え(pdorchgコマンド)が異常終了(コマンドの実行順序不正)

次のメッセージが出力され異常終了しました。

よくある原因

データベースの静止化コマンド(pdorbegin)のエラーを無視してカレントRDエリア切り替えコマンド(pdorchg)を実行しました。

確認方法

pdorbeginコマンドの結果を確認します。

対処方法

pdorbeginコマンドの仕掛かり状態を取り消します。

対処手順

次のどちらかの手順を実行してください。

手順

操作

確認方法

1

pdorbeginコマンドのエラー原因を取り除き,pdorbeginコマンドから再実行します。

手順

操作

確認方法

1

pdorbegin -uコマンドを実行し,pdorbeginコマンドの仕掛かり処理を取り消します。

「pdorbegin {-r RDエリア名|-t 表名|-s サーバ名} -u」コマンドを実行します。

次のメッセージを確認します。

  • KFPH27045-I pdorbegin command ended, return code = 0

また,pddblsコマンドを実行し,次の表示結果を確認します。

  • オリジナルRDエリアのSTATUS:OPEN

  • オリジナルRDエリアのREPLICA-STATUS:C(カレントRDエリア)

(6) 更新可能なオンライン再編成が異常終了(RDエリア容量不足)

次のメッセージが出力され異常終了しました。

よくある原因

ページの格納効率が高い表(インデクス)を再編成すると,定義時の空き領域比率に従った空き領域を確保しながら詰め直すため,再編成前よりも表(インデクス)のページサイズが大きくなることがあります。

確認方法

KFPA11756-E,およびKFPH00213-Wメッセージが出力されていることを確認します。

対処方法は次の三つがあります。

対処方法1

オリジナルRDエリアを拡張してから,データベース再編成ユティリティを再実行します。

注 データベース再編成ユティリティの異常終了によってRDエリアがログレス閉塞している場合は,回復作業を先に実施してください。

対処手順

手順

操作

確認方法

1

オリジナルRDエリアを拡張します。

HiRDBファイルシステム領域の世代番号の登録」および「インナレプリカグループ内のRDエリアの構成変更と構成情報の複写」を参照してください。

2

表をリロードします。

pdrorg -k reldコマンドを実行します。

3

追い付き反映処理をします。

pdorendコマンドを実行します。

4

RDエリアにアクセスするプロセスを停止します。

pdpfreshコマンドを実行します。

pdpfresh -c(プロセスのリフレッシュ完了確認)コマンドを実行し,次のメッセージを確認します。

  • KFPS00730-I pdpfresh ended, return code = 0

5

シンクポイントダンプを取得します。

pdlogsyncコマンドを実行します。

6

ペアボリュームを再同期します。

各システムでの操作手順に従ってください。

7

オリジナルRDエリアの定義をレプリカRDエリアにコピーします。

pdmodコマンドの「define copy rdarea レプリカRDエリア名 reproduce オリジナルRDエリア名;」文を実行します。

マニュアル「HiRDB コマンドリファレンス」の「データベース構成変更ユティリティ(pdmod)」を参照してください。

対処方法2

オプションで空き領域比率を小さく指定してデータベース再編成ユティリティを再実行します。

注 データベース再編成ユティリティの異常終了によってRDエリアがログレス閉塞している場合は,回復作業を先に実施してください。

対処手順

手順

操作

確認方法

1

空き領域比率を小さくして表をリロードします。

option文のtblfree(表の空き領域比率)またはidxfree(インデスクの空き領域比率)の値を小さくしてpdrorg -k reldコマンドを実行します。

マニュアル「HiRDB コマンドリファレンス」の「データベース構成変更ユティリティ(pdmod)」を参照してください。

2

次回のデータベース再編成までにRDエリアを拡張します。

インナレプリカグループ内のRDエリアの構成変更と構成情報の複写」を参照してください。

対処方法3

今回のデータベース再編成をあきらめて,現在のオンライン再編成閉塞状態を終了させます。

対処手順

手順

操作

確認方法

1

オリジナルRDエリアを再編成ユティリティ開始直前に回復します。

オンライン再編成を実行する前のバックアップファイルと,システムログファイルを使用して,終了時間指定でオリジナルRDエリアを再編成ユティリティ開始直前に回復します。操作手順は,マニュアル「HiRDB コマンドリファレンス」の「データベース回復ユティリティ(pdrstr)」を参照してください。

2

オンライン再編成の追い付き反映を実行します。

pdorendコマンドを実行します。

次のメッセージを確認します。

  • KFPH27045-I pdorend command ended, return code = 0

(7) 更新可能なオンライン再編成が異常終了(通信処理エラー)

次のメッセージが出力され異常終了しました。

よくある原因

一度に処理できるメッセージ数の上限数900を超えました。

短時間に多数のメッセージが出力されると,ネットワークやディスクなどに負荷が掛かり,通信エラーになります。

確認方法

再編成対象の表,インデクス,またはRDエリアの数が900近いことを確認します。

対処方法

再編成の単位を分けて,データベース再編成ユティリティを複数回実行します。

(8) 更新可能なオンライン再編成の取り消し(pdorend -uコマンド)が異常終了

次のメッセージが出力され異常終了しました。

よくある原因

運用中にレプリカRDエリアをpdholdコマンドで意図的にコマンド閉塞にしていましたが,その後解除していませんでした。

確認方法

pddblsコマンドを実行して,レプリカRDエリアの状態が「CLOSE HOLD(CMD)」または「HOLD(CMD)」であることを確認します。

対処方法

レプリカRDエリアのコマンド閉塞を解除してから,pdorend -uコマンドを再実行します。

対処手順

手順

操作

確認方法

1

レプリカRDエリアのコマンド閉塞を解除します。

「pdrels -r レプリカRDエリア名」コマンドを実行します。

次のメッセージを確認します。

  • KFPH00130-I RDAREA released, RDAREA = "RDエリア名"

また,pddblsコマンドを実行して,次の表示結果を確認します。

  • レプリカRDエリアのSTATUS:HOLD(ORG)

2

pdorend -uコマンドを再実行します。

(9) オンライン再編成の追い付き反映(pdorendコマンド)が異常終了(タイムアウトまたはリトライ回数オーバー)

次のメッセージが出力され,レプリカRDエリアが障害閉塞しました。

よくある原因

長時間実行中のトランザクションが存在しました。

対処方法

追い付き反映処理の最大待ち時間の指定値を大きくするか,レプリカRDエリアに対するトランザクション量を抑えてから,再度コマンドを実行します。

対処手順

次のどちらかの手順を実行してください。

手順

操作

確認方法

1

オンライン再編成の追い付き反映コマンドのオペランドを修正し,再実行します。

pdorendコマンドの-n(最大リトライ回数),-t(トランザクション処理の最大待ち時間),-w(追い付き反映処理の最大待ち時間)オペランドの値の妥当性を検証し,再実行します。

次のメッセージを確認します。

  • KFPH27045-I pdorend command ended, return code = 0

手順

操作

確認方法

1

長時間実行中のトランザクションの完了を待って,pdorendコマンドを再実行します。

(10) オンライン再編成の追い付き反映(pdorendコマンド)が異常終了(コマンドの実行順序不正)

次のメッセージが出力され異常終了しました。

よくある原因

レプリカRDエリアのコマンド閉塞状態(pdhold)を解除していません。

確認方法

pddblsコマンドを実行し,レプリカRDエリアの状態が「CLOSE HOLD(CMD)」であることを確認します。

対処手順

手順

操作

確認方法

1

レプリカRDエリアのコマンド閉塞を解除します。

「pdrels -r レプリカRDエリア名」コマンドを実行します。

次のメッセージを確認します。

  • KFPH00130-I RDAREA released, RDAREA = "RDエリア名"

また,pddblsコマンドを実行し,レプリカRDエリアが次の状態であることを確認します。

  • 「HOLD(ORG)」または「CLOSE HOLD(ORG)」

2

pdorendコマンドを再実行します。

(11) オンライン再編成の追い付き反映(pdorendコマンド)が異常終了(ユニークインデクス未定義)

次のメッセージが出力され異常終了しました。

よくある原因

次の二つがあります。

原因1

データベース静止化コマンド(pdorbegin)で指定した表またはRDエリアの関連RDエリア内に更新可能なオンライン再編成の実行に必要なユニークインデクスが定義されていない表があります。

原因2

更新可能なオンライン再編成の対象表にはユニークインデクスが定義されていますが,NULL値を許す列(非ナル値制約でない列)を含んでいます。

確認方法

オンライン再編成の対象表のインデクス定義を確認してください。また,表指定(pdorbegin -t指定)のオンライン再編成の場合,指定した表以外でもその表に関連するRDエリア内の表に更新があった場合,追い付き反映対象になるため,ユニークインデクス(NULL値を許す列を含まない)が必要です。関連するRDエリア内にある表のインデクス定義を確認してください。特に関連するRDエリアに表を追加した場合などは注意してください。

対処方法

オンライン再編成状態を取り消し,レプリカRDエリアで更新を抑止して業務を続行します。その間にレプリカRDエリアの内容をオリジナルRDエリアにコピーします。その後,レプリカRDエリアのアクセスを抑止し,オンライン再編成の実行に必要なユニークインデクスを定義します。

注 エラー発生時点ではレプリカRDエリアの更新はオリジナルRDエリアに反映されていません。オリジナルRDエリアのデータをレプリカRDエリアに同期させるまでは,更新業務を抑止してください。

対処手順

手順

操作

確認方法

1

オンライン再編成状態を取り消します。

pdorend -uコマンドを実行します。

次のメッセージを確認します。

  • KFPH27045-I pdorend command ended, return code = 0

また,pddblsコマンドを実行して,次の表示結果になっていることを確認します。

  • オリジナルRDエリアのREPLICA-STATUS:S(サブRDエリア)

  • レプリカRDエリアのREPLICA-STATUS:C(カレントRDエリア)

2

レプリカRDエリアの更新を抑止します。

手順4でレプリカRDエリアのデータをオリジナルRDエリアにコピーするため,その方法に合わせた閉塞状態にします。

参照可能バックアップ閉塞にする場合:

「pdhold -r レプリカRDエリア名 -b」コマンドを実行します。

次のメッセージを確認します。

  • KFPH00130-I RDAREA held(bu i), RDAREA = "RDエリア名"

参照可能閉塞にする場合:

「pdhold -r レプリカRDエリア名 -i」コマンドを実行します。

次のメッセージを確認します。

  • KFPH00130-I RDAREA held(inq), RDAREA = "RDエリア名"

アクセス禁止閉塞にする場合:

「pdhold -r レプリカRDエリア名」コマンドを実行します。

次のメッセージを確認します。

  • KFPH00130-I RDAREA held, RDAREA = "RDエリア名"

アクセス禁止閉塞かつクローズ状態にする場合:

「pdhold -r レプリカRDエリア名 -c」コマンドを実行します。

次のメッセージを確認します。

  • KFPH00130-I RDAREA held, RDAREA = "RDエリア名"

  • KFPH00130-I RDAREA closed, RDAREA = "RDエリア名"

3

オリジナルRDエリアのアクセスを抑止します。

手順4でレプリカRDエリアのデータをオリジナルRDエリアにコピーするため,そのコピー方法に合わせた閉塞状態にします。

参照可能閉塞にする場合:

「pdhold -r オリジナルRDエリア名 -i」コマンドを実行します。

次のメッセージを確認します。

  • KFPH00130-I RDAREA held(inq), RDAREA = "RDエリア名"

アクセス禁止閉塞かつクローズ状態にする場合:

「pdhold -r オリジナルRDエリア名 -c」コマンドを実行します。

次のメッセージを確認します。

  • KFPH00130-I RDAREA held, RDAREA = "RDエリア名"

  • KFPH00130-I RDAREA closed, RDAREA = "RDエリア名"

4

レプリカRDエリアのデータをオリジナルRDエリアにコピーします。

データのコピー方法は任意ですが,次のような方法があります。

  • pdcopyコマンドでデータをコピーし,pdrstrコマンドで回復する。

  • pdrorgコマンドでデータをアンロード,リロードする。

  • pdrorgコマンドでデータをアンロードし,pdloadコマンドでリロードする。

コマンドによって実行できるRDエリアの状態が異なります。実行できるRDエリアの状態については,マニュアル「HiRDB コマンドリファレンス」の「RDエリアの状態によるユティリティ及びUAPの実行可否」を参照してください。

5

オリジナルRDエリアのコマンド閉塞を解除します。

「pdrels -r オリジナルRDエリア名 -o」コマンドを実行します。

次のメッセージを確認します。

  • KFPH00130-I RDAREA released, RDAREA = "RDエリア名"

  • KFPH00130-I RDAREA opened, RDAREA = "RDエリア名"

その後,pddblsコマンドを実行して,次の表示結果を確認します。

  • オリジナルRDエリアのSTATUS:OPEN

6

カレントRDエリアをオリジナルRDエリアに戻します。

「pddbchg -q 0 -r オリジナルRDエリア名」コマンドを実行します。

次のメッセージを確認します。

  • KFPH00130-I RDAREA current changed, RDAREA = "RDエリア名"

その後,pddblsコマンドを実行して,次の表示結果を確認します。

  • オリジナルRDエリアのREPLICA-STATUS:C(カレントRDエリア)

  • レプリカRDエリアのREPLICA-STATUS:S(サブRDエリア)

7

手順2でレプリカRDエリアをアクセス禁止閉塞かつクローズ状態にしていない場合,アクセス禁止閉塞かつクローズ状態にします。

アクセス禁止閉塞(クローズ状態でない)の場合:

「pdclose -r レプリカRDエリア名」コマンドを実行し,クローズ状態にします。

次のメッセージを確認します。

  • KFPH00130-I RDAREA closed, RDAREA = "RDエリア名"

参照可能バックアップ閉塞,参照可能閉塞の場合:一度閉塞を解除し,その後アクセス禁止閉塞かつクローズ状態にします。

  1. 「pdrels -r レプリカRDエリア名」コマンドで閉塞を解除します。

  2. pddblsコマンドでRDエリアの状態を確認します。

  3. 「pdhold -r レプリカRDエリア名 -c」コマンドで閉塞かつクローズ状態にします。

1.に対して次のメッセージを確認します。

  • KFPH00130-I RDAREA released, RDAREA = "RDエリア名"

2.に対して次の表示結果を確認します。

  • レプリカRDエリアのSTATUS:OPEN

3.に対して次のメッセージを確認します。

  • KFPH00130-I RDAREA held, RDAREA = "RDエリア名"

  • KFPH00130-I RDAREA closed, RDAREA = "RDエリア名"

8

該当する表に,更新可能なオンライン再編成の実行に必要なユニークインデクスを定義するか,該当する表をインナレプリカ運用しないRDエリアに移動させます。

9

更新可能なオンライン再編成の適用条件が満たされていることを確認します。

pdorcheckコマンドを実行します。

次のメッセージを確認します。

  • KFPT02022-I Pdorcheck:all resources conformed to Online DB Reorganization