解决oracle00054错误

来源:互联网 发布:淘宝直播间申请 编辑:程序博客网 时间:2024/05/18 03:03

错误描述:

      

Oracal数据库中的一个表的一条记录被锁定时,既不能修改也不能删除(程序上没有响应)。

删除表对象也不行,报错:ORA_00054:资源正忙,要求指定NOWAIT
 
可以通过以下办法解决:

--1,查看锁
Select * From v$locked_object;
--or
Select object_id,session_id,locked_mode From v$locked_object;
--or
Select b.owner,b.object_name,l.session_id,l.locked_mode
From v$locked_object l, dba_objects b
Where b.object_id=l.object_id
 
--2,找出sid,serial#号
Select t2.username,t2.sid,t2.serial#,t2.logon_time
From v$locked_object t1,v$session t2
Where t1.session_id=t2.sid Order by t2.logon_time;
 
--以上两步可以直接用以下语句查出被锁记录的表名,SID,Serial#,用户名,机器名等信息。
select s.username, o.owner,o.object_name,o.object_type,
decode(l.type,'TM','TABLE LOCK', 'TX','ROW LOCK',NULL) LOCK_LEVEL,
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
 
--3,解锁:杀死被锁的session(用上面查出的SID,Serial#)
Alter system Kill session 'sid,serial#'
--or
Alter system disconnect session 'sid, serial#' immediate;

 

原创粉丝点击