10.8.1 APおよびコマンドの処理状況を確認する方法
APやコマンドを実行したときにトランザクションの処理時間が予想より長い場合は,トランザクションの処理状況を確認して対処する必要があります。
トランザクションの処理状況を確認する方法を次に示します。なお,adbinitコマンドおよびadbstatコマンドの処理状況は確認できません。
確認手順
-
adbls -d cnctコマンドを実行する
項目「PROGRAM」に,対象のコネクションが表示されているかどうか確認してください。
■APの処理状況を確認したい場合
クライアント定義のadb_clt_ap_nameオペランドに指定したAP識別子が表示されます。adbls -d cnctコマンドの実行結果の例を次に示します。
実行結果の例
AP識別子が表示されている場合は手順3.に進んでください。
adb_clt_ap_nameオペランドを指定していない場合は,********が表示されます。その場合は,手順2.に進んでください。
- メモ
-
SQL文が実行中の場合は,SQL_ELAPSED_TIMEに,実行開始から最も時間が経過しているSQL文の経過時間(マイクロ秒)が表示されます。
■コマンドの処理状況を確認したい場合
コネクションが確立している場合,対象のコマンド名(adbimportなど)が表示されます。adbsqlコマンドの場合は,クライアント定義のadb_clt_ap_nameオペランドに指定したAP識別子が表示されます。
表示されている場合は手順3.に進んでください。表示されていない場合は手順2.に進んでください。
-
adbls -d srvコマンドを実行する
対象のコネクションが表示されていない場合,HADBサーバが稼働中かどうかを確認してください。adbls -d srvコマンドの実行結果の例を次に示します。
実行結果の例
SVID STATUS START_TIME MSGLOG_STATUS 6477 ACTIVE 2017/03/02 14:18:34 NORMAL
項目「STATUS」が"ACTIVE"の場合,HADBサーバは稼働中のため,手順6.に進んでください。
項目「STATUS」が"ACTIVE"以外の場合は,adbstartコマンドを実行してHADBサーバを開始してから,APやコマンドを再度実行してください。
-
コネクションIDを確認する
手順1.でadbls -d cnctコマンドを実行し対象のコネクションが表示されている場合,項目「CID」にコネクションIDが表示されているかどうか確認してください。コネクションIDが表示されている場合は手順4.に,表示されていない場合は手順6.に進んでください。
-
adbstat -c cnct -nコマンドを実行する
トランザクションの処理状況を確認するため,手順1.で確認したAP識別子を基に,adbstat -c cnct -nコマンドを実行してください。-nオプションには,AP識別子を指定してください。
コネクションの稼働情報が出力されるため,次に示す出力項目を確認してトランザクションの処理状況を確認します。
-
SQL_execute_wait_total_time(SQL文の実行待ち状態の合計時間)
-
SQL_execute_wait_cnt(SQL文の実行待ち状態の発生回数)
-
実行している各SQL文の実行時間
SELECT_total_time(SELECT文の実行時間)
INSERT_total_time(INSERT文の実行時間)
UPDATE_total_time(UPDATE文の実行時間)
DELETE_total_time(DELETE文の実行時間)
PURGE_CHUNK_total_time(PURGE CHUNK文の実行時間)
各出力項目の値が,前回adbstatコマンドを実行したときの結果と比較して増加している場合は,処理に時間が掛かっていることが確認できます。もし,処理中のトランザクションを強制終了したい場合は,手順5.に進んでください。
なお,初めてadbstatコマンドを実行した場合,または前回実行したadbstatコマンドの結果がわからない場合は,処理に時間が掛かっているかどうかを確認できません。
-
-
adbcancelコマンドを実行する
必要に応じて処理中のトランザクションを強制終了します。
処理中のトランザクションを強制終了する場合は,手順3.で確認したコネクションIDを-uオプションで指定して,adbcancelコマンドを実行してください。強制終了後,APやコマンドを再度実行してください。
-
APを調査する
HADBサーバが稼働中だが,コネクションIDが表示されていない場合,対象のAPがHADBサーバに接続できていません。そのため,APがHADBサーバに接続できるかどうか調査してください。また,クライアント定義のadb_clt_rpc_srv_hostオペランド,およびadb_clt_rpc_srv_portオペランドの指定値を見直してください。