暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

undo表空间的学习

原创 2022-07-03
301

undo中数据的特点:

是数据修改前的备份,主要是保证用户的读一致性,在事务修改数据时产生

至少保存到事务结束

undo数据的作用:

回滚(rollback)操作,实现读一致性与闪回查询,从失败的事务中还原数据

, 非正常停机后的实例恢复

undo回滚段的特点:

回滚段是由实例自动创建用于支持事务运行的专用段,同样是区和块组成,回滚

段会按实际需要自动进行增长或收缩,是一段可以给指定事务循环使用的存储缓冲区

每个事务只会使用一个回滚段,一个回滚段在同一时刻可能会服务于多个事务

当一个事务开始的时候,会指定一个回滚段,在事务进行的过程中,当数据被修改时,原始的数据会被复制到回滚段。

在回滚段中,事务会不断填充盘区,直到事务结束或所有的空间被用完,如果当前的盘区不够用,事务会在段中请求扩展下一个盘区,如果所有已分配的盘区都被用完,事务会覆盖最初的盘区或者在回滚段允许的情况下扩展新的盘区来使用.

回滚段存在于undo表空间中,在数据库中可以存在多个undo表空间,但同一时刻只能使用一个undo表空间。

回滚段中的数据主要分为以下几种

Uncommitted undo information; 未提交的回滚数据,该数据所关联的事务并未提交,用于实现读一致性,所以该数据不能被其它事务的数据所覆盖

Committed undo information;已经提交但未过期的回滚数据,该数据关联的事务已经提交,但是仍受到undo retention参数保持时间的影响

Expired undo information;事务已经提交,而且数据保存时间已经超过undo retention参数指定的时间,属于已经过期的数据

当回滚段满了后,会优先覆盖Expired undo information,当过期数据空间用完后,会再覆盖Committed undo information的区域,这时undo retention参数所规定的保持时间会被破坏,Uncommitted undo information的数据是不允许覆盖的,如果要求提交的数据在undo retention参数规定的时间内不会被覆盖,可以在undo表空间上指定RETENTION GUARANTEE,语法如下:

ALTER TABLESPACE UNDOTBS1 RETENTION GUARANTEE;

undo数据与redo数据的区别:

undo记录数据修改之前的操作,redo记录磁盘数据将要进行的操作.

undo用于数据的回滚操作,和实现一致性读,redo用于前滚数据库操作

undo存储在回滚段里,redo存储在重做日志文件里

undo用于在多用户并发的系统里保证一致性读,redo用于防止数据丢失

与undo有关的相关参数

undo_management = auto 自动的undo表空间管理

undo_tablespace = undotbs1 设置undo表空间的名称,可以存在多个undo表空间,但同时只能使用一个

undo_retention = 1800(秒) 设置快照保存的最少时间,设置后在此时间段内仍有可能会被覆盖

ALTER TABLESPACE UNDO_TS RETENTION GUARANTEE; 强制所有快照必须保存 undo_retention所规定的时间。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论