セッション情報の確認と切断 〜sp_who〜
セッション情報の確認と切断
〜sp_who〜
0.更新履歴
- 2002.01.21 新規作成
- 2002.03.02 読み方を追加.
- 2002.09.01 関連書類へのリンク追加.
1.はじめに
このドキュメントでは,sybaseにて,現在のセッション情報の確認と,セッションの切断方法について説明する.
2.セッション情報の確認
- sp_whoコマンドを使うと,現在データベースに接続しているセッションが表示される.
1> sp_who
2> go
spid status loginame hostname blk dbname cmd
------ ------------ ------------ ---------- ----- ---------- ----------------
1 runnable scott test-db 0 pubs2 AWAITING COMMAND
2 sleeping NULL 0 master NETWORK HANDLER
3 sleeping NULL 0 master DEADLOCK TUNE
4 sleeping NULL 0 master MIRROR HANDLER
5 runnable NULL 0 master HOUSEKEEPER
6 runnable NULL 0 pubs2 CHECKPOINT SLEEP
7 recv sleep gyotest 0 GYOUMUDB_T AWAITING COMMAND
8 recv sleep gyotest 0 GYOUMUDB_T AWAITING COMMAND
9 running sa test-db 0 master SELECT
(9 rows affected, return status = 0)
1>
|
- loginnameがNULLになっているものは,システムのセッションである.
3.セッションの強制終了
- spidを指定してkillコマンドを使うことで,そのセッションを強制終了する事ができる.
1> kill 1
2> go
1> sp_who
2> go
spid status loginame hostname blk dbname cmd
------ ------------ ------------ ---------- ----- ---------- ----------------
2 sleeping NULL 0 master NETWORK HANDLER
3 sleeping NULL 0 master DEADLOCK TUNE
4 sleeping NULL 0 master MIRROR HANDLER
5 sleeping NULL 0 master HOUSEKEEPER
6 sleeping NULL 0 master CHECKPOINT SLEEP
9 running sa test-db 0 master SELECT
(6 rows affected, return status = 0)
1>
|
- プロセス1がなくなったことがわかる.
- なお,spidとは,ServerProcessIDの略.
4.邪魔しているプロセスを調べる
- ある処理が,ほかの処理が邪魔をしてて処理できないことがある.
- DBの場合,“ロック待ち”などの状態でそれが発生する.
- sp_whoで現在のプロセスを確認する.
1> sp_who
2> go
spid status loginame hostname blk dbname cmd
------ ------------ ------------ ---------- ----- ---------- ----------------
1 recv sleep baka linux01 0 BABADB AWAITING COMMAND
2 sleeping NULL 0 master NETWORK HANDLER
3 sleeping NULL 0 master DEADLOCK TUNE
4 sleeping NULL 0 master MIRROR HANDLER
5 sleeping NULL 0 master HOUSEKEEPER
6 sleeping NULL 0 master CHECKPOINT SLEEP
7 recv sleep baba 0 BABADB AWAITING COMMAND
8 lock sleep baba 9 BABADB SELECT
9 recv sleep baba 0 BABADB AWAITING COMMAND
20 lock sleep baba 9 BABADB SELECT
21 running baba linux01 0 master SELECT
22 lock sleep baba 9 BABADB SELECT
23 recv sleep sa linux01 0 master AWAITING COMMAND
(21 rows affected, return status = 0)
1>
|
- blk列に表示されているのが,そのプロセスをブロックしているプロセスのIDである.
- この一覧を見ると,spid 8とspid 22がSELECT文を発行しようとしている.
- しかし,ともに,lock sleep状態である.
- つまり,ロック取得を待っている状態.
- それらのblk列をみると,spid 9の処理を待っていることがわかる.
- spid 9は,AWAITING COMMANDとなっており,statusも,recv sleepとなっているため,なにも実行していない模様.
5.statusの読み方
status |
説明 |
recv sleep |
ネットワーク読み込み中. |
send sleep |
ネットワーク送信中. |
alarm sleep |
waitfor delay? |
lock sleep |
ロック取得待機中 |
sync sleep |
ファミリのほかのプロセスからの同期メッセージ待機中 |
runnable |
実行可能プロセスをキューに登録中 |
running |
実行中 |
log suspend |
トランザクションログが一杯になって待機中. |
強制終了するとやばいもの
status |
説明 |
sleeping |
ディスクIO待ち. |
infected |
Sybaseの内部エラー.サーバのリブートで対処. |
background |
サーバのプロセス. |
ご参考