同事在测试库上对一个表加字段,提示 ORA-00054, 资源忙。 应该是表对象的锁没有释放。用如下SQL 查看一下系统中相关对象上锁的情况:
- /* Formatted on 2011/9/26 14:45:46(QP5 v5.163.1008.3004) */
- SELECT S.SIDSESSION_ID,
- S.USERNAME,
- DECODE (LMODE,
- 0, " None ",
- 1, " Null ",
- 2, " Row-S(SS) ",
- 3, " Row-X(SX) ",
- 4, " Share",
- 5, "S/Row-X (SSX) ",
- 6, "Exclusive ",
- TO_CHAR (LMODE))
- MODE_HELD,
- DECODE (REQUEST,
- 0, " None ",
- 1, " Null ",
- 2, " Row-S(SS) ",
- 3, " Row-X(SX) ",
- 4, " Share",
- 5, "S/Row-X (SSX) ",
- 6, "Exclusive ",
- TO_CHAR (REQUEST))
- MODE_REQUESTED,
- O.OWNER|| " . " || O.OBJECT_NAME|| " ( " || O.OBJECT_TYPE|| " ) " as OBJECT_NAME,
- S.TYPELOCK_TYPE,
- L.ID1LOCK_ID1,
- L.ID2LOCK_ID2
- FROMV$LOCK L, SYS.DBA_OBJECTSO,V$SESSION S
- WHERE L.SID = S.SID AND L.ID1 = O.OBJECT_ID
该SQL 显示所有对象上的锁,如果要查某个具体的对象,可以根据OBJECT_NAME 字段进行一下过滤,找到对应的SID 之后去查V$SESSION 视图。 该视图会显示session 对应的信息,包括终端的信息,如果找到了终端,可以让它提交或者回滚一下就OK了。 我这里是测试环境,直接把session kill 掉了。然后修改表就ok了。
- SQL>alter system kill session "SID,SERIAL#"
SUSE Linux Enterprise Server 11下无图形界面安装Oracle 11g客户端Oracle 安装报错 [INS-06101] IP address of localhost could not be determined 解决方法相关资讯 Oracle教程
- Oracle中纯数字的varchar2类型和 (07/29/2015 07:20:43)
- Oracle教程:Oracle中查看DBLink密 (07/29/2015 07:16:55)
- [Oracle] SQL*Loader 详细使用教程 (08/11/2013 21:30:36)
| - Oracle教程:Oracle中kill死锁进程 (07/29/2015 07:18:28)
- Oracle教程:ORA-25153 临时表空间 (07/29/2015 07:13:37)
- Oracle教程之管理安全和资源 (04/08/2013 11:39:32)
|
本文评论 查看全部评论 (0)