undo management

Posted: 九月 18, 2011 in oracle

⊙ 事务回滚
⊙ 事务恢复:用于在实例恢复或介质恢复时的回滚。
⊙ 一致性读

从ORACLE 6版本到ORACLE 9I版本,ORACLE用数据库中的回滚段(Rollback Segment)来提供撤销数据(Undo Data),而从9I开始。ORACLE新提供了一种新的撤销数据(Undo Data)管理方式,就是我们都熟知的AUM

事务使用回滚段来记录变化前的数据或撤销信息,

1.检查empno=7788记录在Buffer Cache中是否存在,如果不存在则读取到Buffer Cache中。
2.在回滚表空间的相应回滚段事务表上分配事务槽,这个操作需要记录REOD信息。
3.从回滚段读入或在Buffer Cache中创建sal=3000(旧值)的BI,这需要产生REDO信息并记入REDO LOG BUFFER;
4.修改sal=4000,这是update的数据变更,需要记入REDO LOG BUFFER。
5.当用户提交时,会在REDO LOG BUFFER记录提交信息,并在回滚段标记该事务为非激活(INACTIVE)
UNDO的REDO
REDO的REDO
在以上事务处理过程中,注意REDO和UNDO是交替出现的,

在ORACLE的性能优化中,有一个性能指标称为平均事务回滚率(Rollback per Transaction),
用来衡量数据库的提交与回滚效率。 在StatsPack的报告中,可以从开头部分找到这个指标 Round(User rollbacks/(User commits + User rollbacks),4) *100% ,user commits和user rollbacks数据来自系统的统计信息,可以从V$SYSSTAT视图得到 ,这个指标应该接近于0,如果该指标过高,则说明数据库的回滚过多。 回滚过多不仅说明数据库经历了太多的无效操作,而且这些操作会极大影响数据库的性能

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s