(1)作用:
Oracle 使用重做日志记录对数据库所做的所有更改。Oracle 在重做记录(重做缓冲区中一个描述更改的条目)中记录每一个更改。例如,假定用户更新了工资单表中的一个列值(从 5 改为 7)。Oracle 将旧值记录在撤销记录中,将新值记录在重做记录中。因为重做日志存储了对数据库所做的每次更改,所以这个事务的重做记录实际上包含了三个部分:8 w6 r. C& m
1、对撤消事务表所做的更改(撤销表空间中操作)
2、对撤消数据块所做的更改 (撤销表空间中操作)
3、对工资单表数据块所做的更改 (重做日志文件记录)
如果用户随后提交了对工资单表所做的更新 — 使得由 SQL 语句执行的更改变为永久性的 — 那么 Oracle 将生成另一条重做记录。通过这种方式,系统仔细地监视着在数据库中发生的一切。
(2)重做日志文件的重复使用
日志写入器 (LGWR) 将重做日志条目写到磁盘上。重做日志数据是在系统全局区的重做日志缓冲区中生成的。随着事务的提交和日志缓冲区的充满,LGWR 将重做日志条目写到一个联机重做日志文件中。LGWR 以循环方式书写联机重做日志文件:当它写满了当前联机重做日志文件(称为活动文件)时,LGWR 将写入下一个可用非活动重做日志文件。LGWR 循环使用据库中的联机重做日志文件,覆盖旧的重做数据。根据是否启用了存档,写满的重做日志文件可按以下方式进行重用:
1、如果禁用了存档,则一旦将记录在日志中的更改保存到数据文件中,就可再次使用写满的联机重做日志了。
2、如果启用了存档,则一旦将更改保存到数据文件中并将文件存档后(写入归档日志文件),就可再次使用写满的联机重做日志了。
(3)重做日志文件在 数据更新中所处的位置
一个数据库至少要有两个联机重做日志文件组。
下面以一条update语句来说明联机重做日志的作用。 ①启动事务,在数据缓冲区查找所需的数据。如果没找到,则通select语句将update语句所需的数据放入数据缓冲区。 ②启动事务的同时,Oracle会启动一个撤销段与用户事务匹配。1 t0 [% Y* R& f& m ③SMON进程生成重做。即将update语句更新列的新值及旧值放入日志缓冲区。 ④SMON进程更新数据库缓冲区相关数据。即将变化的列一时更新到数据块、未变化的列更新到撤销段
⑤执行commit提交事务,LGWN进程将日志缓冲区的数据写入联机重做日志文件。. f3 `2 G2 F8 c, I4 O ⑥待检查点到来时,CKPT进程触发DBWn进程,将数据缓冲区的数据更新到数据文件。" G1 k9 L1 v: f8 O; u$ E 从上面的分析可以得出,联机重做日志文件的更新总是优先于数据文件的更新。因此,联机重做日志文件在做实例恢复具有关键作用。
|
(4) 优化使用重做日志文件
应当将redo文件放在不同磁盘上,并且避免与数据文件放在同个磁盘争用IO
分享到:
相关推荐
但随着业务的增加或当前联机日志文件的大小成为数据库瓶颈之一时,不得不调整联机日志的大小。本文演示了如何调整联机日志的大小。 1、演示环境 sys@CNBO1> select * from v$version where rownum<2; ...
1.重做日志(redo log) 我们都知道,事务的四大特性里面有一个是 持久性 ,具体来说就是只要事务提交成功,那么对数据库做的修改就被永久保存下来了,不可能因为任何原因再回到原来的状态。那么 MySQL 是如何保证...
Oracle DG下修改redo log和standby redo log日志大小.txt
重做日志教程,希望与大家一些学习进步重做日志文件(REDO LOGFILE)又被称为事务日志文件(TRANSACTION LOGFILE)。它对ORACLE数据库来说是至关重要的。ORACLE中每执行一条更新 操作时,都会引起数据库的变化,因此...
文章目录一、MySQL日志文件类型二、几种日志的对比2-1、用途 redo log undo log binlog2-2、存储内容、格式 redo log undo log binlog2-3、日志生成 redo log undo log binlog2-4、删除策略 redo log ...
Redo log包含所有的数据库变化历史,数据库的所有操作变化,均按照写入重做日志缓冲区先于数据块缓冲区、写入重做日志文件先于写入数据文件;当发生提交动作时,将重做日志缓冲区变化刷到重做日志文件。
42 redo log是直接一条一条写入文件的吗?非也,揭秘redo log block.pdf
41 在Buffer Pool执行完增删改之后,写入日志文件的redo log长什么样.pdf
43 直接强行把redo log写入磁盘?非也,揭秘redo log buffer.pdf
也许你还是个新人,需要查看大量网上资源或参考手册,才知道如何下手分析 ORACLE的重做日志 redo log 或归档日志。 鉴于以上的种种不便,在下对LOGMNER程序包,进行了封装,方便大量使用ORACLE 强大的日志分析工具...
MySQL中有八种日志文件,分别是:重做日志(redo log),回滚日志(undo log),二进制日志(binlog),错误日志(errorlog),慢查询日志(slow query log),一般查询日志(general log),中继日志(relay log)...
ORACLE 修改redo日志文件 大小的方法 供大家参考
行业-41 在Buffer Pool执行完增删改之后,写入日志文件的redo log长什么样.rar
前言 如果有人问你“数据库事务有哪些特性”?你可能会很快回答出原子性、一致性、隔离性、持久性即ACID特性。那么你知道InnoDB如何保证这些事务特性的吗?如果知道的话这篇文章就可以...二部分是重做日志文件(redo lo
丢失全部数据库文件及全部redolog的恢复方法,可用作RMAN数据库迁移.doc
3000帧动画图解MySQL为什么需要binlog、redo log和undo log.doc
44 redo log buffer中的缓冲日志,到底什么时候可以写入磁盘?l.pdf
Innodb重做日志读取器这是一项肮脏的工作。 现在仅适用于某些地铁类型。目标它可以用于学习Innodb...如何使用 gcc -x c -std=gnu89 -O2 -Wall redo_log_reader.cc -o bin/rlrRLR_DBG=1 bin/rlr test/ib_logfile0 | less
行业-42 redo log是直接一条一条写入文件的吗?非也,揭秘redo log block.rar