Oracle在执行DML语句时没有提交commit会写入redo log file吗?
刚看过一个资料,上面写执行DML时会同时将旧快照和新数据分别写入rollback block和redo log file。
即然没有提交数据,为什么还有写redo log file,即使系统failure了也不会破坏数据库的一致性。
刚看过一个资料,上面写执行DML时会同时将旧快照和新数据分别写入rollback block和redo log file。
即然没有提交数据,为什么还有写redo log file,即使系统failure了也不会破坏数据库的一致性。
解决方案 »
- oracle 集群通过共享存储的方式实现,一般通过什么解决方案来预防存储故障而导致系统不可用?
- 急急急!!!Oracle存储过程问题。各仁兄前来解决
- 求牛人解答:Oracle判断语句问题
- Oracle客户端如何配置
- 来看看这个查询
- 现在要学习oracle了
- 急求ORACLE安装包-----------------------------
- preparedStatement 至急 在线等!!!!!!!!!!!
- 我的temp表空间的数据文件怎么不能脱机?
- 在SQL PLUS中改为对另一数据库操作,用什么方法???
- 概念性的问题
- oracle9i用客户端连接服务器端时报错!!!!!!!!!!!!!!!1
刚看过一个资料,上面写执行DML时会同时将旧快照和新数据分别写入rollback block和redo log file。
即然没有提交数据,为什么还有写redo log file,即使系统failure了也不会破坏数据库的一致性。
没有提交,但是REDO BUFFER 日志超过1/3,也要写入REDO LOG FILE的,或者在发出校验点检查的时候.
是会将ROOLBACK BLOCK 写入回滚段
lgwr进程将redo log buffer的重做条目写入到联机重做日志文件lgwr写日志文件的时机有如下几种:1 提交事务处理时(commit)
2 redo log buffer的三分之一已满时
3 redo log buffer的内容超过1M时
4 发生lgwr超时
5 dbwr将data buffer中的脏数据写入到数据文件前
6 日志文件切换时dbwr将data buffer中的中的脏数据写入到数据文件中dbwr写数据文件的时机有如下几种:1 用户进程检查dirty buffer是否超过上线,超过的话,该用户进程会调用dbwr,写脏数据到数据文件
2 用户进程搜索空闲缓冲区,如果没有找到,该用户进程调用dbwr,写脏数据到数据文件
3 dbwr周期性唤醒,一般3秒每次
4 检查点发生。
即使FALURE了,在数据库启动事例的时候要发出校验,这就是REDO和UNDO,发生REDO 是因为在DBWR在写入数据文件时,先写入REDO LOG FILE,如果这个时候断电重启,则进行写入数据文件操作;发生UNDO是因为如果数据没有提交,当日志满1/3了,写入重做日志了,但是因为你没有提交,它会回滚,写的重做日志文件要和撤消,数据事例重启的时候,就是数据完成完全同步的一个过程