今天开发反馈说,执行某个程序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的spid

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

测试过程还可以查看另一文章:https://www.cnblogs.com/kerrycode/p/4034231.html

oracle批量清除会话,oracle快速彻底清理kill会话相关推荐

  1. oracle批量查询更新,Oracle批量查询、删除、更新使用BULK COLLECT提高效率

    BULK COLLECT(成批聚合类型)和数组集合type类型is table of 表%rowtype index by binary_integer用法笔记. 例1: 批量查询项目资金账户号为 & ...

  2. oracle批量建同义词,Oracle批量创建同义词

    一.介绍 Oracle的同义词(synonyms)从字面上理解就是别名的意思,和视图的功能类似,就是一种映射关系.它可以节省大量的数据库空间,对不同用户的操作同一张表没有多少差别;它扩展了数据库的使用 ...

  3. oracle批量插入优化,oracle批量插入优化方案

    今天听DBA说如果从一个表批量查询出一批数据之后批量插入另外一张表的优化方案: 1)不写归档日志: 2)采用独占 关于insert /*+ append */我们需要注意以下三点: a.非归档模式下, ...

  4. oracle 批量导入 数据,Oracle批量插入数据的三种方式【推荐】

    第一种: begin insert into tableName(column1, column2, column3...) values(value1,value2,value3...); inse ...

  5. oracle批量清除会话,oracle快速彻底杀掉session

    今天开发反馈说,执行某个程序update的时候hang住,查看了一下是个小表,只有3000多行数据.第一反应是有锁,把该实例的所有session kill后,执行update还是hang住,单独执行了 ...

  6. oracle批量粘贴文本,ORACLE 快速批量导入文本数据到数据库(sqlldr工具)方法与分析...

    在实际生产环境中,常会碰到将一些如通过通讯接口传过来的数据(文本文件 txt)导入到数据库的某张表中.通常做法是使用ORACLE自带的包功能打开文件,将文件中的数据用LOOP循环一行行读入内存数组中, ...

  7. oracle批量复制,OracleCopier(Oracle数据复制工具)

    OracleCopier是一款简单方便的数据复制工具,帮助用户节省将数据从一个Oracle数据库传输到另一个数据库的时间,用户可以通过软件在Oracle数据库之间来回导数据了,十分方便. 基本简介 O ...

  8. oracle批量加载,Oracle教程:使用SQL*Loader高速批量数据加载工具

    Oracle教程:使用SQL*Loader高速批量数据加载工具 1.控制文件中包含要加载的数据 首先创建一张测试表 然后创建一个控制文件(其中包含被加载的数据) 然后在命令行执行加载 查看dept表 ...

  9. oracle批量构造数据,oracle批量构造数据方法 - rd_clp的个人空间 - 51Testing软件测试网 51Testing软件测试网-软件测试人的精神家园...

    1.一种是只要数据条数,至于里面内容可以是序列方式,另外可能几个表中相互 id的关联,那建议用存诸过程写. 表a(id,name)有学员的信息 表b(id,testid,subject,score)有 ...

最新文章

  1. 支持 gRPC 长链接,深度解读 Nacos 2.0 架构设计及新模型
  2. HDFS小文件问题及解决方案
  3. 解决第一个div浮动,后面div覆盖的问题
  4. 深度剖析冒泡排序机制
  5. Hive表路径修改和分区表数据加载命令
  6. chmod 文件夹及子文件夹_了解linux文件属性之chgrp,chown,chmod
  7. Qt SD卡 文件系统挂载、文件预览
  8. Java面试23种设计模式之单例模式的8种实现方式
  9. visual studio 2015 rc cordova -hello world
  10. 多线程操作SQLite注意事项
  11. python工具包: pandas
  12. oracle ora27072,ORA-27072: skgfdisp
  13. 黑客入侵Windows XP的几个常用方法
  14. 联想小新air13装双系统_联想小新Pro 13黑苹果详细安装教程
  15. 学生管理系统总结收获——限制字符
  16. redis 常用配置文件配置
  17. android最新adt下载地址,Android SDK和最新ADT下载地址
  18. 英特尔第十代处理器为什么不支持win7_为什么7代CPU不支持WIN7,原因是什么
  19. 多任务学习Multi-task Learning(MTL)概述
  20. hdu 1290 (切西瓜问题)

热门文章

  1. 《格鲁夫给经理人的第一课》读书笔记
  2. php录音功能,微信开发之录音功能
  3. SSL2895 购买干草
  4. php设置延迟代码执行,PHP实现延迟执行程序
  5. python写名字-python写心形名字
  6. 这4类人去创业和自由职业会死得很惨
  7. Remote Sensing投稿经历
  8. DOTA英雄 精美图片 大集合
  9. windos找不到文件:打开fla文件时候报错!
  10. 阿里巴巴为什么“去IOE”