oracle数据库undo实例崩溃的问题

最近有人跟我提出一个看似很刁钻古怪的问题,问题是这样的:

假设事务A修改了一个数据块b,b变成脏数据块b,但是没有提交,又因为脏数据块写入磁盘不受事务提交的影响,所以现在的情况是这样的:
脏数据块b被写入磁盘,但是undo表空间保存的的b修改前的数据还没有写入磁盘
现在出现了实例崩溃
那么要恢复数据库实例的时候,就没有undo数据,试问,此时如何恢复数据库实例?

按照这个逻辑,的确会有发生这样的事情,为此我做了3个小时的资料寻找,终于给我找到一句可以粉碎这个问题的话了,这句话就是:
当触发DBWR之前,会先触发lgwr进程

看看,多么不堪一击的问题,脏数据写入磁盘需要触发DBWR进程,然后触发写日志进程,只要日志文件写入磁盘了,那么回滚段、脏数据自然也会在下次实例启动的时候前滚回来

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值