v$session SERIAL#的含义

 
问题
大家都知道Kill Session的时候要知道 SID和SERIAL#, 语法如下:
Alter system kill session 'SID,SERIAL#'  
但是为什么单单就一个SID不够呢?
 
答案:
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#超过最大值,重用的情况)

posted @ 2014-07-11 01:31  princessd8251  阅读(401)  评论(0)    收藏  举报