【oracle 杀死繁忙进程 ORA-00054】实验
数据库实际操作过程中,有时候会遇到进程一致处于繁忙阶段,命令行中无法终端其进程的运行,这个时候我们就想是否可以找到具体进程及其句柄,将其杀死,从而使系统资源得到释放。 下面我们来做个试验: 一、实验环境 Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production Version 19.3.0.0.0 二、查看现象及报错 多一个表进行操作,导致出现表锁的情况,报错如下 SQL> drop table it purge; drop table it purge* ERROR at line 1: ORA-00054: 资源正忙, 但指定以 NOWAIT 方式获取资源, 或者超时失效 从现场的症状,我们做删除,修改表,处于等待状态,无法操作。 三、处理问题 1、 查看是否有被锁的对象; select * from v$locked_object; 2、 得到被锁对象的session_id; select session_id from v$locked_object; 3、 通过session_id去获得v$session的sid和serial#; SELECT sid, serial#, username, osuser FROM v$session where sid = '1147'; SELECT sid, serial#, username, osuser FROM v$session where sid = '1705'; 4、 杀死锁表进程。 ALTER SYSTEM KILL SESSION '1147,13'; ALTER SYSTEM KILL SESSION '1705,21'; 5、 删除表scott.it资源繁忙情况解决。 总结:通过以上杀死僵死进程过程中,我们首先得找出具体的锁进程,这方便我们在后期优化过程中语句执行慢,给自己找了一点思路。
Yicheng16 -- The End --
(编辑:泰州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |