UJP - 技術情報

Life is fun and easy!

不正IP報告数

Okan Sensor
 
メイン
ログイン
ブログ カテゴリ一覧

     

セッション情報の確認と切断 〜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 サーバのプロセス.

ご参考



広告スペース
Google