数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

轻松接触Oracle数据库中的Kill session


发布日期:2018年11月16日
 
轻松接触Oracle数据库中的Kill session

当一个session被kill掉以后该session的paddr被修改如果有多个session被kill那么多个session的paddr都会被更改为相同的进程地址在这种情况下资源是无法释放的我选择了查询spid在操作系统级来kill这些进程但是由于此时v$sessionpaddr已经改变我已经无法通过v$session和v$process关联来获得spid那还可以怎么办呢?

具体示例如下

SQL> select paddr from v$process p where pid<> minusselect spaddr from v$session s;ADDRBEB

现在我们获得了进程地址就可以在v$process中找到spid然后可以使用Kill或者orakill在系统级来杀掉这些进程

当在Oracle中kill session以后 Oracle只是简单的把相关session的paddr 指向同一个虚拟地址

此时v$process和v$session失去关联进程就此中断然后Oracle就等待PMON去清除这些Session所以通常等待一个被标记为Killed的Session退出需要花费很长的时间如果此时被Kill的process重新尝试执行任务那么马上会收到进程中断的提示process退出此时Oracle会立即启动PMON 来清除该session

上一篇:DB2数据库中的数据移动方法解析

下一篇:TreapDB 2.0 RC1 版放出,K/V存储数据库