查看oracle中被锁的对象
2015-11-24 15:33
567 查看
转自:http://space.itpub.net/10710960/viewspace-610020
在做一个delete操作后,点击commit提交,结果toad挂了。
判断相关的表应该被锁了。于是进行如下操作
--查看oracle中被锁的对象
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, v$session c
where ( a.object_id = b.object_id )
and (b.process = c.process )
order by 1,2;
根据查询到的session_sid查询出session的详细信息:
select saddr,a.sid,a.serial#,paddr,a.username,machine,status,b.spid from v$session a,v$process b where a.paddr=b.addr and a.sid=''
如果确保此lock无效,可以kill掉该session
alter system kill session ’sid,serial#’ ;
使用kill session方式杀掉进程后,发现该session的状态是killed,但还是无法做delete操作,所以决定将OS下的进程杀掉。
使用kill -9。这里其实就是要考虑当前这个process是否能被杀掉,不要导致用户或系统的错误。
在做一个delete操作后,点击commit提交,结果toad挂了。
判断相关的表应该被锁了。于是进行如下操作
--查看oracle中被锁的对象
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, v$session c
where ( a.object_id = b.object_id )
and (b.process = c.process )
order by 1,2;
根据查询到的session_sid查询出session的详细信息:
select saddr,a.sid,a.serial#,paddr,a.username,machine,status,b.spid from v$session a,v$process b where a.paddr=b.addr and a.sid=''
如果确保此lock无效,可以kill掉该session
alter system kill session ’sid,serial#’ ;
使用kill session方式杀掉进程后,发现该session的状态是killed,但还是无法做delete操作,所以决定将OS下的进程杀掉。
使用kill -9。这里其实就是要考虑当前这个process是否能被杀掉,不要导致用户或系统的错误。
相关文章推荐
- Oracle密码过期
- ORACLE锁机制深入理解
- oracle个人总结
- Oracle trunc()函数的用法
- ORACLE SQL性能优化系列 (二)
- ORACLE SQL性能优化系列 (三)
- ORACLE SQL性能优化系列 (一)
- Oracle nvl(),nvl2()函数介绍
- ORACLE中SQL查询优化研究
- 更改oracle字符集
- Oracle 300问
- Oracle之常用FAQ--SQL
- Oracle之常用FAQ--性能调整
- oracle查询表空间的空间占用情况
- Oracle之常用FAQ--备份与恢复
- Oracle之常用FAQ--Oracle 构架体系
- Oracle中临时表的深入研究
- Oracle视图和用户管理
- Oracle TYPE OBJECT 用法
- 如何把oracle服务加到linux启动项