Oracle数据库数据恢复、性能优化

找回密码
注册
搜索
热搜: 活动 交友 discuz
发新帖

23

积分

0

好友

6

主题
1#
发表于 2012-6-8 13:57:49 | 查看: 5505| 回复: 3
a:select * from emp for update;b:delete from emp;

a阻塞b,如何查询出来a执行的是什么sql
2#
发表于 2012-6-8 21:59:37
可以通过session A在 v$session中的 SQL_ID  找出其当前执行的SQL

但是这样做的意义不大, 因为 session A很有可能在 执行完select * from emp for update 之后再执行其他许多 Select 或者DML ,所以一般你用上述方法查到的SQL 并不是 block session B的SQL

enq:TX row lock contention 可以关注 session B被锁住的数据行所在的表和数据块、行号,分析为什么会有SQL在这些数据号上存在row lock争用

回复 只看该作者 道具 举报

3#
发表于 2012-6-11 12:32:14
十分感谢~~~~ session B被锁住的数据行所在的表和数据块、行号,这个应该怎么查。刘大是否可以举例讲解一下。

[ 本帖最后由 vincent 于 2012-6-11 12:37 编辑 ]

回复 只看该作者 道具 举报

4#
发表于 2012-6-11 21:52:07

回复 3# 的帖子

请参考v$SESSION   视图的  ROW_WAIT_OBJ#  ROW_WAIT_FILE#    ROW_WAIT_BLOCK#      ROW_WAIT_ROW#   字段

回复 只看该作者 道具 举报

您需要登录后才可以回帖 登录 | 注册

QQ|手机版|Archiver|Oracle数据库数据恢复、性能优化

GMT+8, 2024-11-15 20:03 , Processed in 0.051501 second(s), 22 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部
TEL/電話+86 13764045638
Email service@parnassusdata.com
QQ 47079569