Heim  >  Artikel  >  Datenbank  >  Oracle undo 机制

Oracle undo 机制

WBOY
WBOYOriginal
2016-06-07 17:34:491078Durchsuche

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

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn