12.9.2 pdsdblodコマンドが無応答状態になった場合
pdsdblodコマンドが無応答状態になった場合,pdcancelコマンドでpdsdblodコマンドをキャンセルしてください。手順を次に示します。
- 手順1
-
-
pdls -d prcコマンドを実行します。コマンドの実行結果は,リダイレクションでファイルに出力してください。
pdls -d prc>出力先ファイル名
-
1.の実行結果を参照して,バックエンドサーバのプロセスIDを確認します。
HOSTNAME : host01(135225) STATUS PID UID GID SVID TIME PROGRAM C-PID C-GRP : 2924 : : : : pdsdblod : :
PROGRAM欄にpdsdblodと表示されている行を検索してください。この行のPID欄に表示されているプロセスID(この例では2924)が,pdsdblodコマンド実行中のバックエンドサーバのプロセスIDです。
pdsdblodが表示されていない場合は,手順2の方法でプロセスIDを確認してください。
-
pdcancelコマンドで,pdsdblodコマンド実行中のバックエンドサーバをキャンセルします。
pdcancel -X ユニット識別子 -i プロセスID -d
ユニット識別子には,pdsdblodコマンドの処理対象RDエリアがあるユニットのユニット識別子を指定してください。
プロセスIDには,2.で確認したプロセスID(この例では2924)を指定してください。
-
- 手順2
-
-
pdls -d rpcコマンドを実行します。コマンドの実行結果は,リダイレクションでファイルに出力してください。
pdls -d rpc -a>出力先ファイル名
-
1.の実行結果を参照して,ユティリティサーバ(pdsdblodm)のプロセスIDを確認します。
Server Information : PID SVID STATUS … CLTPID 5444 0msdldN : :
SVID欄に0msdldN(末尾のNは16進の数字)と表示されている行を検索してください。この行のPID欄に表示されているプロセスID(この例では5444)が,ユティリティサーバ(pdsdblodm)のプロセスIDです。
なお,0msdldNが複数表示されている場合は,CLTPID欄(サーバのプロセスと接続しているクライアントのプロセスID)を確認してください。無応答状態になったpdsdblodコマンドのプロセスIDがCLTPID欄に表示されている行が該当する行になります。pdsdblodコマンドのプロセスIDは,OSのpsコマンドで確認できます。
-
pdcancelコマンドで,ユティリティサーバ(pdsdblodm)をキャンセルします。
pdcancel -X ユニット識別子 -i プロセスID -d
ユニット識別子には,pdsdblodコマンドの処理対象RDエリアがあるユニットのユニット識別子を指定してください。
プロセスIDには,2.で確認したプロセスID(この例では5444)を指定してください。
-
なお,無応答状態の原因調査のために,pdsdblodコマンドのキャンセル後,pdinfogetコマンドで障害情報を取得してください。
- 注意事項
-
-
ログレスモードのpdsdblodコマンドをキャンセルした場合,処理対象RDエリアが障害閉塞します。そのため,pdsdblodコマンドを再実行する場合は,障害閉塞を解除する必要があります。障害閉塞を解除する方法については,「5.22 障害が発生したときの対処方法(pdsdblodコマンドの異常終了時)」を参照してください。
-
pdsdblodコマンドをキャンセルする際,OSのkillコマンドを使用しないでください。killコマンドでpdsdblodコマンドをキャンセルすると,ユニットが異常終了するおそれがあります。
-
大量のレコードをデータロードまたはフォーマットライトしているときに,pdsdblodコマンドをキャンセルすると,トランザクションのロールバック処理に時間が掛かります。このロールバック処理が完了するまでpdsdblodコマンドを再実行できません(コマンドの実行はできますが,排他待ち状態になります)。ロールバック処理が完了したかどうかは,pdls -d trn -aコマンドで確認できます。また,ロールバック処理が完了したときに,KFPB63451-Eメッセージが出力されます。
-