v$session SERIAL#字段的含义

  • Post author:
  • Post category:其他



wabjtam123

在itpub的一个提问帖子,
我经常看到要KILL SESSION

好象不止杀一个SID,

好象是Alter system kill session ‘SID,SERIAL#’

这个SERIAL#是什么东西呢?为什么不是

Alter system kill session SID就好呢???

那SERIAL#到底从哪来的东东呢???通过v$session当然可以知道SERIAL#,我是不解为什么一个会话要’SID,SERIAL两个来定位,不是

sid就是session id吗?SERIAL#到底是什么东东啊???


rollingpig

版主的解释
sid 会重用,但是同一个SID被重用时,serial#会增加,不会重复。

比如说你在10:00时发现有一个SID 为10 ,serial#为100的session 不正常,想杀掉他,要是直接用kill sid 10 ,而同时这个session 主动退出,新session近来 而又正好用了 10这个SID (这时新session的serial#不会=100,只会比100高),就会发生误杀的情况。所以Oracle要求我们在杀session时,必须同时指定sid和serial#.

从另外一个角度上说,

sid 在同一个instance的当前session中是一个unique key

,

而sid ,serial#则是在整个instance生命期内的所有session中是unique key

。(不考虑serial#超过最大值,重用的情况)