欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

Oracle undo 机制

程序员文章站 2024-01-29 12:10:28
...

先找free区空间,如果不够ORACLE会尝试扩容UNDO表空间,如果不够或不能扩容,则会尝试覆盖使用expired状态的区空间,如果expired

UNDO作用:
1、回滚,rollback时
2、构造CR块,提供读一致性
3、回滚,实例恢复的时候

undo表空区的状态:
1、free 可以使用的回滚段的区
2、active 表示此区中有活动的未提交的事务块
3、inactive 表示此区中的事务已经提交,但未过undo_retention默认900秒时间,原则上Oracle不会覆盖他,但在UNDO空间不足,压力大时也会被覆盖。
4、expired 过了undo_retention时间的区

alter tablespace undotbs1 retention guarantee
此参数默认为noguarantee,select TABLESPACE_NAME,RETENTION from dba_tablespaces;可查
修改成guarantee表示如果我们希望或想要求inactive区保证在900秒时间内不会被覆盖,只有过了retention时间变成了expired状态才可以被覆盖。

UNOD使用顺序:
先找free区空间,如果不够ORACLE会尝试扩容UNDO表空间,如果不够或不能扩容,则会尝试覆盖使用expired状态的区空间,如果expired也不够,则会尝试覆盖使用inactive状态的区空间,如果设置了guarantee参数不能使用此状态空间,或者inactive空间也用完了,事务则会被挂起。

相关阅读:

RMAN备份与恢复之undo表空间丢失

关于Oracle 释放过度使用的undo表空间

Oracle undo的一些理解

Oracle undo 镜像数据探究

Oracle 回滚(ROLLBACK)和撤销(undo)