今天开发反馈说,执行某个程序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. 使用SQLite学习SQL
  2. 数据结构:(6)其他情况的算法分析
  3. php怎么查询数据库密码,如何验证php中的密码是通过mysql查询手动散列插入到数据库中的?...
  4. oracle数据库相关知识,Oracle数据库相关知识点复习
  5. spring配置日志
  6. json转换成dart类 JSON to Dart
  7. oracle插入百万测试,Oracle中插入大量测试数据
  8. 第三视角Beta答辩总结
  9. 伯克利cs61b总结贴
  10. c语言计算机二级涉及内容,计算机二级(C语言)都考哪些内容?
  11. This tag and its children can be replaced by one TextView/ and a compound drawable
  12. 利用Python爬取音乐资源,小白福音
  13. 期货市场倒挂什么意思(期货市场倒挂什么意思啊)
  14. PMI推出新认证:PgMP 项目集管理
  15. 2011年下半年 系统集成项目管理工程师 下午试卷
  16. js实现学生信息表案例--详细教程
  17. php 抽奖活动_PHP实现活动人选抽奖功能的方法
  18. MySQL-获取每个部门在职员工的最高薪水
  19. android 8.0 展讯平台系统编译问题点
  20. vuepress的初始化中的heroImage在哪

热门文章

  1. 现实版龙王赘婿?乔布斯和Mac OS的前世今生
  2. HDF5 学习总结1
  3. 牛客 小米校招 最大新整数 单调栈
  4. RT-Thread 传感器软件包归类
  5. Autojs在线云更新教程
  6. Houdini 导出.ass文件
  7. bic计算机原理,CBTC系统区域控制器(ZC)功能及原理探究
  8. 一文读懂机器学习需要哪些数学知识
  9. Ubuntu 10.10 安装谷歌拼音输入法~
  10. 百度地图:为标记添加点击事件显示标注