参考资料:
用户要求删除一个数据库的用户 GREENPASS,在删除的过程中,报错如下:
drop user GREENPASS
*
ERROR at line 1:
ORA-04021: timeout occurred while waiting to lock object NEWDR.HNDR_SMS_LOG
处理过程
1. 首先查询NEWDR.HNDR_SMS_LOG,这是一个'PROCEDURE';
2. 现在报错,不能对此对象进行锁定。
3. 看看什么会话在访问此对象:
select B.SID, b.USERNAME, b.MACHINE
FROM V$ACCESS A, V$SESSION B
WHERE A.SID = B.SID
and a.OBJECT = 'HNDR_SMS_LOG'
and a.TYPE = 'PROCEDURE';
SID USERNAME MACHINE
---------- ------------ -------------------
520 NEWDR WORKGROUP\BONC02
4. 根据sid获取操作系统的进程号
select spid os_sid
from v$process
where addr = (select paddr from v$session where sid = &oracle_sid);
old 3: where addr = (select paddr from v$session where sid = &oracle_sid)
new 3: where addr = (select paddr from v$session where sid = 520)
OS_SID
------------
29360
5. 询问业务人员,可以直接杀掉进程
ps -ef|grep 29360
kill -9 29360
6. 重新尝试
SQL> drop user GREENPASS;
用户已丢弃
-----------------http://hi.baidu.com/51885729/blog/item/d1ea1a9717be0e6454fb9655.html
至于为什么会这样。。。。估计是我用了一个网络管理软件有关。。。