【ORA】ORA-00030: User session ID does not exist.

今天巡检,查询锁相关的情况的时候,确认业务后,准备将锁干掉,但是干掉的时候报了一个错误,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中也没有相关占用较高的进程了

上一篇:psql: FATAL: role “postgres” does not exist 解决方案


下一篇:【小错误】SP2-0618: Cannot find the Session Identifier. Check PLUSTRACE role is enabled