今天巡检,查询锁相关的情况的时候,确认业务后,准备将锁干掉,但是干掉的时候报了一个错误,ORA-00030
发现回话不存在,我以为pmon进程已经将锁进程kill掉了,就再次查看,发现,还是存在
这个锁现在占用较高的cpu进程
查阅了相关的文章后,决定用os来杀掉他
思路:
1,在oracle中用sid查看系统的spid,spid就是系统层的进程号
2.在系统层查看这个进程,看是否为oracle系统相关进程,如果误操作的话,会导致相关的数据库问题层出不穷
3.确认无误后,kill掉
4.再次查看锁,看是否还存在
执行命令:
1.用sid查系统进程号:
select spid, osuser, s.program
from v$session s, v$process p
where s.paddr = p.addr
and s.sid =&sid;
或者
select object_name as 对象名称,s.sid,s.serial#,p.spid as 系统进程号
from v$locked_object l , dba_objects o , v$session s , v$process p
where l.object_id=o.object_id and l.session_id=s.sid and s.paddr=p.addr;
2.根据sid=1433查看到的系统进程号是23421,由这个进程号,查看当前进程
ps -ef | grep 23421| grep -v grep
oracle 23421 1 0 Dec21 ? 00:00:00 oracle10g (LOCAL=NO)
这样的local=no就是可以杀掉的,如果进程中有local=yes
那么就要当心了,不要轻易kill掉
3.kill -9 23421
4.ps -ef | grep 23421
没有相关进程,证明成功干掉,上数据库中查看,也没有相关的锁了
cpu中也没有相关占用较高的进程了