(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语句来说明联机重做日志的作用。 ⑤执行commit提交事务,LGWN进程将日志缓冲区的数据写入联机重做日志文件。. f3 `2 G2 F8 c, I4 O |
(4) 优化使用重做日志文件
应当将redo文件放在不同磁盘上,并且避免与数据文件放在同个磁盘争用IO