数据库

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

Oracle中杀不掉的锁(killed)解决办法


发布日期:2023年09月10日
 
Oracle中杀不掉的锁(killed)解决办法

下面的语句用来查询哪些对象被锁

代码如下

select object_namemachinessidsserial#
from v$locked_object ldba_objects o v$session s
where lobject_id=oobject_id and lsession_id=ssid;

下面的语句用来杀死一个进程

代码如下 alter system kill session ;

(其中分别是上面查询出的sidserial#)

【注】以上两步可以通过Oracle的管理控制台来执行

如果利用上面的命令杀死一个进程后进程状态被置为"killed"但是锁定的资源很长时间没有被释放那么可以在os一级再杀死相应的进程(线程)首先执行下面的语句获得进程(线程)号

代码如下

select spid osuser sprogram
from v$session sv$process p
where spaddr=paddr and ssid=是上面的sid)

在OS上杀死这个进程(线程)

)在unix上用root身份执行命令:

#kill (即第步查询出的spid)

)在windows(unix也适用)用orakill杀死线程orakill是oracle提供的一个可执行命令语法为

orakill sid thread

其中

sid表示要杀死的进程属于的实例名

thread是要杀掉的线程号即第步查询出的spid

c:>orakill orcl

上一篇:oracle 外部表导入时间日期类型数据

下一篇:Oracle数据库操作时如何使用LOWER()、UPPER()函数