关闭
侧边栏

UNDO_RETENTION的内部实现

Posted by dbtan on 十二月 28th, 2009

UNDO_RETENTION的内部实现:

UNDO_RETENTION机制从Oracle 9i开始引入,为了实现这一机制,Oracle在Undo Segment Header上创建了一个Retention Table用于记录相关Undo存储的提交时间,从而实现其保留策略。接下来看一下这个Retention Table的内容,以下测试来自Oracle 11g数据库环境:

sys@TQGZS11G> select banner from x$version where indx=3;
BANNER
------------------------------------------------------------
TNS for Linux: Version 11.1.0.7.0 - Production

首先使用测试用户执行一个DML事务,删除测试表中的部分数据:


... ...
<阅读全文>

Oracle 10g的UNDO_RETENTION管理增强

Posted by dbtan on 十二月 28th, 2009

Oracle 10g的UNDO_RETENTION管理增强:

在AUM模式下,UNDO_RETENTION参数用以控制事务提交以后Undo保留的时间。该参数以秒为单位,9iR1初始值为900秒,在Oracle 9iR2增加为10800秒。但是这是一个NO Guaranteed的限制。也就是说,如果有其他事务需要回滚空间,而空间出现不足时,这些信息仍然会被覆盖。

从Oracle 10g开始,如果设置UNDO_RETENTION为0,那么Oracle启动自动调整以满足最长运行查询的需要。当然如果空间不足,那么Oracle满足最大允许的长时间查询。而不再需要用户调整。当设置undo_retention为0后,在警告日志文件中可以看到“Autotune of undo retention is turned
... ...
<阅读全文>

回滚段的前世今生

Posted by dbtan on 十二月 23rd, 2009

回滚段的前世今生:

在Oracle 9i之前,回滚表空间创建之后,Oracle随后创建回滚段供数据库使用,也可以手工创建或者删除回滚段进行维护,比如在开始事务之前,可以通过如下命令指定使用特定的回滚段:

set transaction user rollback segment <rollback_segment_name>;

可以从数据库中查询这些回滚段的状态:

sys@TQGZS> select segment_name,tablespace_name,status from dba_rollback_segs;
SEGMENT_NAME                   TABLESPACE_NAME  
... ...
<阅读全文>

并发控制和一致性读

Posted by dbtan on 十二月 23rd, 2009

并发控制和一致性读:

允许多用户并发访问是数据库必须满足的功能,那么怎样实现并发访问、控制、数据修改就成了一个重要问题。一方面Oracle通过锁定机制实现数据库的并发控制,另一方面通过多版本(Multi-versioning Model)模型来进行并发数据访问

通过多版本架构,Oracle实现了读取和写入的分离,使得写入不阻塞读取;读取不阻塞修改。这是Oracle数据库区别于其他数据库的一个重要特征。多版本模型在Oracle数据库中是通过一致性读来实现的,一致性读也正是回滚表空间的主要作用之一

Oracle一方面不允许其他用户读取未提交数据,另一方面要保证用户读取的数据来自同一时间
... ...
<阅读全文>

回滚段存储的内容

Posted by dbtan on 十二月 23rd, 2009

回滚段存储的内容:

前面的日志中讲过,Redo中只会记录少量信息,这些信息足以重演事务;同样Undo中也只记录精简信息,这些信息足以撤销事务。

对于insert操作,回滚段只需要记录插入记录的rowid,如果回退,只需将该记录根据rowid删除即可;
对于update操作,回滚段只需要记录被更新字段的旧值即可(前镜像),回退时通过旧值覆盖新值即可完成回滚;
对于delete操作,Oracle则必须记录整行的数据,在回滚时,Oracle通过一个反向操作恢复删除的数据。

通过以上介绍可以简单总结一下:对于相同数
... ...
<阅读全文>


Copyright © 2009 - 2018 https://www.dbtan.com. All rights reserved.    京ICP备13006977号-1