数据操纵
- DML
- INSERT
- UPDATE
- DELETE
- MERGE
- DML 始终作为事务处理的一部分执行
-
- 回退(ROLLBACK)
- 提交(COMMIT)
还原数据
- 原始的、修改之前的数据副本
- 针对更改数据的每个事务处理捕获的数据
- 至少保留到事务处理结束
- 用于支持:
- 回退操作
- 读取一致性查询:提供与查询开始时的数据一致的结果。
- 闪回查询:用来查找过去某个时间存在的某个版本的数据
- 从失败的事务处理中恢复
事务处理和还原数据
- 每个事务处理只分配给一个还原段。
- 一个还原段可以同时服务于多个事务处理。
- 通过查看 v$transaction 动态性能视图,可以查看哪些事务处理被分配到哪些还原段。
存储还原信息
- 还原信息存储在还原段中,还原段又存储在还原表空间中。
- 还原表空间(永久的、本地管理,只有在mount状态下才能还原)
- 一次只能有一个还原表空间可写入
- 还原段由SYS用户所有,至少包含两个区
- 仅用于还原段
- 包含特殊的恢复注意事项
- 只能与单个实例相关联
还原数据与重做数据
监视还原和管理还原
- 还原表空间中的空闲空间 (原数据太大,空间不够)
- 正确调整还原表空间的大小。
- 确保定期提交大型事务处理。
- “快照太旧”错误(ORA-01555)
- 配置适当的还原保留期间隔。
- 正确调整还原表空间的大小。
- 考虑确保还原保留期。
- 使用自动还原管理
- UNDO_MANAGEMENT=AUTO
- UNDO_TABLESPACE=UNDOTBS1
配置还原保留期
- UNDO_RETENTION 指定要将已提交的还原信息保留多长时间(秒数)。
-
- 还原表空间启用了 AUTOEXTEND 选项
- 若是AUTOEXTEND 还原表空间,系统至少将还原数据保留到这个参数指定的时间,并自动调整还原保留期以满足查询的还原要求。
- 若是固定大小的还原表空间,系统根据还原表空间大小和使用历史记录,自动调整可能的最大还原保留期;系统会忽略UNDO_RETENTION,除非启用了保留期确保
- 要设置 LOB 的还原保留期
- 要确保保留期
确保还原保留期
- 确保了保留期后,即使会导致事务处理失败,仍会强制实施还原保留期设置。
- SQL> ALTER TABLESPACE undotbs1 RETENTION GUARANTEE;
用EM来管理还原表空间及还原指导
- “Administration(管理)”页上的“Undo Management(还原管理)”
- 通过“Undo Management(还原管理)”属性页访问还原指导