Oracle杀掉系统进程的描述

在使用Oracle处理大量数据导入时,遇到网络不稳定导致数据导入中断并出现系统进程锁死问题。通过查询Oracle锁表情况,使用ALTER SYSTEM KILL SESSION命令尝试解除锁死状态,但发现直接杀死会话无法立即释放资源。最终采用查询会话ID和地址,通过操作系统直接终止Oracle进程的方法解决问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Oracle杀掉系统进程的描述

2012-01-18 00:00 中国IT实验室 佚名
字号:
A+
|
A-

  在导入附件表AFFIX的时候,数据量很小就1w多条数据,但是AFFIX中有一个blob的大字段,这就使得查询起来很慢,因为工作的环境网络特别的不稳定,开始导入了大概快一半了,突然网络断了,当时真的很生气,但是也没有什么办法,网络好后接着导入此时总是出现导入错误、甚至导入了很长时间,数据条数根本没发生变化,就是这样的反反复复,查看了一下Oracle锁表的情况:

  SELECT OBJECT_NAME, MACHINE, S.SID, S.SERIAL#

  FROM V$LOCKED_OBJECT L, DBA_OBJECTS O, V$SESSION S

  WHERE L.OBJECT_ID  =   O.OBJECT_ID

  AND L.SESSION_ID = S.SID;

  结果就看到如下结果:

  果然有表锁死了,心想kill掉锁死的表很简单,命令如下:

  alter system kill session '519,10230';

  执行的时间很长,后来居然出现了下图的错误:

  一看就是报错了,查了一些资料是因为oracle锁死的表被杀死后,状态被标识为“killed”但是锁定资源很长时间才能得到释放,有的时候实在没有别的好的办法我们就需要重启数据库了,我的理解是如果等半天或者更长时间的话是可以被释放的。于是就开始查询资料、例子,解决办法如下:

  SELECT SID,SERIAL#,PADDR FROM V$SESSION WHERE SID='519' --被锁定的SID

  此时可以得到 PADDR ,在通过SQL得到:

  SELECT SPID FROM V$PROCESS WHERE ADDR='695E3F2C'; --PADDR的值

  这个时候就可以直接在系统中把oracle进程杀掉了,可以使用 kill -9 SPID 或者 ORAKILL SID SPID

  此时整个操作完成,如果遇到此类问题不能解决大家在一起讨论。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值