Lesson10 Managing Undo Data

本文深入探讨了Oracle数据库中UNDO数据的作用与生命周期,包括支持读一致性、闪回查询及事务与UNDODATA的关系。阐述了如何存储UNDO信息,包括UNDO表空间的配置、特性及管理策略。最后介绍了UNDO数据与REDO数据的区别,以及如何通过设置UNDO_RETENTION参数和启用RETENTIONGUARANTEE来确保UNDO数据的有效保留。
Lesson 10
1. UNDO Data
1) 支持读一致性和闪回查询
为了让读一致性查询成功,原始信息必须仍然作为undo信息存在;
如果原始信息不可用,则会收到ORA-01555错误。
只要undo信息存在,oracle可以重建数据以满足读一致性查询
2)undo信息会保留所有事务,至少到如下其中一种情况的事务结束:
a.用户撤销一个事务(事务回滚)
b.用户结束一个事务(事物提交)
c.用户执行DDL语句,例如create drop rename alter
如果当前事务包含DML语句,数据库首先提交当前事务,然后执行和提交DDL语句作为一个新的事务
d.用户会话异常终止(事物回滚)

e.用户会话正常终止退出(事务提交)

2.事务和undo data
* 每个事务仅能被分配给一个undo segment
* 每个undo segment可以同时服务多个事务
1)当事务启动,数据变化,原始数据会拷贝一份到undo segment中,可通过v$transaction查看
2)undo segments是一种被实例创建的特殊段,但也是由数据块组成。会按需自动增长和收缩。循环存储缓存中的事务。
3)事务会自动填充undo segments直到事务结束或空间耗尽;如果事务需要更多的空间,会从下一个extents获取;在所有extents被消耗完后,事务会循环写第一个extent或从undo segments里请求一个新的extent。
NOTE:并行DML和DDL会引起一个事物使用多个undo segment


3.存储undo信息
1)undo表空间:
-  仅用于undo segments
-  有一些特殊的恢复注意事项,仅能在mount阶段恢复
-  只能用于一个实例
-  对于在给定时间的给定实例,当前可写的undo表空间只能有一个
-  对于大容量的OLTP环境来说,有许多短小并行事务,文件头会被争用,所以创建多个数据文件,可以解决这个潜在问题
-  undo segments自动创建且永远属于sys
-  每个undo segment最少有2个extents;对于8KB的块,最大有32765个extents
-  undo表空间是permanent,本地管理表空间自动段分配


4. undo data VS. redo data
1)undo用于回滚,读一致性,闪回(多用户的不一致读)
   redo用于前滚数据库的改变(数据丢失)
2)回滚块的变换也会被写进redo log


5. 管理undo
自动undo管理
- 全自动管理undo数据和空间管一个专用undo表空间
- 支持所有会话
- 自动调节AUTOEXTEND类型表空间以满足长查询的需要
- 自动调节固定大小表空间以满足最佳保留时间
如果使用闪回操作,则DBA需要:
- 配置undo retention
- 把undo表空间配置为fix-size
- 避免空间不足或01555错误


6. 配置undo retention
1)UNDO_RETENTION:已经被commit的信息至少可以保留多长时间(秒)
2)什么情况需要设置这个参数?
*  undo表空间启动了AUTOEXTEND
*  有LOB大对象
*  想要启用retention guarantee

3)对于fixed-size表空间,系统会基于历史记录和表空间大小调整最佳的保留时间,他会忽略undo_retention除非retention guarantee启用。

7. Guaranteeing undo retention
RETENTION GUARANTEE:用于强制启用undo保留时间最小值。当事务产生的undo信息超过表空间容量的时候,事务会失败。
SQL> ALTER TABLESPACE undotbs1 RETENTION GUARANTEE;


8. 更改undo表空间到fixed-size
1)原因:
- 支持闪回操作
- 限制表空间增长
2)评估:
- 最长运行的查询
- undo产生的频率


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值