OracleOracle解锁Oracle锁表处理

Posted 过节不吃肉

tags:

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

1、查看哪些对象被锁

技术分享
select s.username,
       decode(l.type, ‘TM‘, ‘TABLE   LOCK‘, ‘TX‘, ‘ROW   LOCK‘, NULL) LOCK_LEVEL,
       o.owner,
       o.object_name,
       o.object_type,
       s.sid,
       s.serial#,
       s.terminal,
       s.machine,
       s.program,
       s.osuser
  from v$session s, v$lock l, dba_objects o
 where s.sid = l.sid
   and o.object_id = l.id1
   and s.username is not null;
技术分享

 

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

 alter system kill session ‘33,456‘; ---其中33,456分别是上面查询出的sid,serial#

 

3、再一次查询目前锁定的对象,若发现以上方法不能解除锁定的表,则用以下方法:

(1)执行下面的语句获得进程(线程)号:

select spid, osuser, s.program
  from v$session s, v$process p
 where s.paddr = p.addr
   and s.sid = 33;
---33是上面的sid

(2)在OS上kill掉这个进程

  Linux:

kill -9 3333 (3333为进程号)

  Windows(unix也适用)用orakill杀死线程,orakill是oracle提供的一个可执行命令,语法为:  orakill sid thread  

  sid:表示要杀死的进程属于的实例名  thread:是要杀掉的线程号,即第3步查询出的spid。  

  例:

c:>orakill orcl 3333

 

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

查询Oracle锁表语句以及解锁语句

Oracle 锁表查询 和解锁表

Oracle锁表与解锁

oracle查询锁表与解锁情况提供解决方案

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

Oracle的锁表与解锁