1.作用
一个事物只能分配一个undo段
一个undo段可以同时服务多个事务
2.属性
事务的属性
ACID:
原子性(Atomicity) | 一个事务的所有部分必须都完成,或都不完成。 |
---|---|
一致性(Consistency) | 查询的结果必须与数据库在查询开始时的状态一致。 |
隔离性(Isolation) | 除了做出表更的会话,其他会话都无法看到未提交的数据。 |
持久性(Durability) | 事务一旦完成,不可丢失 |
3.undo数据
• Undo数据是:
• 原始的、修改之前的数据副本
• 是针对更改数据的每个事务处理所捕获的
• 至少保留到事务结束
• 用于支持
- rollback操作
- 读取一致性数据
- 闪回查询、闪回事务处理和闪回表
- 从失败的事务中进行recove
4.undo和redo
5.undo参数
SQL> show parameter undo
NAME TYPE VALUE
--------------------------- ------ ----------- -----------
undo_management string AUTO
undo_retention integer 900
undo_tablespace string UNDOTBS1
• undo_management
- manaual:手工管理重做
- auto :自动管理重做段的创建、分配、调整。这是Oracle9I之前的唯一方法
• undo_retention 指定保留期单位秒,保证在这个期间 commit 的 undo 数据不会被覆盖
• undo_tablespace 当前使用的undo表空间
undo数据状态和参数
回滚段里数据三种状态:
ACTIVE | 未提交的数据 |
---|---|
UNEXPIRED | 已提交,未超过undo_retention保留时间 |
EXPIRED | 已提交,超过undo_retention保留时间 |
仅适用于undo表空间的参数
-undo_retention
6.参数属性
retention guarantee(保障保留时间)属性
通常情况下,unexpired 数据并不绝对保证在 retention 期内不会覆
盖,必要时可考虑设置 在保留期强制不覆盖的 guarantee 属性,同时应
该使 undo autoextend on
SQL> select tablespace_name,status,contents,retention from
dba_tablespaces;
缺省配置下 undo retention 是 noguarantee (guarantee 属性慎重用)
guarantee 属性可以修改。
SQL > alter tablespace undotbs2 retention guarantee;
保证 unexpired 状态 undo 数据 在 retention 期间不被覆盖
SQL> select tablespace_name,status,contents,retention from
dba_tablespaces;
取消 undo 表空间 guarantee 属性
SQL> alter tablespace undotbs2 retention noguarantee;
查看redo表空间SQL语句
SQL> show parameter undotablespace
7.创建undo表空间
可以创建多个表空间,但只有一个被正在使用
使用中的表空间,不能offline(脱机)和drop(停止)
创建undo表空间SQL语句
create undo tablespace undotbs2 datafile '(文件名称和目录)'
size 50M autoextend on(自动扩展空间格式);
8.切换undo
undo表空间很难缩小,可以替换
SQL> alter system set undo_tablespace=undotbs2;
SQL> show parameter undo_tablespace
SQL> select * from v$rollname;
动态参数,修改立即生效