undo的作用

undo的作用:
1、提供读一致性
例如用户A修改表TB1的一条数据,在他进行操作前Oracle将TB1这一条数据存放于undo中,在用户A修改的同时,用户B若访问TB1,则访问
的是undo中的TB1未修改的数据+undo(构建cr)保存的数据,其他访问TB1的用户也是如此,因此在用户A修改TB1的时候,undo保证了其他用户对TB1的
读一致性。
2、为事务提供回滚
通过保留在undo中的镜像来恢复用户未提交的数据。当用户未提交数据,而此时数据库发生异常关闭,undo中保留的
镜像会自动将数据回滚。
3、提供闪回操作
保留在undo中的镜像在事务结束后并未马上删除,而是保留了一段时间,在这段时间内用户即便已经提交了事务,
仍可以通过 flashback 技术查询。
总结:闪回最大时间为db_flashback_retention_target,闪回数据存在 undo表空间,保留时间为undo_retention,保留时间到了数据不会覆盖,只有当undo表空间不够,数据才会覆盖;

show parameter undo_retention 900 (单位是秒)undo保留时间的保留时间
select * from dba_tablespaces where tablespace_name =‘UNDOTBS1’ and RETENTION =‘GUARANTEE’;
alter tablespace UNDOTBS1 RETENTION GUARANTEE;
当undo表空间RETENTION='GUARANTEE’时才会强制保留15分钟,如果为NOGUARANTEE,undo表空间不够,就会随时覆盖;
闪回时间到了数据不会覆盖,只有当undo表空间不够,数据才会覆盖(原因为先覆盖free的段,再覆盖expired的段)
查看undo用的表空间
show parameter undo
show parameter db_flashback_retention_target 1440 (单位是分钟) 是闪回最大时间(数据库闪回)
闪回恢复区能存放的闪回日志大小由db_recovery_file_dest_size参数控制,
闪回日志的保留时间由db_flashback_retention_target参数控制,
一旦超过flashback retention target时间,闪回区没有有足够空间,flashback log将要被覆盖;
该参数和undo_retention类似,并不是一个精确的保留时间

注:只要 flashback 区(db_recovery_file_dest_size )足够大,系统都可以回退到超过1天的某个历史时间点, 没有对闪回日志文件进行覆盖。
当我们对数据库进行DML操作的时候,Oracle能通过undo为我们提供保存修改前数据的镜像。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值