问答方式轻松学习Oracle数据库中的Kill session
敬业的IT人
互联网
佚名
2008-1-8 10:11:36
问:当一个session被kill掉以后,该session的paddr被修改,如果有多个session被kill,那么多个session的paddr都会被更改为相同的进程地址,在这种情况下,资源是无法释放的,我选择了查询spid,在操作系统级来kill这些进程。但是由于此时v $session.paddr已经改变,我已经无法通过v $session和v $process关联来获得spid,那还可以怎么办呢?
答:具体示例如下:
SQL> select p.addr from v $process p where pid
<> 1 2 minus 3 select s.paddr from v $session s;
ADDR
--------
542B70E8
542B7498
现在我们获得了进程地址,就可以在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。
- 最新文章
- 不能频繁执行DBCC SHRINKDATABASE的原因[01-08]
- 怎样正确了解链接存储的概念[01-08]
- 修改XDB的http和ftp服务端口的三种方法[01-08]
- Oracle数据库中的 bfile[01-08]
- Oracle中屏蔽英文提示信息的两个好方法[01-08]
- Oracle使用的hints调整机制[01-08]
- 相关文章
- Oracle数据库中的 bfile[01-08]
- Oracle中屏蔽英文提示信息的两个好方法[01-08]
- Oracle使用的hints调整机制[01-08]
- 11g的Memory_target与自动内存管理[01-08]
- 工作中遇到的Oracle故障分析[01-08]
- Oracle10g中的current_scn是如何计算的[01-08]
