【oracle 杀死繁忙进程 ORA-00054】实验

来源:这里教程网 时间:2026-03-03 17:46:39 作者:

数据库实际操作过程中,有时候会遇到进程一致处于繁忙阶段,命令行中无法终端其进程的运行,这个时候我们就想是否可以找到具体进程及其句柄,将其杀死,从而使系统资源得到释放。下面我们来做个试验:

一、 实验环境

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$sessionsidserial#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 22.08.16 

-- The End --     

相关推荐