问题:在oracle中update一条记录,长时间不提交,DBWn会不会将脏块写入数据文件?LGWR会不会把redo log buffer中的记录写入onlin
问题:在oracle中update一条记录,长时间不提交,dbwn会不会将脏块写入数据文件?lgwr会不会把redo log buffer中的记录写入online redo log? 如果二者都已写入磁盘,用户发出rollback命令,将会做哪些操作?如果此时数据库实例crash,实例恢复时,将做哪些操作?
讨论结论:
1.当用户DML语句修改一条记录,记录所在脏块是有可能被写入数据文件(提交时间越长,写入数据文件几率越大),,因为DBWn的写触发条件为:每3秒自动唤醒一次;检查点事件;一个服务器进程在规定时间内没有找到空闲块;由上可知,DBWn是否写入,和用户是否提交没有关系;
2.redo log buffer中的记录,也是有可能写入online redo log中,因为LGWR触发条件为:每3秒自动唤醒一次;三分之一满;大小达到1M;commit操作触发;DBWn脏块要写入数据文件中,但是保护该脏块的redo还没写入磁盘,此时会触发LGWR写。由上可知,LGWR的写在未commit的情况下,也可能会写入redo文件。
3.当二者都已写盘,用户发出rollback,则oracle会利用undo块来进行恢复。(undo块也有可能写入磁盘,但是绝对不会被覆盖!)
《Android基础教程》内容完整丰富,具有较强的通用性,读者都能通过《Android基础教程》快速学习Android开发,提高相关技能。Android是谷歌公司开发的全新开源手机平台。《Android基础教程》是一部关于Android开发的基础教程,采用由浅入深、循序渐进的方式讨论Android。书中还结合数独游戏等实例更加形象生动地讲解了Android开发的基本流程,且每章最后都有一个“快速阅读指南”,更加方便了读者的阅读。android基础教程,美Ed_Bur
0
4.如果此时数据库crash,则oracle会在实例恢复时,先应用redo,进行前滚。前滚完后会进行回滚,将未提交的事务(undo中有记录)进行rollback。
本文永久更新链接地址:
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号