网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > Oracle教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
本月文章推荐
.Linux环境下 用XMMS听MP3.
.VB与ORACLE数据库中的日期转换.
.DBA_Data_Files & DBA_Tablespac.
.Oracle数据库安全策略分析 (三).
.在Oracle中实现数据库的复制.
.Oracle9i中的SQL*Plus.
.TestKing Oracle 1Z0-033 Edt19.0.
.LILO可以装在软盘上.
.研究生管理信息系统的开发流程三.
.Install oracle 10g on Solaris .
.unix下远程访问oracle.
.oracle8i学习笔记(2).
.ORACLE在HP-UX下的系列问题处理(.
.ORACLE中实现ASCII字符串和16进制.
.Oracle 9i 概要文件的管理.
.在复杂应用环境下监控 ORACLE 数.
.技术专题总结:standby Database.
.Oracle9iAS开发Web应用系统应用案.
.工作中遇到的oracle故障分析和处.
.监控和跟踪索引使用情况.

ROLLBACK相关的统计信息

发表日期:2008-2-9


  与ROLLBACK相关的统计信息有如下几个,我们关注什么情况下这些统计信息会增加。   SQL> select s.name,m.value from v$mystat m,v$statname s where s.statistic#=m.statistic# and name like '%rollback%';   NAME VALUE   -------------------------------------------------- ---------   user rollbacks 0   transaction tables consistent read rollbacks 0   rollbacks only - consistent read gets 0   cleanouts and rollbacks - consistent read gets 0   rollback changes - undo records applied 0   transaction rollbacks 0   初始情况下:   SQL> select s.name,m.value from v$mystat m,v$statname s where s.statistic#=m.statistic# and name like '%rollback%';   NAME VALUE   -------------------------------------------------- ---------   user rollbacks 0   transaction tables consistent read rollbacks 0   rollbacks only - consistent read gets 0   cleanouts and rollbacks - consistent read gets 0   rollback changes - undo records applied 0   transaction rollbacks 0   6 rows selected.   未作任何改动,执行rollback   SQL> rollback;   Rollback complete.   SQL> select s.name,m.value from v$mystat m,v$statname s where s.statistic#=m.statistic# and name like '%rollback%';   NAME VALUE   ----------------------------------------------------------------   user rollbacks 1   transaction tables consistent read rollbacks 0   rollbacks only - consistent read gets 0   cleanouts and rollbacks - consistent read gets 0   rollback changes - undo records applied 0   transaction rollbacks 0   6 rows selected.   统计信息user rollbacks 增加,即使没有做任何改动(没有什么可以rollback的),user rollbacks也会增加。   SQL> connect /   SQL> select s.name,m.value from v$mystat m,v$statname s where s.statistic#=m.statistic# and upper(name) like '%ROLLBACK%';   NAME VALUE   ----------------------------------------------------------------   user rollbacks 0   transaction tables consistent read rollbacks 0   rollbacks only - consistent read gets 0   cleanouts and rollbacks - consistent read gets 0   rollback changes - undo records applied 0   transaction rollbacks 0   6 rows selected.   插入一行纪录,然后回滚   SQL> insert into t values(1);   1 row created.   SQL> rollback;   Rollback complete.   SQL> select s.name,m.value from v$mystat m,v$statname s where s.statistic#=m.statistic# and upper(name) like '%ROLLBACK%';   NAME VALUE   ---------------------------------------------------------------- -   user rollbacks 1   transaction tables consistent read rollbacks 0   rollbacks only - consistent read gets 0
  cleanouts and rollbacks - consistent read gets 0   rollback changes - undo records applied 2   transaction rollbacks 1   6 rows selected.   除了user rollbacks增加外,当有活动的事务回滚时候,因为有实际工作可做,transaction rollbacks增加,且因为回滚记录的应用,rollback changes - undo records applied增加。   SQL> insert into t values(1);   1 row created.   SQL> insert into t values(1);   1 row created.   SQL> commit;   commit   *   ERROR at line 1:   ORA-02091: transaction rolled back   ORA-00001: unique constraint (Oracle.SYS_C0020256) violated   SQL> select s.name,m.value from v$mystat m,v$statname s where s.statistic#=m.statistic# and upper(name) like '%ROLLBACK%';   NAME VALUE   ---------------------------------------------------------------- ----   user rollbacks 1   transaction tables consistent read rollbacks 0   rollbacks only - consistent read gets 0   cleanouts and rollbacks - consistent read gets 0   rollback changes - undo records applied 8   transaction rollbacks 2   6 rows selected.   如上,因为发生unique constraint violated错误,Statement自动回滚(到默认的savepoint),有回滚工作可做,则transaction rollbacks 和rollback changes - undo records applied都增加。   SQL> select * from t;   no rows selected   SQL> rollback;   Rollback complete.   SQL> select s.name,m.value from v$mystat m,v$statname s where s.statistic#=m.statistic# and upper(name) like '%ROLLBACK%';   NAME VALUE   ---------------------------------------------------------------- -   user rollbacks 2   transaction tables consistent read rollbacks 0   rollbacks only - consistent read gets 0   cleanouts and rollbacks - consistent read gets 0   rollback changes - undo records applied 8   transaction rollbacks 2   6 rows selected.   因为Statement已经回滚,没有实际的回滚工作量,因此只有user rollbacks增加。   SQL> connect / 如下 测试因为Write consistent导致的mini-rollback   SQL> select s.name,m.value from v$mystat m,v$statname s where s.statistic#=m.sta   NAME VALUE   --------------------------------------------------------------   user rollbacks 0   transaction tables consistent read rollbacks 0   rollbacks only - consistent read gets 0   cleanouts and rollbacks - consistent read gets 0   rollback changes - undo records applied 0   transaction rollbacks 0   6 rows selected.   SQL> update t set x=x*10 where x in (1,5,10);   2 rows updated. 之前该session被另外的一个session在更新x=5处被阻塞;   SQL> select s.name,m.value from v$mystat m,v$statname s where s.statistic#=m.statistic# and upper(name) like '%ROLLBACK%';   NAME VALUE   ---------------------------------------------------------------- -
  user rollbacks 0   transaction tables consistent read rollbacks 0   rollbacks only - consistent read gets 0   cleanouts and rollbacks - consistent read gets 1   rollback changes - undo records applied 3   transaction rollbacks 0   6 rows selected.   如上的mini-rollback 会导致cleanouts and rollbacks - consistent read gets 增加且带往返滚(rollback changes - undo records applied)。   结论是:   1) 'user rollbacks' 当用户执行rollback的时候每次递增,而不管是否有实际的回滚工作量要做。   2) 'transaction rollbacks'在如下3种情况下会递增   当用户执行 'rollback' 回滚了之前的DML操作,因此有实际的回滚工作要做。   进程中断 terminated or killed, PMON 代替执行回滚。   DML 发生错误,如. unique constraint violation,执行Statement级别的语句回滚   3) 'user rollbacks' 和'transaction rollbacks' 不会因为"write consistency" mini-rollback 的原因增加。   4)mini-rollback会导致cleanouts and rollbacks - consistent read gets增加。当发生mini-rollback的时候,update/delete语句会释放掉所有已更新的block的锁(cleanout),然后再以select for update(v$lock.mode=2) 先“悲观”锁住要更新的纪录,在执行update/delete.(v$lock.mode=3)
上一篇:hot block的诊断案例 人气:694
下一篇:数据库恢复实例 人气:751
浏览全部Oracle教程的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐