鸿 网 互 联 www.68idc.cn

当前位置 : 服务器租用 > 数据库 > oracle > >

【Oracle】Oracle解锁、Oracle锁表处理

来源:互联网 作者:佚名 时间:2018-01-30 12:01
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,

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

 

网友评论
<