今日遇到资源锁定的问题,按照网上的说法,就KILL SESSION,结果就变成很麻烦的问题了。网上摘抄:
select * from v$locked_object;
select * from v$session where sid=292;
alter system kill session '31,292';我们知道,在Oracle数据库中,可以通过kill session的方式来终止一个进程,其基本语法结构为:alter system kill session 'sid,serial#' ; 被kill掉的session,状态会被标记为killed,Oracle会在该用户下一次touch时清除该进程.
这里只是做标记,并没有释放SESSION中锁定的资源啊!
问题如下:
1、网上摘抄中说的“下一次touch”是指什么?
2、这种情况虽然可以等待ORACLE的PMON来清理,但是我等了5个小时了,还是没有清理。有没有其它办法?
3、如果我现在没办法进入系统,只有SYSTEM用户可操作怎么办?
select * from v$locked_object;
select * from v$session where sid=292;
alter system kill session '31,292';我们知道,在Oracle数据库中,可以通过kill session的方式来终止一个进程,其基本语法结构为:alter system kill session 'sid,serial#' ; 被kill掉的session,状态会被标记为killed,Oracle会在该用户下一次touch时清除该进程.
这里只是做标记,并没有释放SESSION中锁定的资源啊!
问题如下:
1、网上摘抄中说的“下一次touch”是指什么?
2、这种情况虽然可以等待ORACLE的PMON来清理,但是我等了5个小时了,还是没有清理。有没有其它办法?
3、如果我现在没办法进入系统,只有SYSTEM用户可操作怎么办?
SELECT b.spid
FROM v$session a, v$process b
WHERE a.sid=&sid
AND b.addr = a.paddr
--操作系统下验证此进程是否为local
ps -ef|grep 进程呈|grep -v grep
对应进程正常应该是LOCAL=NO--操作系统下杀掉进程即可