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

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号