Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1149062
  • 博文数量: 231
  • 博客积分: 2500
  • 博客等级: 少校
  • 技术积分: 2662
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-03 16:35
个人简介

学无止境

文章分类

全部博文(231)

文章存档

2014年(7)

2013年(103)

2011年(11)

2010年(53)

2009年(57)

分类: Oracle

2010-06-07 11:33:08

通过v$sesstat中的统计,统计当前session的回滚情况,如果session退出,则v$视图中就不再保存。
其中:
statistic#=4表示user commits
statistic#=5表示user rollbacks
可以从v$sysstat中查看到。
 
SQL语句:
select u.username,u.program,v.sid,v.value "rollback",v1.value "commit",
(v.value/(v1.value+ v.value))*100 "rollback pct"
from v$sesstat v,v$session u,v$sesstat v1
where u.sid=v.sid and v.statistic#=5 and v1.sid=v.sid and v1.statistic#=4
and v1.value>0 and v.value>0 order by 6 desc;
 
 
单独执行一条commit命令,不会记录,但单独执行一条rollback语句会记录。
所以当发现事务回滚率较高时,可能是执行了不必要的rollback命令,如在select操作之后执行了rollback。
阅读(1003) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~