我正在使用 oracle11g 数据库。我有一个名为的表,phonenumbers_tbl
我在该表上执行了DROP
命令。但它正在返回错误resource busy and acquire with NOWAIT specified or timeout expired
。之后,我使用命令更改会话alter session set ddl_lock_timeout = 600
并再次尝试删除表。但是这个错误仍然存在
问问题
27348 次
3 回答
3
尝试先执行此操作,并检查是否有人来自该表other session
或在该表上加your session
了锁。如果you
已在该表上加了锁,请尝试执行commit/rollback
。如果加someone else
了锁,请询问him/her
您是否有权限kill his session
。然后删除该表。
select session_id "sid",SERIAL# "Serial",
substr(object_name,1,20) "Object",
substr(os_user_name,1,10) "Terminal",
substr(oracle_username,1,10) "Locker",
nvl(lockwait,'active') "Wait",
decode(locked_mode,
2, 'row share',
3, 'row exclusive',
4, 'share',
5, 'share row exclusive',
6, 'exclusive', 'unknown') "Lockmode",
OBJECT_TYPE "Type"
FROM
SYS.V_$LOCKED_OBJECT A,
SYS.ALL_OBJECTS B,
SYS.V_$SESSION c
WHERE
A.OBJECT_ID = B.OBJECT_ID AND
C.SID = A.SESSION_ID
ORDER BY 1 ASC, 5 Desc
于 2012-10-19T09:02:58.347 回答
1
是的 !最后我得到了一个解决方案,将表移动phonenumber_tbl
到另一个表空间system
并删除表。
于 2012-10-19T09:03:28.033 回答
1
首先获取表锁定会话然后终止会话
SELECT a.sid,a.serial#, a.username,c.os_user_name,a.terminal, b.object_id,substr(b.object_name,1,40) object_name from v$session a, dba_objects b, v$locked_object c 其中 a.sid = c.session_id 和 b.object_id = c.object_id;
ALTER SYSTEM KILL SESSION 'sid,serial#' ;
于 2020-03-09T08:34:04.970 回答