ORA-00054:资源繁忙并且使用NOWAIT指定获取

wow*_*wrt 29 sql unix oracle ora-00054

我杀了一个正在更新表格的脚本.现在当我重新运行我得到的脚本时,

ORA-00054:资源繁忙并且使用NOWAIT指定获取

我认为桌子被锁了?如何解锁桌子?提前致谢.

小智 60

步骤1:

select object_name, s.sid, s.serial#, p.spid 
from v$locked_object l, dba_objects o, v$session s, v$process p
where l.object_id = o.object_id and l.session_id = s.sid and s.paddr = p.addr;
Run Code Online (Sandbox Code Playgroud)

第2步:

alter system kill session 'sid,serial#'; --`sid` and `serial#` get from step 1
Run Code Online (Sandbox Code Playgroud)

更多信息:http://www.oracle-base.com/articles/misc/killing-oracle-sessions.php

  • 第1步给我ORA-00942:表或视图不存在 (21认同)

Rob*_*ijk 8

你必须等一下.被杀的会话是在事务中间并更新了大量记录.这些记录必须回滚,一些后台进程正在处理.在此期间,您无法修改被触摸的记录.


小智 8

感谢用户'user712934'

您还可以查找sql​​,用户名,机器,端口信息,并进入保存连接的实际进程

SELECT O.OBJECT_NAME, S.SID, S.SERIAL#, P.SPID, S.PROGRAM,S.USERNAME,
S.MACHINE,S.PORT , S.LOGON_TIME,SQ.SQL_FULLTEXT 
FROM V$LOCKED_OBJECT L, DBA_OBJECTS O, V$SESSION S, 
V$PROCESS P, V$SQL SQ 
WHERE L.OBJECT_ID = O.OBJECT_ID 
AND L.SESSION_ID = S.SID AND S.PADDR = P.ADDR 
AND S.SQL_ADDRESS = SQ.ADDRESS;
Run Code Online (Sandbox Code Playgroud)


Jef*_*emp 6

当您终止会话时,会话会以"KILLED"状态挂起一段时间,而Oracle会在其后清除.

如果你绝对必须,你也可以杀死操作系统进程(查找v$process.spid),这将释放它所持有的任何锁.

这个更详细的信息.