Maison  >  Article  >  base de données  >  Oracle undo 机制

Oracle undo 机制

WBOY
WBOYoriginal
2016-06-07 17:34:491044parcourir

先找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)

linux

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn