重做日志缓冲区(redo log buffer)
重做日志缓冲区属于SGA。Oracle引入重做日志缓冲区的目的是用于数据恢复。
Oracle在执行任何DML和DDL操作改变数据之前,都会将恢复所需要的信息,先写入重做日志缓冲区,然后再写入
数据库高速缓冲区。
Oracle执行DML语句时,只有编译(parse)和执行(execute)两个阶段:
(1)如果数据和回滚数据不在数据库高速缓冲区中,Oracle服务器进程会将它们从数据文件中读取到数据库高速缓冲区中。
(2)Oracle服务器进程会在要修改的数据行上添加行级锁。
(3)Oracle服务器进程将数据的变化信息和回滚所需的信息都写入重做日志缓冲区。
(4)Oracle服务器进程将对数据所做的修改和回滚所需的值都写入数据库高速缓冲区。然后将数据库高速缓冲区中的这些数据库标示为脏数据区(因为此时内存中的数据和外存中的数据是不一致的)。
(5)重做日志写进程将重做日志缓冲区中的数据写入重做日志文件中。
(6)数据库写进程将数据库高速缓冲区中的脏数据区中数据写入数据文件。