轻松接触Oracle数据库中的Killse ion

文章作者 100test 发表时间 2007:09:15 12:48:13
来源 100Test.Com百考试题网


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

  答:具体示例如下:

SQL> 0select p.addr from v$process p where pid

<>1 2 minus 3 0select 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。



相关文章


将图片文存储到Oracle的存储过程
ring调用ORACLE存储过程的结果集
Move系统表DEPENDENCY$导致索引失效的数据库故障
一个简单的oracle分页存储过程的实现和调用
轻松接触Oracle数据库中的Killse ion
利用Oracle解析函数快速检查序列间隙
检查管理Oracle10g数据库URL
QuestPerformanceAnalysis工具介绍
对Oracle支持服务的混合评论
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛