Oracle阻塞会话源头查找-单机和RAC环境

2023-11-16

在写 Oracle session相关数据字典(一)  这篇文章时,提到使用v$session视图的树形查询可以得到Oracle锁树,这样就便于我们找出阻塞会话的源头,但是仅仅可以在单机环境中使用。今天把单机和RAC的阻塞树都整理了一下,话不多说,直接开干,奥利给。

(一)单机的阻塞会话树

单机的不再测试,直接搬以前的记录。EM里面的Blocking session里面看到下图,以折叠图的形式展现,最上面的代表正在阻塞其它session的会话,研究了一下,可以使用v$session来得到类似的效果。

image

                                                                  图1.blocking session树形图

我们来做一次测试,对表test01和test02进行DML操作,观察运行情况,操作如下

(1)创建测试表test01,test02。并在2个表的id列添加主键约束

image image

         test01表                                                               test02表

(2)对2个表进行操作,执行顺序如下

----------------------------------------test01操作-------------------------------------------------------

[sessid:27  ]  delete from test01;                                          --删除test01整个表的数据,未提交,阻塞源头

[sessid:28  ]  update test01 set name = 'aaa' where id = 1;    --更新test01表id=1的行,会话产生等待

[sessid:142]   insert into test01 values(1,'abc');                     --插入test01表id=1的行,会话产生等待

[sessid:25 ]   delete from test01 where id = 2;                       --删除test01表id=2的行,会话产生等待

[sessid:29 ]   update test01 set  name = 'bbb' where id  = 2;  --更新test01表id=2的行,会话产生等待

-----------------------------------------test02操作--------------------------------------------------------

[sessid:30 ]  insert into test02 values(3,'augly',3000);          --插入test02表id=3的行,未提交,阻塞源头

[sessid:23 ]  insert into test02 values(3,'augly',3300);          --插入test02表id=3的行,会话产生等待

此时我们到EM里面观察,就会发现图1的blocking session树形图。

在实际环境中,大部分系统是没有安装EM的,在没有EM的情况下,我们依然可以通过v$session得到类似的图形

--使用v$session来查看单实例的阻塞session信息

SELECT   LPAD(' ',5*(LEVEL-1))||S."USERNAME" AS user_name , 
         LPAD(' ',5*(LEVEL-1))||S."SID" AS session_id,
         S."SERIAL#",
         S."SQL_ID",         S."ROW_WAIT_OBJ#",
         S."WAIT_CLASS",
         S."EVENT",
         S."P1",
         S."P2",
         S."P3",
         S."SECONDS_IN_WAIT"
FROM     V$SESSION S 
WHERE    S."BLOCKING_SESSION" IS NOT NULL
OR       S.SID IN(SELECT DISTINCT BLOCKING_SESSION FROM V$SESSION)
START WITH S."BLOCKING_SESSION" IS NULL
CONNECT BY PRIOR S."SID" = S."BLOCKING_SESSION";

结果如下,红色的为阻塞源头:

image


(二)RAC的阻塞会话树

RAC的阻塞会话,在EM里面是按照实例分开的,没有合并在一起,如下图:

image

image


我们尝试将两个图的结果合并在一起,测试如下:

(1)创建测试表,并添加主键

CREATE TABLE test01
(
   ID      NUMBER,
   NAME    VARCHAR(30),
   age     NUMBER
);
ALTER TABLE test01 ADD CONSTRAINT pk_id PRIMARY KEY(ID);


(2)往测试表里面写入数据,形成跨节点的会话阻塞,执行如下:

----------------------------------------test01操作:模拟跨节点阻塞--------------------------------------------

[节点1:会话36]    INSERT INTO test01 VALUES(1,'lijiaman',18);    --节点1插入数据,未提交,阻塞源头

[节点2:会话265]  INSERT INTO test01 VALUES(1,'xiaohua',19);    --节点2插入数据,主键相同,阻塞

[节点1:会话43]    INSERT INTO test01 VALUES(1,'xiaoli',20);        --节点1插入数据,同样被阻塞

----------------------------------------test01操作:模拟同一节点阻塞-------------------------------------------

[节点2:会话34]    INSERT INTO TEST01 VALUES (2, 'b', 18);          --节点2插入数据,未提交,阻塞源头

[节点2:会话275]  INSERT INTO TEST01 VALUES (2, 'c', 18);           --节点2插入数据,主键相同,阻塞

使用如下SQL查询RAC和单节点的会话阻塞:

--使用v$session来查看RAC数据库和单实例阻塞session信息

SELECT   
         LPAD(' ',5*(LEVEL-1))||S."USERNAME" ,  
         LPAD(' ',5*(LEVEL-1))||S."INST_ID"||','||S."SID" ,
         S."SERIAL#" ,
         S."SQL_ID",        
         S."ROW_WAIT_OBJ#",
         S."WAIT_CLASS",
         S."EVENT",
         S."P1",
         S."P2",
         S."P3",
         S."SECONDS_IN_WAIT",
         s."BLOCKING_INSTANCE"||','||s."BLOCKING_SESSION"
FROM     GV$SESSION S 
WHERE    S."BLOCKING_SESSION" IS NOT NULL
OR       (S."INST_ID"||','||S."SID") IN(SELECT DISTINCT BLOCKING_INSTANCE||','||BLOCKING_SESSION FROM GV$SESSION)
START WITH  (s."BLOCKING_INSTANCE"||','||s."BLOCKING_SESSION") = ','
CONNECT BY PRIOR (S."INST_ID"||','||S."SID") = (s."BLOCKING_INSTANCE"||','||s."BLOCKING_SESSION");

结果如下,红色的是阻塞源头:

image



【完】

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Oracle阻塞会话源头查找-单机和RAC环境 的相关文章

  • 2023华为OD机试真题 Python【报文回路】

    题目 在 IGMP 协议中 存在两种重要的报文 查询报文和响应报文 这两种报文负责维持组播通路 在一个通路中 ROUTER 会定期给 HOST 发送查询报文 收到查询报文的 HOST 应该回复一个响应报文 从而保持两者的连接状态 如果某个
  • Emojify – Create your own emoji with Deep Learning 通过深度学习创建你自己的表情

    全文总览 本文目的 原文链接 我的电脑环境 数据集下载 代码下载 本文目的 深度学习初级项目 Emojify Create your own emoji with Deep Learning 通过深度学习创建你自己的表情 本文旨在描述源代码
  • 华为OD机试 - 需要打开多少监控器(Java & C)

    题目描述 某长方形停车场 每个车位上方都有对应监控器 当且仅当在当前车位或者前后左右四个方向任意一个车位范围停车时 监控器才需要打开 给出某一时刻停车场的停车分布 请统计最少需要打开多少个监控器 输入描述 第一行输入m n表示长宽 满足1
  • Vscode代码量统计

    Vscode代码量统计 安装vscode扩展插件 开始统计 结果 安装vscode扩展插件 插件商城中搜索 VS Code Counter 开始统计 安装完毕后 重新加载vscode 快捷键ctrl shift p输入指令 结果
  • angular中@ViewChild、@ViewChildren的使用

    ViewChild和 ViewChildren会在父组件钩子方法ngAfterViewInit调用之前赋值 获取DOM节点 1 在html中给DOM节点设置一个模板应用变量myBox div 我是一个div div 2 在js中引入View
  • nvm安装完node后确无法使用node和npm

    问题 nvm安装了两个node版本后 使用use切换到指定版本 确还是不能使用node和npm 解决办法 找到nvm得安装位置 打开setting配置文件发现node的位置是错误的 两个版本的node都是安装在nvm文件夹下的 所以修改配置
  • TensorFlow基础(六)--TensorFlow中常用的优化器的对比与选择(Optimizer)

    目录 1 优化器的作用 2 常用的优化器 Optimizer 3 各种优化器的对比 3 1三种梯度下降法的对比 3 2 SGD 梯度下降 3 3 Momentum 3 4 NAG Nesterov accelerated gradient
  • Windows10系统服务优化及分析(批处理)

    对于Win10来说 除了UI的变动外 微软还根据用户体验做了一些功能的增强和更改 在我看来 Win10本身启动的服务都是为了系统运作更加完美而增加的 但是对于很多人来说 Win10的很多功能很少用 甚至用不到 对于这样的功能如果不关闭的话
  • Java中IO流,输入输出流概述与总结

    总结的很粗糙 以后时间富裕了好好修改一下 1 Java语言定义了许多类专门负责各种方式的输入或者输出 这些类都被放在java io包中 其中 所有输入流类都是抽象类InputStream 字节输入流 或者抽象类Reader 字符输入流 的子
  • 09FMPEG的AVFrame结构体分析

    09FMPEG的AVFrame结构体分析 概述 该结构体位于libavutil库中的frame h中 1 AVFrame结构体 typedef struct AVFrame define AV NUM DATA POINTERS 8 指向图
  • Anaconda环境下的opencv实现人脸检测

    文章内容 本文主要介绍python3 9 Anaconda pytorch Jupyter Opencv安装教程 以及opencv的图片加载以及人脸检测 目录 一 anaconda的安装 二 pytorch的安装 三 Jupyter的配置
  • 订单系统设计 —— 数据同步与监控

    文章目录 一 方案背景 1 1考虑因素 1 2 数据特点 二 增量同步方案 2 1 并发消费 2 2 顺序消费 2 3 1 N关联数据 三 存量同步方案 3 1 并发同步 3 2 基于视图同步 四 监控与补偿机制 4 1 延迟监控 4 2
  • js逆向-ast混淆还原入门案例(1)

    recast资料太少 在大佬的建议下转到babel了 搬运各个地方的案例学习后 分享给大家 也给自己一个记录 案例需2个文件 运行文件1 run js 源码文件1 read js 1 read js var 0x2075 wrw3EMKc
  • 解决Python报错:URLError: <urlopen error [Errno 11004] getaddrinfo failed>

    原因 获取地址信息失败 通常是由于自动选择的DNS服务器不行 解决方法 更换DNS服务器 控制面板 win R control gt 网络和Internet 2 打开网络共享中心 3 打开当前连接的网络 以wifi为例 4 打开属性
  • 网页空间和服务器,服务器内存和网页空间

    服务器内存和网页空间 内容精选 换一换 使用主机迁移服务前 请参考以下步骤准备好账号 权限及源端 目的端服务器环境 已在华为云注册账号 并完成实名认证 已获取账号迁移权限 如果使用账号登录 默认拥有迁移权限 可无需配置迁移权限 如果使用IA
  • R notes (1): lm()

    R notes lm Reference Fitting Linear Models Usage Arguments Details Reference https www rdocumentation org packages stats
  • 2023最新版本Activiti7系列-身份服务

    身份服务 在流程定义中在任务结点的 assignee 固定设置任务负责人 在流程定义时将参与者固定设置在 bpmn 文件中 如果临时任务负责人变更则需要修改流程定义 系统可扩展性差 针对这种情况可以给任务设置多个候选人或者候选人组 可以从候
  • 第三代oid铺码软件_你好点读笔!自制小达人点读目录册之书名贴铺码

    之前跟大家分享了一下关于如何铺码的内容 你好点读笔 自制小达人点读目录册之如何铺码 主要是以铺 内容贴 码为例进行的 今天 我要和大家分享的是和 内容贴 密不可分的 书名贴 铺码的原理和之前内容码铺码原理和步骤基本一致 那么接下来 请随我一
  • 【DDIM加速采样方法】公式推导加代码分析。Denoising Diffusion Implicit Models

    DDIM加速采样方法 公式推导加代码分析 Denoising Diffusion Implicit Models 1 前言 ddim总览 2 均值 mu 3 方差 sigma
  • 华为od机试 java 地址分割

    题目 你的任务是编写一个程序 该程序将接收一个由逗号分隔的字符串 其中包含一个URL的前缀和后缀 然后将它们合并成一个完整的URL 合并规则如下 如果前缀的最后一个字符是斜杠 则删除它 如果后缀的第一个字符是斜杠 则删除它 在处理过的前缀和

随机推荐

  • 待续----serialVersionUID的解释

    serialVersionUID作用 序列化时为了保持版本的兼容性 即在版本升级时反序列化仍保持对象的唯一性 有两种生成方式 一个是默认的1L 比如 private static final long serialVersionUID 1L
  • configtx.yaml中文详解(Hyperledger Fabric 区块链网络运维工具configtxgen的配置文件)

    configtx yaml是Hyperledger Fabric区块链网络运维工具configtxgen用于生成通道创世块或通道交易的配置文件 configtx yaml的内容直接决定了所生成的创世区块的内容 本文将给出configtx y
  • [899]数值特征-对数据进行log变化

    对于一些标签和特征来说 分布不一定符合正态分布 而在实际的运算过程中则需要数据能够符合正态分布 因此我们需要对特征进行log变化 使得数据在一定程度上可以符合正态分布 进行log变化 就是对数据使用np log data 1 加上1的目的是
  • Redis下载部署并加入idea应用(详细笔记)

    文章目录 前言 一 下载Window版本的redis 1 打开网址 github上的redis安装包 https github com microsoftarchive redis 找到Redis on Windows 点击 release
  • java stream流常用方法

    Stream流用法 1 分组 2 过滤 3 List map互转 4 求和 极值 5 求最大 最小值的对象 6 去重 7 排序 8 拼接 9 统计 10 平均值 11 某个值的数量 12 分区 13 截断 14 跳过 15 查找与匹配 16
  • Unity Shader入门精要第四章:Unity Shader 的内置变量(数学篇)

    Unity系列文章目录 文章目录 Unity系列文章目录 前言 一 4 8 1 变换矩阵 二 4 8 2 摄像机和屏幕参数 4 9 答疑解惑 扩展阅读 参考 前言 使用Unity 写Shader 的一个好处在于 它提供了很多内置的参数 这使
  • typora+pandoc:markdown文本转换成word(也可把word转换成markdown哦)

    因为想把自己写的博客转换成word 博客是markdown格式 公式什么的又懒得在word里面敲第二遍 于是就找了个方法让 md文本与 doc文本转换 反之也可把word转换成markdown哦 教程附后 markdown文本转换成word
  • SyntaxError: Cannot use import statement outside a module

    SyntaxError Cannot use import statement outside a module 错误展示 问题 使用 vs code 调试js 代码 出现 SyntaxError Cannot use import sta
  • Maven的从入门到精通(完结篇)

    Maven的从入门到精通 完结篇 一 maven工程运行调试 1 1 端口占用处理 1 2 断点测试 二 总结 2 1 maven仓库 2 2 常用的maven命令 2 3 坐标定义 2 4 pom 基本配置 本文是Maven学习中的完结篇
  • (转载)Flutter、Weex、React Native和Android原生对比报告

    Flutter Weex React Native和Android原生对比报告 Zhang Jun的博客 CSDN博客
  • docker 通过中间镜像加速部署

    概要 实施 修改前的实施时间 制作编译用的镜像 测试修改后的实施时间 概要 使用 docker 打包镜像的时候 每次耗费时间最多的就是 docker build 的过程 特别是对于前端工程的打包 有时候下载依赖包的时间就要 10 几分钟 这
  • MySql数据库实验知识点:

    实验一 创建以下数据库和表 并查看是否成功创建 目的与要求 1 了解 mysql 数据库的存储引擎分类 2 了解表的结构特点 3 了解 mysql 的基本数据类型 4 了解空值概念 5 学会使用 sql 语句创建数据库和表 实验内容 1 实
  • nginx高性能原因

    epoll多路复用 BIO 堵塞式IO 缺点 client和server一旦建立连接 就可以建立通信套接字在这个通信套接字上进行读写操作 此时不能再接收其他客户端连接请求 只能等待同当前连接的客户端的操作执行完成 select模型 缺点 变
  • 第四章 神经网络知识扩展

    1 其他的神经网络学习算法 1 1介绍 梯度下降算法并不是神经网络的唯一算法 还有其他算法 我们喜欢称他们为优化器 Optimizer 优化器就是优化网络的机器 主要有以下几种 1 2SGD优化器 SGD优化器全称为随机梯度下降算法 可以简
  • Java Web 学习笔记 06 Servlet 案例(get、post,转发与重定向)

    Servlet 案例 get post 转发与重定向 案例一 初体验 Servlet web项目 案例二 get 和post 提交流程 编码 1 get和post的区别 乱码问题 2 实例 案例三 转发与重定向 案例一 初体验 Servle
  • Vision Transformer论文精读(2/2)

    目录 一 主题 3 1模型总览图 3 2 微调 二 实验部分 三 回顾总结 四 参考链接 一 主题 在模型的设计上 是尽可能的按照最原始的Transformer来做的 这样的一个好处是我们可以直接把NLP那边已经成功地Transformer
  • 博客园美化

    写在前面 前面的文章中提到过 自己开始在博客园上更新文章 说也奇怪 自己博客园账号注册了好久 都没在上面更新过博客 直到前段时间博客园的求助信息火了 才对博客园有了全新的认知 博客园一个最大的特点就是简洁 干净 广告少 但也有一个个人认为很
  • sqli-less-26-less26a

    less 26 单引号 GET型 这关就有点过滤的意思了 过滤了上一关的东西 并且把空格和 23给过滤了 如果是ubuntu的话 可以用 0a等绕过 方便一些 但我的是windows 所以就只能用 了 让后使用 来代替and 用 1来闭合
  • 树莓派显示器截图方法大全(适用于Linux-C,可扩展开发)

    树莓派显示器截图方法大全 适用于Linux C 可扩展开发 文章目录 树莓派显示器截图方法大全 适用于Linux C 可扩展开发 1 前言 2 shutter 3 scrot 4 raspi2png 5 fb2png 6 最后 1 前言 有
  • Oracle阻塞会话源头查找-单机和RAC环境

    在写 Oracle session相关数据字典 一 这篇文章时 提到使用v session视图的树形查询可以得到Oracle锁树 这样就便于我们找出阻塞会话的源头 但是仅仅可以在单机环境中使用 今天把单机和RAC的阻塞树都整理了一下 话不多