ITPub博客

首页 > 数据库 > Oracle > 【oracle 杀死繁忙进程 ORA-00054】实验

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

原创 Oracle 作者:Yichen16 时间:2022-08-16 10:09:59 1 删除 编辑

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

下面我们来做个试验:

一、 实验环境

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
22.08.16 

-- The End --   

 


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69963467/viewspace-2910556/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2020-02-22

  • 博文量
    39
  • 访问量
    33302