在Oracle中什么是重做日志?

重做日志由两个或者多个预先分配的文件组成,这些文件存储对数据库所做的所有更改。
Oracle 数据库的每个实例都有关联的联机重做日志,以在实例发生故障时保护数据库。

重做日志文件充满了重做记录。
重做记录也称为重做条目,由一组更改向量组成,每个更改向量是对数据库中单个块所做更改的描述。

重做条目记录数据,我们可以使用这些数据重建对数据库所做的所有更改,包括撤消段。
因此,重做日志也保护回滚数据。
当我们使用重做数据恢复数据库时,数据库会读取重做记录中的更改向量并将更改应用于相关块。

每当提交事务时,LGWR 将事务重做记录从 SGA 的重做日志缓冲区写入重做日志文件,并分配一个系统更改号 (SCN) 来标识每个已提交事务的重做记录。
只有当与给定事务相关的所有重做记录都安全地保存在联机日志中的磁盘上时,用户进程才会通知该事务已提交。

Oracle 数据库一次仅使用一个重做日志文件来存储从重做日志缓冲区写入的重做记录。
LGWR 正在主动写入的重做日志文件称为当前重做日志文件。
实例恢复所需的重做日志文件称为活动重做日志文件。
实例恢复不再需要的重做日志文件称为非活动重做日志文件。

如果我们已启用归档(数据库处于 ARCHIVELOG 模式),则在归档程序后台进程 (ARCn) 之一归档文件之前,数据库无法重用或者覆盖活动的联机日志文件。
如果归档被禁用(数据库处于 NOARCHIVELOG 模式),那么当最后一个重做日志文件已满时,LGWR 继续覆盖第一个可用的活动文件。

日期:2020-09-17 00:11:51 来源:oir作者:oir