加入收藏 | 设为首页 | 会员中心 | 我要投稿 泰州站长网 (https://www.0523zz.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 创业 > 点评 > 正文

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

发布时间:2022-08-25 20:10:14 所属栏目:点评 来源:
导读: 数据库实际操作过程中,有时候会遇到进程一致处于繁忙阶段,命令行中无法终端其进程的运行,这个时候我们就想是否可以找

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

下面我们来做个试验:

一、实验环境

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 --  

 


(编辑:泰州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章