查询被锁的会话
通常我们会遇到有session被其他session block的状态,DBA需要找出这些block与被block的session及其sql,并删除导致blocking的session.
通过以下3个视图可以帮助我们解决这个问题.
dba_waiters
v$session
v$sql

例子-1
1,在session 140下查询表的信息如下.
SQL>select distinct sid from v$mystat;
       SID
----------
       140
SQL>select * from sales where id=142;
        ID NAME
---------- --------------------
       142 Jerron Peng
       142 Jerron Peng

2,在session 148下删除这2行记录,但未提交.
SQL>delete sales where id=142;
2 rows deleted.

3,在session 157下更新这2行记录,此时被block住.
SQL>update sales set name='Jeron Peng' where id=142;

4,dba_waiters找出系统在等待的session
SQL>select * from dba_waiters;
WAITING_SESSION HOLDING_SESSION LOCK_TYPE            MODE_HELD            MODE_REQUESTED         LOCK_ID1   LOCK_ID2
--------------- --------------- -------------------- -------------------- -------------------- ---------- ----------
            157             148 Transaction          Exclusive            Exclusive                524328       6900
结果显示:
a,session 157处于等待中,意味着这个session被block住了.
b,HOLDING_SESSION为148,代表148是导致block的根源.

5,查询sid为148,引起其他session blocking的sql
SQL>select prev_sql_id from v$session where sid=148;
PREV_SQL_ID
-------------
6ubd0c60r1tr9
SQL>select sql_text from v$sql where sql_id='6ubd0c60r1tr9';//查询引起blocking的会话最后执行的sql语句.有可能是这条语句引起的blocking.

6,查询被blocking的会话的sql
SQL>select sql_id from v$session where sid=157;
SQL_ID
-------------
9thzhd6tsyaug
SQL>select sql_text from v$sql where sql_id='9thzhd6tsyaug';
SQL_TEXT
--------------------------------------------------------------------------------
update sales set name='Jeron Peng' where id=142

7,最后只需kill掉引起blocking的session即可,这里需要kill掉148即可.
SQL>select SID,SERIAL#,STATUS,USERNAME,COMMAND,CLIENT_IDENTIFIER from v$session where sid=148;
       SID    SERIAL# STATUS   USERNAME                COMMAND CLIENT_IDENTIFIER
---------- ---------- -------- -------------------- ---------- ------------------------------
       148        603 INACTIVE HR                            0
SQL>alter system kill session '148,603';
System altered.

8,验证dba_waiters
SQL>select * from dba_waiters;

查询被锁的表
v$process
v$session
v$locked_object
all_objects

select p.spid,a.serial#, c.object_name,b.session_id,b.oracle_username,b.os_user_name
from   v$process p,v$session a, v$locked_object b,all_objects c
where  p.addr=a.paddr and a.process=b.process and c.object_id=b.object_id

How to find block sql from dba_waiters v$session v$sql相关推荐

  1. cmd执行sql文件路径 oracle_oracle 基础 执行sql文件

    Oracle执行外部文件: sql>@new.sql 执行多个sql文件: 1.把所有的文件都放在同一个目录下,然后在命令行里执行命令: c:>dir/b > d:/1.sql 会把 ...

  2. 一条SQL引发的“血案”:与SQL优化相关的4个案例

    导读:笔者早年间从事了多年开发工作,后因个人兴趣转做数据库.在长期的工作实践中,看到了数据库工作(特别是SQL优化)面临的种种问题.本文通过几个案例探讨一下SQL优化的相关问题. 作者:马立和 高振娇 ...

  3. sql server 锁定_关于锁定SQL Server的全部

    sql server 锁定 .SQLCode { font-size: 13px; font-weight: bold; font-family: monospace;; white-space: p ...

  4. sql 闩锁 原因_关于SQL Server中的闩锁

    sql 闩锁 原因 SQL Server locks, discussed in the article All about locking in SQL Server, which is appli ...

  5. SQL优化(一)、sql优化一般步骤

    sql优化一般步骤概要: 通过 show status 命令了解各种sql的执行频率 定位执行效率较低的sql语句 通过explain分析低效sql的执行计划 通过 show profile 分析sq ...

  6. PostgreSQL 如何查找TOP SQL (例如IO消耗最高的SQL) (包含SQL优化内容)

    目录 背景 一.安装pg_stat_statements 二.加载pg_stat_statements模块 三.配置pg_stat_statements采样参数 四.创建pg_stat_stateme ...

  7. Sql Server数据库事务介绍(二)---Sql语句,SqlTransaction和TransactionScope的使用方法

    本节主要介绍Sql语句,SqlTransaction和TransactionScope这三种使用事务的方法. 本节的所有例子都在sql server 2008和vs 2008环境下运行通过,如果没有s ...

  8. SQL Server 2005下的分页SQL

    其实基本上有三种方法: 1.使用SQL Server 2005中新增的ROW_NUMBER 几种写法分别如下: 1SELECT TOP 20 * FROM (SELECT 2   ROW_NUMBER ...

  9. java批量执行sql语句_Java中批量执行sql语句

    在我们实际项目开发过程中,可能有的功能在后台需要执行几条sql语句甚至需要批量的执行一些sql语句,如果是循环一条一条执行,我想大家都知道这样做的效率特别低,尤其是批量sql时,但是如果我们先循环把整 ...

最新文章

  1. C# 代理应用 - Cachable
  2. java class扫描接口_JAVA 扫描指定路径下所有的jar包,并保存所有实现固定接口的类型...
  3. conda设置Python虚拟环境 其他配置
  4. HDU-1811 Rank of Tetris
  5. Arrays.asList()返回的ArrayList,这是Arrays里内嵌的一个私有静态类,而并不是java.util.ArrayList类
  6. 根文件系统构建(Buildroot 方式)
  7. 移动端apm关键指标_3个经常被忽视的APM关键功能
  8. 如何让文章的内容更吸引人
  9. 《硅谷钢铁侠:埃隆·马斯克的冒险人生》文摘
  10. 爬虫学习——大碗宽面b站和网易云可视化分析代码
  11. G6实现家族族谱关系图
  12. bowen -猜拳游戏
  13. 使用C++编写阿里云平台短信验证码demo (三)——阿里短信验证码请求字符串
  14. msp430f149 4x4矩阵按键(薄膜)
  15. 人民日报+俞敏洪:教育好自己的孩子,是你最重要的事业(两文)
  16. [构造] Codeforces Gym 101173 CERC 16 K BZOJ 4796 Key Knocking
  17. 从零开始写JavaScript框架(一)
  18. win10配置Java环境
  19. 实现JPanel切换
  20. STM32——SDIO简介

热门文章

  1. HTML页面设置ico图标
  2. Linux系统查看有几块硬盘
  3. msf拿到shell显示乱码解决方法以及chcp各种编码的补充
  4. C语言:判断两数是否互质
  5. 第四章:Android灯光系统(6)-背光灯
  6. HTML+CSS 登录界面设计
  7. 华为交换机难点学习:导出配置文件/同步时间
  8. 计算1~50之间的素数之和
  9. 浏览器如何对SSL证书进行验证?
  10. 在 iOS 中对接收到的网络数据(NSData)进行文件读写