1、当前session中commit、rollback都可以解锁
2、在别的session中(DBA)通过
查找用户锁
select s.username,
decode(l.type,'TM','TABLE LOCK',
'TX','ROW LOCK',
NULL) LOCK_LEVEL,
o.owner,o.object_name,o.object_type,
s.sid,s.serial#,s.terminal,s.machine,s.program,s.osuser
from v$session s,v$lock l,dba_objects o
where s.sid=l.sid
and o.object_id=l.id1
and s.username is not null
检查出来谁锁了该表
查看结果中object_name='你的表名'
然后得到sid,serial#
alter system kill session 'sid, serial#'
or
alter system disconnect session 'sid, serial#' immediate;
3、select * from table for update nowait可以指定nowait
2、在别的session中(DBA)通过
查找用户锁
select s.username,
decode(l.type,'TM','TABLE LOCK',
'TX','ROW LOCK',
NULL) LOCK_LEVEL,
o.owner,o.object_name,o.object_type,
s.sid,s.serial#,s.terminal,s.machine,s.program,s.osuser
from v$session s,v$lock l,dba_objects o
where s.sid=l.sid
and o.object_id=l.id1
and s.username is not null
检查出来谁锁了该表
查看结果中object_name='你的表名'
然后得到sid,serial#
alter system kill session 'sid, serial#'
or
alter system disconnect session 'sid, serial#' immediate;
3、select * from table for update nowait可以指定nowait
解决方案 »
- 我是菜鸟,不要笑话我啊。pls-00201 是编译错误还是运行时错误
- oracle 子表查出多行 但是我要把这每一行的某个值转换成父表列
- 在oarcle 触发器中怎么判断是insert ,update ,delete 操作?
- oracle卸载问题
- where 条件字段加*什么意思啊
- 一条sql语句优化,难
- 关于NLS_SORT的设置问题!
- 创建存储过程出错!!
- 如何在客户端不用安装oracle程序就可以连上oracle数据库,我用的是(pb9.0+oracle8.0.5),说的越详细越好,谢谢
- 如何写触发器
- Oracle9i中如何配置Directory Service?
- 辞旧迎新,庆祝一下,顺便庆祝通过dba(不过是8i)!
SELECT A.OWNER,
A.OBJECT_NAME,
B.XIDUSN,
B.XIDSLOT,
B.XIDSQN,
B.SESSION_ID,
B.ORACLE_USERNAME,
B.OS_USER_NAME,
B.PROCESS,
B.LOCKED_MODE,
C.MACHINE,
C.STATUS,
C.SERVER,
C.SID,
C.SERIAL#,
C.PROGRAM
FROM ALL_OBJECTS A,
V$LOCKED_OBJECT B,
SYS.GV_$SESSION C
WHERE ( A.OBJECT_ID = B.OBJECT_ID )
AND (B.PROCESS = C.PROCESS )
-- AND
ORDER BY 1,2 ;
2、使用alter system kill session 'sid, serial#';杀掉锁定表的用户会话。
3、可以指定nowait选项,不过也没什么必要。
alter system kill session '34, 24171'
但提示
ORA-00031:标记要删去的会话再查一次,锁定还在,请问是不是还有什么要做的??
alter system disconnect session '34,24171' immediate
的时候又报错:
ORA-02000:缺少POST_TRANSACTION关键字怎么办啊?
1.按照楼上提供的方法查询锁定的会话,得到 sid=34,serial#=24171 ;
2.alter system kill session '34, 24171';
提示
ORA-00031:标记要删去的会话;
3.再查询,锁定还在(Status=KILLED),表仍无法做删除记录操作;
4.隔了一段时间再查询,已查询不到,锁定已解除,清空表成功。问题已经解决,谢谢 penitent(只取一瓢) 和 hrb_qiuyb(大森林)
祝你们新年快乐!
:)