How to find block sql from dba_waiters v$session v$sql
查询被锁的会话
通常我们会遇到有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相关推荐
- cmd执行sql文件路径 oracle_oracle 基础 执行sql文件
Oracle执行外部文件: sql>@new.sql 执行多个sql文件: 1.把所有的文件都放在同一个目录下,然后在命令行里执行命令: c:>dir/b > d:/1.sql 会把 ...
- 一条SQL引发的“血案”:与SQL优化相关的4个案例
导读:笔者早年间从事了多年开发工作,后因个人兴趣转做数据库.在长期的工作实践中,看到了数据库工作(特别是SQL优化)面临的种种问题.本文通过几个案例探讨一下SQL优化的相关问题. 作者:马立和 高振娇 ...
- sql server 锁定_关于锁定SQL Server的全部
sql server 锁定 .SQLCode { font-size: 13px; font-weight: bold; font-family: monospace;; white-space: p ...
- sql 闩锁 原因_关于SQL Server中的闩锁
sql 闩锁 原因 SQL Server locks, discussed in the article All about locking in SQL Server, which is appli ...
- SQL优化(一)、sql优化一般步骤
sql优化一般步骤概要: 通过 show status 命令了解各种sql的执行频率 定位执行效率较低的sql语句 通过explain分析低效sql的执行计划 通过 show profile 分析sq ...
- PostgreSQL 如何查找TOP SQL (例如IO消耗最高的SQL) (包含SQL优化内容)
目录 背景 一.安装pg_stat_statements 二.加载pg_stat_statements模块 三.配置pg_stat_statements采样参数 四.创建pg_stat_stateme ...
- Sql Server数据库事务介绍(二)---Sql语句,SqlTransaction和TransactionScope的使用方法
本节主要介绍Sql语句,SqlTransaction和TransactionScope这三种使用事务的方法. 本节的所有例子都在sql server 2008和vs 2008环境下运行通过,如果没有s ...
- SQL Server 2005下的分页SQL
其实基本上有三种方法: 1.使用SQL Server 2005中新增的ROW_NUMBER 几种写法分别如下: 1SELECT TOP 20 * FROM (SELECT 2 ROW_NUMBER ...
- java批量执行sql语句_Java中批量执行sql语句
在我们实际项目开发过程中,可能有的功能在后台需要执行几条sql语句甚至需要批量的执行一些sql语句,如果是循环一条一条执行,我想大家都知道这样做的效率特别低,尤其是批量sql时,但是如果我们先循环把整 ...
最新文章
- C# 代理应用 - Cachable
- java class扫描接口_JAVA 扫描指定路径下所有的jar包,并保存所有实现固定接口的类型...
- conda设置Python虚拟环境 其他配置
- HDU-1811 Rank of Tetris
- Arrays.asList()返回的ArrayList,这是Arrays里内嵌的一个私有静态类,而并不是java.util.ArrayList类
- 根文件系统构建(Buildroot 方式)
- 移动端apm关键指标_3个经常被忽视的APM关键功能
- 如何让文章的内容更吸引人
- 《硅谷钢铁侠:埃隆·马斯克的冒险人生》文摘
- 爬虫学习——大碗宽面b站和网易云可视化分析代码
- G6实现家族族谱关系图
- bowen -猜拳游戏
- 使用C++编写阿里云平台短信验证码demo (三)——阿里短信验证码请求字符串
- msp430f149 4x4矩阵按键(薄膜)
- 人民日报+俞敏洪:教育好自己的孩子,是你最重要的事业(两文)
- [构造] Codeforces Gym 101173 CERC 16 K BZOJ 4796 Key Knocking
- 从零开始写JavaScript框架(一)
- win10配置Java环境
- 实现JPanel切换
- STM32——SDIO简介