ORACLE UNDO表空间

      UNDO表空间用于存放UNDO数据, 当执行DML操作(INSERT、UPDATE、DELETE和MERGE)时, ORACLE会将这些操作的旧数据写入到UNDO段, 在ORACLE 9i之前, 管理UNDO数据时使用(ROLLBACK SEGMENT)完成的。从ORACLE 9I开始, 管理UNDO数据不仅可以使用回滚段, 还可以使用UNDO表空间。因为规划和管理回滚段比较复杂, 所以ORACLE 10g已经完全丢弃用回滚段, 并且ORACLE使用UNDO表空间来管理UNDO数据。

      UNDO数据也称为回滚(ROLLBACK)数据, 它用于确保数据的一致性。 当执行DML操作时, 事务操作前的数据被称为UNDO记录。UNDO段用于保存事务所修改数据的旧值, 其中存储着被修改数据的块的位置以及修改前数据。

      一、UNDO数据的作用:

      1.1  回退事务

       当执行DML操作修改数据时, UNDO数据被存放到UNDO段, 而新数据则被存放到数据段中, 如果事务操作存在问题, 就需要回退事务, 以取消事务变化。假定用户A执行了语句UPDATE EMP SET SAL=1000 WHERE EMPNO=7788 ;后发现, 应该修改雇员7963的工资, 而不是雇员7788的工资, 那么通过执行ROLLBACK语句可以取消事务变化。当执行ROLLBACK命令时, ORACLE会将UNDO段的UNDO数据800写回到数据段中。(会写到数据原来在的位置吗?)

      1.2  读一致性

        用户检索数据库数据时, ORACLE总是使用户只能看到被提交过的数据(读取提交) 或特定时间点的数据(SELECT语句时间点。这句话该如何理解???)。这样可以确保数据的一致性。例如, 当用户A执行语句UPDATE EMP SET SAL=1000 WHERE EMPNO=7788时,UNDO记录会被存放到回滚段中(10g应该是存放在UNDO段中吧!), 而新数据则会存放到EMP段中, 假定此时该数据尚未提交, 并且用户B执行SELECT SAL FROM EMP WHERE EMPNO=7788, 此时用户B将取得UNDO数据800, 而该数据正是在UNDO记录中取得的。

      1.3 事务恢复

        事务恢复是例程恢复的一部分, 它是由ORACLE SERVER自动完成的。如果在数据库运行过程中, 出现例程失败(如断电,内存故障, 后台进程故障等), 那么当重启ORACLE SERVER时, 后台进程SMON会自动执行例程恢复, 执行例程恢复时, ORACLE会重新做所有未应用的记录, 回退未提交事务。

      1.4 倒叙查询(FlashBack Query)

        倒叙查询用于取得特定时间点的数据库数据, 它是9i新增加的特性, 假定当前时间为上午11:00, 某用户在上午10:00执行UPDATE EMP SET SAL=3500 WHRE EMPNO=7788语句, 修改并提交了事务(雇员原工资为3000), 为了取得10:00之前的雇员工资, 用户可以使用倒叙查询特征。

      二、使用UNDO参数

      2.1 UNDO_MANAGEMENT

        该初始化参数用于指定UNDO数据的管理方式。如果要使用自动管理模式, 必须设置该参数为AUTO, 如果使用手工管理模式, 必须设置该参数为MANUAL, 使用自动管理模式时, ORACLE使用UNDO表空间管UNDO数据, 使用手工管理模式时, ORACLE会使用回滚段管理UNDO数据, 需要主要, 使用自动管理模式时, 如果没有配置初始化参数UNDO_TABLESPACE, ORACLE会自动选择第一个可用的UNDO表空间存放UNDO数据, 如果没有可用的UNDO表空间, ORACLE会使用SYSTEM回滚段来存放UNDO记录, 并在ALERT文件中记载警告。

      2.2 UNDO_TABLESPACE

       该初始化参数用于指定例程所要使用的UNDO表空间, 使用自动UNDO管理模式时, 通过配置该参数可以指定例程所要使用UNDO表空间。在RAC结构中, 因为一个UNDO表空间不能由多个例程同时使用, 所以必须为每个例程配置一个独立的UNDO表空间

      2.3 UNDO_RETENTION

       该初始化参数用于控制UNDO数据的最大保留时间, 其默认值为900秒, 从9i开始, 通过配置该初始化参数, 可以指定UNDO数据的保留时间, 从而确定倒叙查询特征(FlashBack Query)可以查看到的最早时间点。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值