付録F.1 レプリカRDエリアが閉塞する事例
- 〈この項の構成〉
(1) 定義系SQL実行時にレプリカRDエリア閉塞
次のメッセージが出力され,レプリカRDエリアが障害閉塞しました。
-
KFPH22015-E(HiRDBファイルシステム領域がない)
-
KFPH00306-E(オープンエラー)
- よくある原因
-
副ボリュームがアクセス不可状態であるのに,レプリカRDエリアをアクセス抑止(コマンド閉塞かつクローズ)状態にしていません。このため,定義系SQLの実行の延長でレプリカRDエリアを更新しようとしてエラーになりました。
- 確認方法
-
次のことを確認します。
-
KFPH22032-Wメッセージが出力されていない。
-
現在の副ボリュームのファイルは,OSから認識できない状態になっている。
-
- 対処方法
-
レプリカRDエリアの障害閉塞状態を解除し,レプリカRDエリアをコマンド閉塞かつクローズ状態にして定義系SQLを実行します。
対処手順
手順 |
操作 |
確認方法 |
|
---|---|---|---|
1 |
副ボリュームをアクセス可能状態にします。 |
各システムでの操作手順に従ってください。 |
− |
2 |
レプリカRDエリアの障害閉塞を解除します。 |
「pdrels -r レプリカRDエリア名 -o」コマンドを実行します。 |
次のメッセージを確認します。
|
3 |
レプリカRDエリアへのアクセスを抑止します。 |
「pdhold -r レプリカRDエリア名 -c」コマンドを実行します。 |
次のメッセージを確認します。
|
4 |
RDエリアにアクセスするプロセスを停止します。 |
pdpfreshコマンドを実行します。 |
pdpfresh -c(プロセスのリフレッシュ完了確認)コマンドを実行し,次のメッセージを確認します。
|
5 |
シンクポイントダンプを取得します。 |
pdlogsyncコマンドを実行します。 |
− |
6 |
ペアボリュームを再同期します。 |
各システムでの操作手順に従ってください。 |
− |
7 |
定義系SQLを再実行します。 |
− |
− |
8 |
オンライン再編成の適用条件を満たしていることを確認します。 |
pdorcheckコマンドを実行します。 |
次のメッセージを確認します。
|
(2) RDエリアの状態解析コマンドでのセグメント情報取得(pddbls -r all -aコマンド実行)時にレプリカRDエリア閉塞
次のメッセージが出力され,レプリカRDエリアが障害閉塞しました。
-
KFPH22015-E(HiRDBファイルシステム領域がない)
-
KFPH00306-E(オープンエラー)
- よくある原因
-
副ボリュームがアクセス不可状態であるのに,レプリカRDエリアをアクセス抑止(コマンド閉塞かつクローズ)状態にしていません。このため,pddblsコマンドでレプリカRDエリアにアクセスしようとしてエラーになりました。
- 確認方法
-
現在の副ボリュームのファイルは,OSから認識できない状態になっていることを確認します。
- 対処方法
-
レプリカRDエリアの障害閉塞状態を解除します。
対処手順
手順 |
操作 |
確認方法 |
|
---|---|---|---|
1 |
副ボリュームをアクセス可能状態にします。 |
各システムでの操作手順に従ってください。 |
− |
2 |
レプリカRDエリアの障害閉塞を解除します。 |
「pdrels -r レプリカRDエリア名 -o」コマンドを実行します。 |
次のメッセージを確認します。
|
3 |
レプリカRDエリアへのアクセスを抑止します。 |
「pdhold -r レプリカRDエリア名 -c」コマンドを実行します。 |
次のメッセージを確認します。
|
4 |
RDエリアにアクセスするプロセスを停止します。 |
pdpfreshコマンドを実行します。 |
pdpfresh -c(プロセスのリフレッシュ完了確認)コマンドを実行し,次のメッセージを確認します。
|
5 |
シンクポイントダンプを取得します。 |
pdlogsyncコマンドを実行します。 |
− |
6 |
ペアボリュームを再同期します。 |
各システムでの操作手順に従ってください。 |
− |
(3) オリジナルRDエリア拡張後のRDエリアアクセス時にレプリカRDエリア閉塞
次のメッセージが出力され,レプリカRDエリアが障害閉塞しました。
-
KFPH22001-E(RDエリア制御情報の矛盾検知,reason code = 5)
よくある原因は二つあります。原因ごとに事例を説明します。
- よくある原因1
-
正ボリュームと副ボリュームのペアが解除されている状態でオリジナルRDエリアの拡張(pdmodコマンドのexpand rdarea文)を実行したため,オリジナルRDエリアとレプリカRDエリアの実体が不一致になっています。
ただし,レプリカRDエリアに定義情報のコピー(pdmodコマンドのdefine copy rdarea文)を実行しているため,オリジナルRDエリアとレプリカRDエリアの定義は一致しています。
- 確認方法
-
次のことを確認してください。
-
オリジナルRDエリアの拡張(pdmodコマンドのexpand rdarea文)を実行している。
-
レプリカRDエリアとオリジナルRDエリアの構成ファイル数が一致している(次のコマンドでディクショナリ表の構成ファイル数を検索して確認する)。
SELECT FILE_COUNT FROM "MASTER".SQL_RDAREAS WHERE RDAREA_NAME = 'RDエリア名称'
-
- 対処方法
-
レプリカRDエリアのデータベースの状態をオリジナルRDエリアに一致させ,レプリカRDエリアの閉塞を解除します。
対処手順
手順 |
操作 |
確認方法 |
|
---|---|---|---|
1 |
レプリカRDエリアへのアクセスを抑止します。 |
「pdclose -r レプリカRDエリア名」コマンドを実行します。 |
次のメッセージを確認します。
|
2 |
RDエリアにアクセスするプロセスを停止します。 |
pdpfreshコマンドを実行します。 |
pdpfresh -c(プロセスのリフレッシュ完了確認)コマンドを実行し,次のメッセージを確認します。
|
3 |
シンクポイントダンプを取得します。 |
pdlogsyncコマンドを実行します。 |
− |
4 |
ペアボリュームを再同期します。 |
各システムでの操作手順に従ってください。 |
− |
5 |
ペアを解除し,副ボリュームをアクセス可能状態にします。 |
各システムでの操作手順に従ってください。 |
− |
6 |
レプリカRDエリアの障害閉塞を解除します。 |
「pdrels -r レプリカRDエリア名 -o」コマンドを実行します。 |
次のメッセージを確認します。
|
- よくある原因2
-
正ボリュームと副ボリュームがペア状態でオリジナルRDエリアの拡張(pdmodコマンドのexpand rdarea文)を実行したので,オリジナルRDエリアとレプリカRDエリアの実体は一致していますが,レプリカRDエリアに定義情報のコピー(pdmodコマンドのdefine copy rdarea文)を実行していなかったため,オリジナルRDエリアとレプリカRDエリアの定義が不一致になりました。
- 確認方法
-
次のことを確認してください。
-
オリジナルRDエリアの拡張(pdmodコマンドのexpand rdarea文)を実行している。
-
レプリカRDエリアとオリジナルRDエリアの構成ファイル数が一致していない(次のコマンドでディクショナリ表の構成ファイル数を検索して確認する)。
SELECT FILE_COUNT FROM "MASTER".SQL_RDAREAS WHERE RDAREA_NAME = 'RDエリア名称'
-
- 対処方法
-
レプリカRDエリアを定義に従って再初期化し,障害閉塞を解除します。
その後,オリジナルRDエリアとレプリカRDエリアの実体と定義を一致させます。
対処手順
手順 |
操作 |
確認方法 |
|
---|---|---|---|
1 |
レプリカRDエリアへのアクセスを抑止します。 |
「pdclose -r レプリカRDエリア名」コマンドを実行します。 |
次のメッセージを確認します。
|
2 |
レプリカRDエリアを再初期化し,構成ファイル数をディクショナリ表の定義に一致させます。 |
pdmodコマンドの「initialize rdarea レプリカRDエリア名;」文を実行します。 |
次のメッセージを確認します。
|
3 |
レプリカRDエリアの障害閉塞を解除します。 |
「pdrels -r レプリカRDエリア名 -o」コマンドを実行します。 |
次のメッセージを確認します。
|
4 |
レプリカRDエリアへのアクセスを抑止します。 |
「pdhold -r レプリカRDエリア名 -c」コマンドを実行します。 |
次のメッセージを確認します。
|
5 |
RDエリアにアクセスするプロセスを停止します。 |
pdpfreshコマンドを実行します。 |
pdpfresh -c(プロセスのリフレッシュ完了確認)コマンドを実行し,次のメッセージを確認します。
|
6 |
シンクポイントダンプを取得します。 |
pdlogsyncコマンドを実行します。 |
− |
7 |
ペアボリュームを再同期します。 |
各システムでの操作手順に従ってください。 |
− |
8 |
オリジナルRDエリアの拡張のためにHiRDBファイルシステム領域を追加している場合は,レプリカ用の世代番号を登録します。 |
pdmodコマンドのcreate generation文を実行します。 |
− |
9 |
オリジナルRDエリアの構成情報をレプリカRDエリアの定義にコピーします。 |
pdmodコマンドの「define copy rdarea レプリカRDエリア名 reproduce オリジナルRDエリア名;」文を実行します。 |
次のメッセージを確認します。
|
10 |
ペアを解除し,副ボリュームをアクセスできる状態にします。 |
各システムでの操作手順に従ってください。 |
− |
11 |
レプリカRDエリアのコマンド閉塞を解除します。 |
「pdrels -r レプリカRDエリア名」コマンドを実行します。 |
次のメッセージを確認します。
|
(4) カレントRDエリア切り替え時にレプリカRDエリア閉塞(RDエリア制御情報の矛盾検知)
次のメッセージが出力され,レプリカRDエリアが障害閉塞しました。
-
KFPH22001-E(RDエリア制御情報の矛盾検知,reason code = 5)
- よくある原因
-
オリジナルRDエリアの拡張(pdmodコマンドのexpand rdarea文)を実行しましたが,レプリカRDエリアに定義情報のコピー(pdmodコマンドのdefine copy rdarea文)を実行していません。このため,レプリカRDエリアの定義情報と構成ファイル数が不一致になりました。
- 確認方法
-
オリジナルRDエリアの拡張(pdmodコマンドのexpand rdareaコマンド)を実行したかどうかを確認します。
- 対処方法
-
レプリカRDエリアを初期化し,障害閉塞を解除して,カレントRDエリアの切り替えを再実行します。その後オンライン再編成状態を解除して,オリジナルRDエリアとレプリカRDエリアのデータベースの定義と実体を一致させます。
対処手順
手順 |
操作 |
確認方法 |
|
---|---|---|---|
1 |
レプリカRDエリアを再初期化します(構成ファイル数をディクショナリ表の定義に一致させます)。 |
pdmodコマンドの「initialize rdarea レプリカRDエリア名;」文を実行します。 |
マニュアル「HiRDB コマンドリファレンス」の「データベース構成変更ユティリティ(pdmod)」を参照してください。 |
2 |
レプリカRDエリアの障害閉塞を解除します。 |
「pdrels -r レプリカRDエリア名 -o」コマンドを実行します。 |
次のメッセージを確認します。
|
3 |
pdorchgコマンドを再実行します。 |
エラーになったpdorchgコマンドを再実行して完了させます。 |
次のメッセージを確認します。
|
4 |
オンライン再編成閉塞を解除します。 |
pdorend -uコマンドを実行します。 |
次のメッセージを確認します。
また,pddblsコマンドを実行し,次の表示結果を確認します。
|
5 |
カレントRDエリアをオリジナルRDエリアに戻します。 |
「pddbchg -q 0 -r オリジナルRDエリア名」コマンドを実行します。 |
次のメッセージを確認します。
また,pddblsコマンドを実行し,次の表示結果を確認します。
|
6 |
レプリカRDエリアへのアクセスを抑止します。 |
「pdhold -r レプリカRDエリア名 -c」コマンドを実行します。 |
次のメッセージを確認します。
|
7 |
RDエリアにアクセスするプロセスを停止します。 |
pdpfreshコマンドを実行します。 |
pdpfresh -c(プロセスのリフレッシュ完了確認)コマンドを実行し,次のメッセージを確認します。
|
8 |
シンクポイントダンプを取得します。 |
pdlogsyncコマンドを実行します。 |
− |
9 |
ペアボリュームを再同期します。 |
各システムでの操作手順に従ってください。 |
− |
10 |
オリジナルRDエリアの拡張のためにHiRDBファイルシステム領域を追加している場合は,レプリカ用の世代番号を登録します。 |
pdmodコマンドのcreate generation文を実行します。 |
− |
11 |
オリジナルRDエリアの構成情報をレプリカRDエリアの定義にコピーします。 |
pdmodコマンドの「define copy rdarea レプリカRDエリア名 reproduce オリジナルRDエリア名;」文を実行します。 |
マニュアル「HiRDB コマンドリファレンス」の「データベース構成変更ユティリティ(pdmod)」を参照してください。 |
(5) カレントRDエリア切り替え時にレプリカRDエリア閉塞(オープンエラー)
次のメッセージが出力され,レプリカRDエリアが障害閉塞しました。
-
KFPO00107-E(システムコールエラー,"open64(oflopen64)" failed. errno=13 : Permission denied)
-
KFPH27007-E(HiRDBファイルシステム領域アクセスエラー,code = -1540)
-
KFPH00306-E(オープンエラー)
- よくある原因
-
副ボリュームの操作に失敗したため,副ボリュームがアクセス不可状態です。このため,レプリカRDエリアのオープン処理でエラーになりました。
- 確認方法
-
副ボリュームのファイルがOSから認識できない状態であることを確認します。
対処方法は次の二つがあります。
- 対処方法1
-
副ボリュームをアクセス可能にしてオンライン再編成を続行します。
対処手順
手順 |
操作 |
確認方法 |
|
---|---|---|---|
1 |
ペアを解除し,副ボリュームをアクセス可能状態にします。 |
各システムでの操作手順に従ってください。 |
− |
2 |
レプリカRDエリアの障害閉塞を解除します。 |
「pdrels -r レプリカRDエリア名 -o」コマンドを実行します。 |
次のメッセージを確認します。
|
3 |
pdorchgコマンドを再実行します。 |
− |
− |
- 対処方法2(通常運用として推奨する方法ではありません)
-
副ボリュームをアクセス可能にできない場合,システムのステータスをクリアして,オンライン再編成閉塞状態を解除します。この方法で対策する場合は,システム管理者に連絡してください。
対処手順
手順 |
操作 |
確認方法 |
|
---|---|---|---|
1 |
HiRDBを計画停止します。 |
pdstop -Pコマンドを実行します。 |
− |
2 |
ユニットとサーバのステータスファイルをすべて初期化(再作成)します。 |
pdstsiniコマンドを実行します。 |
− |
3 |
HiRDBを正常開始します。 |
pdstartコマンドを実行します。 |
− |
4 |
レプリカRDエリアへのアクセスを抑止します。 |
「pdhold -r レプリカRDエリア名 -c」コマンドを実行します。 |
次のメッセージを確認します。
|
5 |
カレントRDエリアをオリジナルRDエリアに戻します。 |
「pddbchg -q 0 -r オリジナルRDエリア名」コマンドを実行します。 |
次のメッセージを確認します。
また,pddblsコマンドを実行し,次の表示結果になっていることを確認します。
|
6 |
追い付き状態管理表を初期化するため,いったん削除します。 |
pdorcreate -dコマンドを実行します。 |
次のメッセージを確認します。
|
7 |
追い付き状態管理表を再作成します。 |
pdorcreateコマンドを実行します。 |
次のメッセージを確認します。
|
(6) 更新可能なオンライン再編成運用中の系切り替えでレプリカRDエリア閉塞
REDO処理中に次のメッセージが出力され,レプリカRDエリアが障害閉塞しました。
-
KFPH22015-E(HiRDBファイルシステム領域がない)
- よくある原因
-
待機系で副ボリュームをアクセス可能にしていませんでした。このため,REDO処理でレプリカRDエリアの回復ができませんでした。
- 確認方法
-
現在の副ボリュームのファイルはOSから認識できない状態であることを確認します。
- 対処方法
-
レプリカRDエリアの整合性が取れていないため,オンライン再編成を中止し,バックアップと更新ログからレプリカRDエリアを回復します。
対処手順
手順 |
操作 |
確認方法 |
|
---|---|---|---|
1 |
更新可能なオンライン再編成状態を取り消します。 |
pdorend -uコマンドを実行します。 |
次のメッセージを確認します。
また,pddblsコマンドを実行して,次の表示結果を確認します。
|
2 |
オリジナルRDエリアへのアクセスを抑止します。 |
「pdhold -r オリジナルRDエリア名 -c」コマンドを実行します。 |
次のメッセージを確認します。
|
3 |
システムログをアンロードします。 |
pdlogunldコマンドを実行します。 |
マニュアル「HiRDB コマンドリファレンス」の「RD単位の回復をする場合」を参照してください。 |
4 |
バックアップと手順3で取得したアンロードログを使用して,レプリカRDエリアを回復します。 |
pdrstr -q 0 -x cコマンドを実行します。 |
|
5 |
レプリカRDエリアのデータをオリジナルRDエリアにコピーします。 |
データのコピー方法は任意ですが,次のような方法があります。
コマンドによって実行できるRDエリアの状態が異なります。実行できるRDエリアの状態については,マニュアル「HiRDB コマンドリファレンス」の「RDエリアの状態によるユティリティ及びUAPの実行可否」を参照してください。 |
− |
6 |
カレントRDエリアをオリジナルRDエリアに戻します。 |
「pddbchg -q 0 -r オリジナルRDエリア名」コマンドを実行します。 |
次のメッセージを確認します。
また,pddblsコマンドを実行して,次の表示結果を確認します。
|
7 |
オリジナルRDエリアのコマンド閉塞を解除します。 |
「pdrels -r オリジナルRDエリア名 -o」コマンドを実行します。 |
次のメッセージを確認します。
また,pddblsコマンドを実行して,次の表示結果を確認します。
|
(7) オンライン再編成の追い付き反映時にレプリカRDエリア閉塞
オンライン再編成の追い付き反映コマンド(pdorend)は正常終了しましたが,次のメッセージが出力され,レプリカRDエリアが障害閉塞しました。
-
KFPO00107-E(システムコールエラー,"write(oflwrite)" failed. errno=5)
-
KFPH23100-E(HiRDBファイルアクセスエラー,code = -1544)
-
KFPH00306-E(入出力エラー)
または,次のメッセージが出力され,レプリカRDエリアが障害閉塞しました。
-
KFPH22015-E(HiRDBファイルシステム領域がない)
- よくある原因
-
pdorendコマンド完了前に副ボリュームをアクセスできない状態にしています。
- 確認方法
-
次のことを確認します。
-
pdorendコマンドが正常終了している。
-
pddblsコマンドの表示結果で,カレントRDエリアがオリジナルRDエリアになっている。
-
pdls -d orgコマンドの表示結果で,STATUSがNONEになっている。
-
現在の副ボリュームのファイルはOSから認識できない状態である。
-
- 対処方法
-
レプリカRDエリアの障害閉塞を解除し,オンライン再編成を終了させます。
対処手順
手順 |
操作 |
確認方法 |
|
---|---|---|---|
1 |
副ボリュームをアクセス可能にします。 |
各システムでの操作手順に従ってください。 |
− |
2 |
レプリカRDエリアの障害閉塞を解除します。 |
「pdrels -r レプリカRDエリア名 -o」コマンドを実行します。 |
次のメッセージを確認します。
|
3 |
レプリカRDエリアへのアクセスを抑止します。 |
「pdhold -r レプリカRDエリア名 -c」コマンドを実行します。 |
次のメッセージを確認します。
|
4 |
RDエリアにアクセスするプロセスを停止します。 |
pdpfreshコマンドを実行します。 |
pdpfresh -c(プロセスのリフレッシュ完了確認)コマンドを実行し,次のメッセージを確認します。
|
5 |
シンクポイントダンプを取得します。 |
pdlogsyncコマンドを実行します。 |
− |
6 |
ペアボリュームを再同期します。 |
各システムでの操作手順に従ってください。 |
− |