ORA-00054 表被lock导致资源忙等待不能操作案例
1.现场状态
时间:2012年8月20日
数据库版本:Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bi
操作系统平台:HP-UX
告警日志: more alert_mdsoss.log
2.定位问题
报错现象:
ORA-00054: resource busy acquire with nowait specified 资源忙
协成日志报错:SQL ERR :insert into table GNTCPCNN12082015 不能插入表
3.分析原因
一般像这种情况可能是这个表正在被使用,有可能有lock暂时不能使用,在dba权限下查看一下是否有v$locked_object,有的话把session干掉
SQL> select * from v$locked_object;
XIDUSN XIDSLOT XIDSQN OBJECT_ID SESSION_ID ORACLE_USERNAME OS_USER_NAME PROCESS LOCKED_MODE
---------- ---------- ---------- ---------- ---------- ---------------- --------------- --------------------
13 13 681477 79913476 855 MDSOSS mdsdb2 12897 6
7 41 600151 79914479 998 MDSOSS npmuser 10468 3
7 41 600151 79914483 998 MDSOSS npmuser 10468 3
7 41 600151 79914481 998 MDSOSS npmuser 10468 3
19 27 701115 79913681 1032 MDSOSS mdsdb3 8658 6
61 30 182840 153240 1059 MDSOSS oracle 12738 3
61 30 182840 212 1059 MDSOSS oracle 12738 3
61 30 182840 165 1059 MDSOSS oracle 12738 3
30 7 545652 79915059 1073 MDSOSS npmuser 20387 3
52 39 385940 79913551 1085 MDSOSS mdsdb3 12960 6
51 17 461665 79914748 1090 MDSOSS npmuser 15454 3
51 17 461665 79914756 1090 MDSOSS npmuser 15454 3
51 17 461665 79914763 1090 MDSOSS npmuser 15454 3
58 24 262815 79914375 1175 MDSOSS npmuser 6369 3
58 24 262815 79914380 1175 MDSOSS npmuser 6369 3
58 24 262815 79914378 1175 MDSOSS npmuser 6369 3
10 46 680893 79913459 1179 MDSOSS mdsdb2 2581 6
17 rows selected
SQL> select * from v$locked_object;
XIDUSN XIDSLOT XIDSQN OBJECT_ID SESSION_ID ORACLE_USERNAME OS_USER_NAME PROCESS LOCKED_MODE
---------- ---------- ---------- ---------- ---------- ---------------- --------------- --------------------
42 22 507847 79915291 976 MDSOSS npmuser 25324 3
42 22 507847 79915263 976 MDSOSS npmuser 25324 3
42 22 507847 79915282 976 MDSOSS npmuser 25324 3
1 5 650009 79915671 989 MDSOSS npmuser 1175 3
1 5 650009 79915675 989 MDSOSS npmuser 1175 3
1 5 650009 79915676 989 MDSOSS npmuser 1175 3
我进行了2次查找。第一次发现mdsdb2、mdsdb3用户操作的插入对象正在被锁定,并且锁的级别都是6级,级别非常高,导致资源被占用,如果此时在对表操作就会报ora-00054,后来查询了第二次,就没有mdsdb2、mdsdb3用户的锁对象了,此时就可以操作表了。