oracle 锁表处理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle 锁表处理相关的知识,希望对你有一定的参考价值。

1.查询数据库中的锁

select * from v$lock;
select * from v$lock where block=1;

2.查询被锁的对象

select * from v$locked_object;

3.查询阻塞

查被阻塞的会话
select * from v$lock where lmode=0 and type in (‘TM‘,‘TX‘);

查阻塞别的会话锁
select * from v$lock where lmode>0 and type in (‘TM‘,‘TX‘);

4.查询数据库正在等待锁的进程

select * from v$session where lockwait is not null;

5.查询会话之间锁等待的关系

select a.sid holdsid,b.sid waitsid,a.type,a.id1,a.id2,a.ctime from v$lock a,v$lock b
where a.id1=b.id1 and a.id2=b.id2 and a.block=1 and b.block=0;

6.查询锁等待事件
select * from v$session_wait where event=‘enqueue‘;

解决方案:
select session_id from v$locked_object; --首先得到被锁对象的session_id
SELECT sid, serial#, username, osuser FROM v$session where sid = session_id; --通过上面得到的session_id去取得v$session的sid和serial#,然后对该进程进行终止。
ALTER SYSTEM KILL SESSION ‘sid,serial‘;
example:
ALTER SYSTEM KILL SESSION ‘13, 8‘;

 











以上是关于oracle 锁表处理的主要内容,如果未能解决你的问题,请参考以下文章

oracle 锁表处理

oracle表被锁了怎么处理?

OracleOracle解锁Oracle锁表处理

oracle 锁表时,怎么查出是哪些SQL语句导致了锁表

oracle锁表问题

你好 请问oracle(10g) 执行定时任务job 锁表吗 锁的话怎么能够执行任务的同时还不影响正常的插入等操作