Oracle写日志问题

探讨Oracle数据库中未提交的DML操作如何影响Redo日志记录,包括Redo日志的写入时机及数据库一致性保障机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文转自:http://www.tctl.com.cn/accp/1499/1505/197949.html

Oracle在执行DML语句时没有提交commit会写入redologfile吗?
刚看过一个资料,上面写执行DML时会同时将旧快照和新数据分别写入rollbackblock和redologfile。
即然没有提交数据,为什么还有写redologfile,即使系统failure了也不会破坏数据库的一致性。

答:Oracle在执行DML语句时没有提交commit会写入redologfile吗?


刚看过一个资料,上面写执行DML时会同时将旧快照和新数据分别写入rollbackblock和redologfile。

即然没有提交数据,为什么还有写redologfile,即使系统failure了也不会破坏数据库的一致性。

没有提交,但是REDOBUFFER日志超过1/3,也要写入REDOLOGFILE的,或者在发出校验点检查的时候.

是会将ROOLBACKBLOCK写入回滚段

答:是会将ROOLBACKBLOCK写入回滚段并且会把提交的数据写入REDOLOGFILE,不过你不能指望一个非常大的事物处理一直占满REDOBUFFERCACHE吧,日志BUFFER写满怎么办啊.

lgwr进程将redologbuffer的重做条目写入到联机重做日志文件

lgwr写日志文件的时机有如下几种:

1提交事务处理时(commit)
2redologbuffer的三分之一已满时
3redologbuffer的内容超过1M时
4发生lgwr超时
5dbwr将databuffer中的脏数据写入到数据文件前
6日志文件切换时
dbwr将databuffer中的中的脏数据写入到数据文件中
dbwr写数据文件的时机有如下几种:

1用户进程检查dirtybuffer是否超过上线,超过的话,该用户进程会调用dbwr,写脏数据到数据文件
2用户进程搜索空闲缓冲区,如果没有找到,该用户进程调用dbwr,写脏数据到数据文件
3dbwr周期性唤醒,一般3秒每次
4检查点发生。

答:即然没有提交数据,为什么还有写redologfile,即使系统failure了也不会破坏数据库的一致性。

即使**RE了,在数据库启动事例的时候要发出校验,这就是REDO和UNDO,发生REDO是因为在DBWR在写入数据文件时,先写入REDOLOGFILE,如果这个时候断电重启,则进行写入数据文件操作;发生UNDO是因为如果数据没有提交,当日志满1/3了,写入重做日志了,但是因为你没有提交,它会回滚,写的重做日志文件要和撤消,数据事例重启的时候,就是数据完成完全同步的一个过程

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/90618/viewspace-541314/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/90618/viewspace-541314/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值