本帖最后由 bfc99 于 2014-9-22 17:34 编辑

主要通过四个性能视图:

1、v$locked_object  查看当前哪些对象上有锁,及其所属的会话。

2、v$session_blocker  查看相关会话的阻止关系,即谁阻止了谁,谁是锁之源。

3、v$session  查看指定会话上运行的SQL_ID

4、v$sql  查看指定SQL_ID的具体内容。

举例如下:

新建会话a

SQL>  select * from a for update;

ID COL1

---------- --------------------------------------------------------------------------------

1                      1

0                      2

SQL>

再新建一个会话b,在这个会话中,查看目前被锁定的对象。

SQL> SELECT object_id,session_id,locked_mode FROM v$locked_object;

OBJECT_ID SESSION_ID LOCKED_MODE

---------- ---------- -----------

19824          125                3

可以看到,目前被锁定的对象ID是19824,会话的SID是125.(在我的环境下,经查询,可以确定19824就是表a)

再新建一个会话C,发出另一个语句

SQL> select * from a where id=1 for update;

回到会话b,查看当前的对象锁定情况。

SQL> SELECT object_id,session_id,locked_mode FROM v$locked_object;

OBJECT_ID SESSION_ID LOCKED_MODE

---------- ---------- -----------

19824           16                3

19824          125                3

可以发现,多了一行,其对象ID是一样的,会话ID为16.显然,在这种情况下,我们可以很清楚地知道是SID为125的会话,阻止了SID为16的会话对表a的锁定。但如果我们不是这样一步一步的监控,就不知道到底是谁阻止了谁。这时,可以借助v$session_blocker视图来判断。

还是在会话b中,执行以下语句:

SQL> SELECT SID,blocker_sid FROM v$session_blockers;

SID BLOCKER_SID

---------- -----------

16           125

从这里就可以看出,阻止者是SID为125的会话,而被阻止的是SID为16的会话。

接下来,我们就要去v$session中,找出SID125上到底运行的是哪个SQL语句。

SQL> SELECT SID,sql_id,prev_sql_id FROM v$session WHERE SID IN (16,125);

SID SQL_ID         PREV_SQL_ID

---------- ------------- -------------

16 8w0ct9utt04pf 8w0ct9utt04pf

125                 14w0qs44p3w6u

可以看到,SID125上当前(SQL_ID列)为空,说明当前该会话上没有正在跑的SQL(select * from a for update已经执行完毕,只是还没有提交或回滚),而上一条运行过的SQL_ID(prev_sql_id列)是有同内容的,用它去v$sql中去查。

SQL> SELECT sql_text FROM v$sql WHERE sql_id='14w0qs44p3w6u';

SQL_TEXT

--------------------------------------------------------------------------------

select * from a for update

SQL>

可见,已经可以找到引起这个锁等待最初的语句了。

oracle 等待原因查找,查询引起锁等待的SQL语句相关推荐

  1. Oracle中如何查找未使用绑定变量的SQL语句?

    Oracle中如何查找未使用绑定变量的SQL语句? 利用V$SQL 视图的 FORCE_MATCHING_SIGNATURE 字段可以识别可能从绑定变量或 CURSOR_SHARING 获益的 SQL ...

  2. 查询CPU占用高的SQL语句的解决方案

    触发器造成死锁.作业多且频繁.中间表的大量使用.游标的大量使用.索引的设计不合理.事务操作频繁.SQL语句设计不合理,都会造成查询效率低下.影响服务器性能的发挥.我们可以使用sql server自带的 ...

  3. MySQL查询本年的数据的sql语句

    MySQL查询本年的数据的sql语句: SELECT * FROM 表名 WHERE YEAR(时间字段)=YEAR(NOW());

  4. mysql查阅某个日期的语句_mysql查询指定日期时间内的sql语句及原理

    查询指定日期时间内的sql语句的实现原理: 如果是月份就是当前的月减去你要统计的时间,比如要查询数据库中从今天起往前三个月的所有记录. 另外,在数据库设计阶段,要注意时间字段为int(11),保存在数 ...

  5. 创建oracle 数据库表空间,角色,用户的sql语句

    创建oracle 数据库表空间,角色,用户的sql语句 1.创建角色 CREATE ROLE "QIUDINGROLE" NOT IDENTIFIED; GRANT "C ...

  6. 查看锁表进程SQL语句

    查看锁表进程SQL语句1: select sess.sid,     sess.serial#,     lo.oracle_username,     lo.os_user_name,     ao ...

  7. c mysql查询年月日_mysql查询指定日期时间内的sql语句及原理

    查询指定日期时间内的sql语句的实现原理: 如果是月份就是当前的月减去你要统计的时间,比如要查询数据库中从今天起往前三个月的所有记录. 另外,在数据库设计阶段,要注意时间字段为int(11),保存在数 ...

  8. 怎样查找某个sp中哪条sql语句存在性能问题。

    ---查找sp里面的哪条sql语句,消耗的buffer gets最多,或消耗时间最多的进行优化 select TO_CHAR(T.Begin_interval_time, 'MM-DD HH24:MI ...

  9. mysql查看cpu使用高sql语句_查询CPU占用高的SQL语句

    触发器造成死锁.作业多且频繁.中间表的大量使用.游标的大量使用.索引的设计不合理.事务操作频繁.SQL语句设计不合理,都会造成查询效率低下.影响服务器性能的发挥.我们可以使用sql server自带的 ...

最新文章

  1. 前端验证码后端返回一个图片_Web后端开发(6)——简易图片验证码的制作
  2. android studio安装教程博客园独王,Android Studio安装与配置
  3. 简单部署 群晖 ×××
  4. HUNAN 11560 Yangyang loves AC(二分+贪心)
  5. 11 Python之初识函数
  6. 数据结构时间复杂度T(n)=O(f(n))的含义
  7. 华为不可参与 IEEE 审稿但可继续提供赞助;谷歌限制 Chrome 接口惹非议;Mozilla 号召用户换火狐 | 开发者周刊...
  8. Android通知频道,通知点
  9. 微信小程序—给图片添加相框
  10. 前后端不分离,分页器组件(python-dango)
  11. Kinect Fusion三维重建
  12. flutter 如何实现上下标效果
  13. 正式宣布,小米10在高端市场碾压华为,夺下电商平台销量第一名
  14. uniapp 多语言版本demo in18
  15. 立创开源丨基于GD32E230C8T6芯片的开发评估板
  16. 基于MQTT阿里云物联网手机远程控制ESP8266
  17. echarts gallery,echarts社区地址(可视化作品分享的地址)
  18. python布尔函数_Python内置bool函数详细介绍
  19. 三分屏课件制作_教你使用iSpring Suite制作PPT二分屏课件
  20. sv 从0到1 procedural/function

热门文章

  1. 99%的人都理解错了GET与POST的区别
  2. 将指定内容写入目标文件(日志)
  3. 【poj2096】Collecting Bugs 期望dp
  4. Android 虚线分割Shape
  5. servelt笔记一
  6. HDU 3240 Counting Binary Trees 数论-卡特兰数
  7. C# list导出Excel(二)
  8. SAC 智能版面分析技术(structure Analysis Core )
  9. 大数据之-Hadoop3.x_MapReduce_ReduceJoin案例TableBean---大数据之hadoop3.x工作笔记0129
  10. ES6新特性_ES6中模块暴露数据语法汇总---JavaScript_ECMAScript_ES6-ES11新特性工作笔记043