1. Undo的定义
Undo 是一个存储旧数据的位置,事务在对数据进行修改时会将旧数据存入 Undo Segment,以便在需要时进行回滚操作或其他功能支持。
2. Undo 的功能
- 事务回滚(主动)
当事务需要回滚时,利用 Undo Segment 中的数据恢复到原始状态。 - 事务恢复(被动)
在系统故障时,通过 Undo Segment 恢复未完成的事务。 - 读一致性
通过 SCN(System Change Number)实现数据的读一致性,确保查询时看到的是修改前的数据。
3. Undo 的管理方式
- 手动管理
手动配置并管理 Undo 的相关参数。 - 自动管理
- 必须配置一个 Undo Tablespace。
- 每个实例都需要分配一个 Undo Tablespace。
- Undo Segment 可以服务多个事务,但一个 Block 仅属于一个事务。
- 系统允许创建多个 Undo Segment,但同时只有一个处于活跃状态。
4. Undo Segment 的类型
- System 类型
系统专用的 Undo Segment。 - Non-System 类型
非系统专用的 Undo Segment。 - Deferred 类型
用于事务恢复的 Undo Segment。