1).查询是哪些表被锁了
SELECT A.OWNER,
A.OBJECT_NAME,
B.XIDUSN,
B.XIDSLOT,
B.XIDSQN,
B.SESSION_ID,
B.ORACLE_USERNAME,
B.OS_USER_NAME,
B.PROCESS,
B.LOCKED_MODE,
C.MACHINE,
C.STATUS,
C.SERVER,
C.SID,
C.SERIAL#,
C.PROGRAM
FROM ALL_OBJECTS A,
V$LOCKED_OBJECT B,
SYS.GV_$SESSION C
WHERE ( A.OBJECT_ID = B.OBJECT_ID )
AND (B.PROCESS = C.PROCESS )
ORDER BY 1,2
或者用
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;
(2).释放session Sql:
alter system kill session 'sid, serial#'
例:
alter system kill session '379, 21132'
alter system kill session '374, 6938'
可以用如下查询批量得到上面类似的语句:
select 'alter system kill session ''' ||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;
(3).如果利用上面的命令杀死一个进程后,进程状态被置为 "killed", 但是锁定的资源很长时间没有被释放,那么可以在os一级再杀死相应的进程(线程),首先获得进程(线程)号:
select spid, osuser, s.program
from v$session s,v$process p
where s.paddr=p.addr and s.sid=#sid; (#sid是上面的sid)
1)在Linux上,用root身份执行命令:
kill -9 12345(12345是第3步查询出的spid)
2)在windows 用orakill杀死线程,orakill是oracle提供的一个可执行命令,语法为:orakill sid thread 免费网页模版下载
其中:
sid:表示要杀死的进程属于的实例名
thread:是要杀掉的线程号,即第3步查询出的spid。
例:c:>orakill orcl 12345
完全可以写一个组合查询的存储过程来自动执行上述四步操作,方便地杀光所有不自动释放资源的进程,但一般情况下不推荐这样做,毕竟在系统中用root用户kill进程本身就是带有一定风险的!
相关推荐
Oracle的锁表与解锁
oracle锁表查询oracle锁表查询oracle锁表查询oracle锁表查询
ORACLE解除锁表,能够让被锁的表,强制解锁。
Oracle 库存管理 表结构说明 Oracle 库存管理 表结构说明
oracle锁表和解锁语句示例。
Oracle数据库操作中,我们有时会用到锁表查询以及解锁和kill进程等操作,那么这些操作是怎么实现的呢?
orale检查锁表,以及对表进行解锁的方式说明
Oracle查询用户锁表文档,相信描述如何查询用户锁表,附有代码!
数据库死锁的概念, 所谓死锁,是指两个会话,每个会话都持有另外一个会话想要的资源,因争夺资源而造成...对于锁死的会话,我们可以直接删掉该会话,等事物回滚完成,也可以找出锁死进程的spid,从服务器中删掉该进程。
Oracle导出空表解决办法
连接oracle10g免安装客户端解决办法
此文档可以查看当前Oracle数据库中被锁的表和解锁命令,
PowerDesigner优化Oracle库表设计的若干方法
oracle 查看锁表sql 及如何解锁,多给点分,为了下载别的资料。大家相互学习相互进步
oracle temp表空间不足解决方法
oracle中判断表是否被锁 和解锁方法
oracle数据库用户为何频繁被锁,oracle数据库用户频繁被锁原因排查oracle数据库用户为何频繁被锁
oracle查看被锁的表.raroracle查看被锁的表.rar
如果你在用oracle数据中某个表时,突然不用了,有可能是某人把你的表给锁住了,现在说说在不知道谁锁的情况下,如何去解锁…… 文档中有详细说明……