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