偶然一次删除表的时候,遇到
drop table t purge;
ORA-00054:resource busy and acquire with NOWAIT specified
出现这种情况,由于另有其他用户修改了表的数据,未提交,导致资源争用。
解决办法:找到另外一个持有锁的用户,将其session干掉。
conn / as sysdba
Select * From V$locked_Object;
XIDUSN XIDSLOT XIDSQN
OBJECT_ID SESSION_ID
ORACLE_USERNAME OS_USER_NAME PROCESS LOCKED_MODE
19 31 221 74879 12 SCOTT JIANG\admin 3208:5768 3
查看object_id=74879 是不是为锁定的表
select * from dba_objects where object_id=74879;
SCOTT T 74879 74879 TABLE 15-7月 -13 15-7月 -13 2013-07-15:11:47:21 VALID N N N 1
确定为我们想要删除的T表。
然后,找到持有该表上的锁的session
select sid,serial#,username,status,event from v$session where sid=12;
sid,serial#,username,status,event
12 51 SCOTT INACTIVE SQL*Net message from client
alter system kill session '12,51'
system KILL已变更。
conn scott/tiger
drop table t purge;
table T已删除。
完成删除。