我的编程空间,编程开发者的网络收藏夹
学习永远不晚

oracle怎么快速清理kill会话

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

oracle怎么快速清理kill会话

本篇内容主要讲解“oracle怎么快速清理kill会话”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“oracle怎么快速清理kill会话”吧!

  今天开发反馈说,执行某个程序update的时候hang住,查看了一下是个小表,只有3000多行数据。第一反应是有锁,把该实例的所有session kill后,执行update还是hang住,单独执行了下where条件后面的select很快。于是觉得应该是在2节点上还有lock,于是执行查询:

select * from gv$lock where id1=383105;

SQL> select * from gv$lock where id1=383105;

INST_ID        ADDR     KADDR      SID       TYPE     ID1       ID2       LMODE      REQUEST        CTIME      BLOCK      
-------------- -------- ---------- --------- -------- --------- --------- ---------- -------------- ---------- ----------
 2      0000000110AF61B0 0000000110AF6210      1333 TM          383105         0          3              0       6819          2

果然,2节点上还有一个session持有锁。

连接到2节点,执行查询:

SQL> select sid,serial#,osuser from v$session where sid=1333;

SID       SERIAL#        OSUSER                         
--------- -------------- ------------------------------
     1333          22559 6005821                       

alter system kill session '1333,22559';

杀了会话后,再查询,发现1333的session还存在:

SQL> select sid,serial#,osuser from v$session where sid=1333;

SID       SERIAL#        OSUSER                         
--------- -------------- ------------------------------
     1333          22559 6005821 

于是想从系统层kill,可是通过以下sql查询不到1333的spidoracle怎么快速清理kill会话

select p.pid,p.spid,s.sid,s.serial# from v$process p,v$session s where s.paddr=p.addr and s.sid=1333;

查询后发现,当在Oracle中kill session以后, Oracle只是简单的把相关session的paddr 指向同一个虚拟地址.此时v$process和v$session失去关联,进程就此中断。 然后Oracle就等待PMON去清除这些Session.所以通常等待一个被标记为Killed的Session退出需要花费很长的时间. 如果此时被Kill的process,重新尝试执行任务,那么马上会收到进程中断的提示,process退出,此时Oracle会立即启动PMON 来清除该session.这被作为一次异常中断处理.

根据以下sql找到之前的paddr:

select p.addr from v$process p where pid <> 1
minus
select s.paddr from v$session s;

07000107C8C050F8
07000107DCC19D88

根据v$process的addr找到spid:

select * from v$process where addr in ('07000107C8C050F8','07000107DCC19D88');

然后找到系统进程号,杀掉就好了。由于部分过程没有保留下执行结果,就只有记录下sql了。

oracle@cq2:] ps -ef|grep 8847870
  oracle  8847870        1   3   Aug 06      - 734:23 ora_pz99_CQRPT2
  oracle 10420652 13107576   0 11:11:01  pts/1  0:00 grep 8847870
[oracle@cq2:] ps -ef|grep 14221746
  oracle 12583324 13107576   0 11:11:22  pts/1  0:00 grep 14221746
  oracle 14221746        1   0 08:16:07      -  0:04 oracleCQRPT2 (LOCAL=NO)
[oracle@cq2:] kill -9 14221746
[oracle@cq2:] ps -ef|grep 14221746
  oracle 12583046 13107576   0 11:12:11  pts/1  0:00 grep 14221746

到此,相信大家对“oracle怎么快速清理kill会话”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

oracle怎么快速清理kill会话

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

怎么快速清理Docker资源

这篇文章将为大家详细讲解有关怎么快速清理Docker资源,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。  查看 docker 占用的资源  在进行资源清理之前我们有必要搞清楚 docker 都占用了哪些系
2023-06-04

Win7怎么快速清理使用痕迹

要快速清理Win7的使用痕迹,可以尝试以下方法:1. 清理临时文件夹:在开始菜单中搜索“%temp%”,打开临时文件夹,选择所有文件并删除。同时,还可以在C:\Windows\Temp文件夹中执行相同操作。2. 清理浏览器缓存:打开浏览器(
2023-08-22

编程热搜

目录