在做一个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是否能被杀掉,不要导致用户或系统的错误。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10710960/viewspace-610020/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/10710960/viewspace-610020/