【Oracle】Oracle解锁、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

 

原文地址:https://www.cnblogs.com/promise-x/p/7453112.html