Workshop 1-Lesson 10 Managing Undo Data

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产生的频率

decide to change the undo tablespace to a fixed size, you must choose a large enough size to avoid the following two errors:

DML failures (because there is not enough space to the undo for new transactions)

“Snapshot too old” errors (because there was insufficient undo data for read consistency)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值