V$SESSION的SID&SERIAL#

最近学习ORACLE优化总想着收集一些高手常用的脚本(诸多性能视图关联来关联去)直接拿来主义,但是收集多了却自己记不住,总要去查,反省一下原因,就是因为自己拿来的多,变成自己的东西少,其根源在于没有扎扎实实地打基础。
因此今后要从每一个重要的性能视图入手,把他们的内容、什么情况下使用、之间的关系等好好搞搞清楚。

先记录一下关于V$SESSION.SID&SERIAL#的关系,这是我在需要杀掉一个会话时产生的疑问:
alter system kill session 'SID, SERIAL#';
我的疑问是:为什么需要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#超过最大值,重用的情况)

例如之前我需要执行alter system kill session '147, 33306';
执行之后,我还在同一个PL/SQL DEV的SQL WINDOW中重新做一个查询,就会又产生一个SID=147的SESSION,但是此时的SERIAL#变为33308了。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26521853/viewspace-1281714/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/26521853/viewspace-1281714/

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值