Oracle 10g
中
UNDO
数据的作用
及
UNDO
表空间
的常用操作是本文我们主要要介
绍的内容,
UNDO
数据也称为回滚
(ROLLBACK)
数据
,
它用于确保数据的一致性
.
当
执行
DML
操作时
,
事务操作前的数据被称为
UNDO
记录
.UNDO
段用于保存事务所修
改数据的旧值
,
其中存储着被修改数据块的位置以及修改前数据。
UNDO
数据的作用:
1.
回退事务
当执行
DML
操作修改数据时
,UNDO
数据被存放到
UNDO
段
,
而新数据则被存放到数
据段中
,
如果事务操作存在问题
,
旧需要回退事务
,
以取消事务变化
.
假定用户
A
执行了语句
UPDATE emp SET sal=1000 WHERE empno=7788
后发现
,
应该修改雇员
7963
的工资
,
而不是雇员
7788
的工资
,
那么通过执行
ROLLBACK
语句可以取消事
务变化
.
当执行
ROLLBACK
命令时
,oracle
会将
UNDO
段的
UNDO
数据
800
写回的数
据段中
.
2.
读一致性
用户检索数据库数据时
,oracle
总是使用用户只能看到被提交过的数据
(
读取提
交
)
或特定时间点的数据
(SELECT
语句时间点
).
这样可以确保数据的一致性
.
例
如
,
当用户
A
执行语句
UPDATE emp SET sal=1000 WHERE empno=7788
时
,UNDO
记
录会被存放到回滚段中
,
而新数据则会存放到
EMP
段中
;
假定此时该数据尚未提
交
,
并且用户
B
执行
SELECT sal FROM emp WHERE empno=7788,
此时用户
B
将取
得
UNDO
数据
800,
而该数据正是在
UNDO
记录中取得的
.
3.
事务恢复
事务恢复是例程恢复的一部分
,
它是由
oracle
server
自动完成的
.
如果在数据库
运行过程中出现例程失败
(
如断电
,
内存故障
,
后台进程故障等
),
那么当重启
oracle server
时
,
后台进程
SMON
会自动执行例程恢复
,
执行例程恢复时
,oracl
会重新做所有未应用的记录
.
回退未提交事务
.
4.
倒叙查询
(FlashBack Query)
倒叙查询用于取得特定时间点的数据库数据
,
它是
9i
新增加的特性
,
假定当前时
间为上午
11:00,
某用户在上午
10:00
执行
UPDATE emp SET sal=3500 WHERE