同事在测试环境修改一个表的字段长度时,抛出ORA-00054的错误
SQL> alter table prp_emp modify(ename varchar2(20)); alter table prp_emp modify(ename varchar2(20)) ORA-00054: 资源正忙, 但指定以 NOWAIT 方式获取资源, 或者超时失效
很明显这张表被锁了,我让他过两分钟在试试。 可过了一会去执行还是抱同样的错。只能去看看谁锁住这张表了。
SQL> SELECT /*+ rule */ 2 s.username, 3 decode(l.type, 'TM', 'TABLE LOCK', 'TX', 'ROW LOCK', NULL) LOCK_LEVEL, 4 o.owner, 5 o.object_name, 6 o.object_type, 7 s.sid, 8 s.serial# 9 FROM gv$session s, gv$lock l, dba_objects o 10 WHERE l.sid = s.sid 11 AND l.id1 = o.object_id(+) 12 AND s.username is NOT NULL 13 AND O.OWNER='REPORT' 14 ; USERNAME LOCK_LEVEL OWNER OBJECT_NAME OBJECT_TYPE SID SERIAL# --------- ----------------- ---------- ------------- ----------- ----- ---------- REPORT TABLE LOCK REPORT PRP_EMP TABLE 140 417
果然是这个表被另一个同事锁住了,而这个人又不在工位上。断开了他的session后,很快执行完毕。
SQL> alter system kill session '140,417'; System altered
SQL> alter table prp_emp modify(ename varchar2(20)); Table altered
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/lwei_998/archive/2010/12/15/6077427.aspx
|