管理REDO LOG记录

Redo Log概念
规划Redo Log
创建Redo Log组和成员
重新分配、命名Redo Log成员
删除Redo Log组和成员
强制切换日志
验证Redo Log文件块
清理Redo Log 文件
Redo Log字典视图
 
Redo Log 概念
Redo Threads
redo log相对于每一个数据库实例都有一个redo线程。典型配置中,仅一个数据库实例访问数据库,所以仅出现一个redo 线程。但在RAC环境中,两个或更多的实例并行访问一个数据库,每一个实例都拥有它自己的redo 线程。分离的redo线程为避免在一个redo log file集上产生竞争,因此这种预估的潜在的瓶颈导致我们需要了解如何对redo log进程配置和管理。
 
Redo Log Contents
redo records(redo记录)被写入至redo log file中,一条redo记录,通常也称为redo entry,是由一组change vectors组成,每一组改变扇区描述数据库的单个块的改动情况。比如,你改变employee表中的一条salary的值,这个改变就包含了改变扇区,其中描述了表的数据段的块、undo段的数据块、和事务表的undo段。
Redo条目记录数据可以用来重构所有数据库的改变,包括undo段。因此,redo log也用于保护回滚数据。当我们通过redo 数据恢复数据库时,数据库读redo记录中的改变扇区以及应用与这些改变相关的块。
Redo记录的缓冲位于SGA的一个循环刷新区成为redo log buffer,这些缓存被LGWR进程写到redo log file中,不管事务何时提交,LGWR都将redo 记录的事务写入到redo log file中。并分配一个SCN(系统改变号)作为每一条已提交事务的redo记录点。
Redo记录也可以在相应事务提交前写入redo log file中,如果redo log buffer已满,或其他事务提交,LGWR将buffer所有的redo log条目刷到redo log file中。即使一些redo记录没及时提交。如果有必要,数据库可以回滚这些改变。
 
Oracle数据库怎样写Redo log
数据库中的redo log通常由一或多个的文件组成。数据库至少保证两个文件中一个总是可以写的,另一个用于归档(当数据库处于归档模式)。
LGWR进程循环刷写redo log文件,当某一个正在使用的redo log写满后,进程会切换到下一个可用的redo log文件中。当最后一个redo log 文件写满后,会切换回第一个redo log 文件进行记录。如下图所示:

管理REDO LOG记录

如果在NOARCHIVELOG模式,一个满载的redo log需要等到其中的改变记录均被写入到数据文件中后才可以重用。
如果在ARCHIVELOG模式,则需要等待改变记录被写到数据文件并归档后才可重用。
 
redo log的活动(当前)和非活动状态
LGWR正在写的redo log文件的状态显示为current,redo log 文件可用于实例恢复的被称为active状态。如果不在需要被用于实例恢复的则为inactive状态。
如果在ARCHIVELOG模式下,直到归档进程(ARCn)完成归档前数据库都不能对该redo log文件重用或覆盖。而在NOARCHIVELOG模式下,LGWR则会等到redo log处于inactive状态时重写该redo log。
 
log switch和log sequence number
日志切换指出数据库停止和开始写的redo log文件。
 
规划Redo log
多R edo Log 文件
放置Redo Log成员至不同磁盘
规划Redo Log文件大小
规划Redo Log文件的块大小
选择Redo Log文件的数量
控制归档标签

相关推荐