天天看点

重做日志文件

1、重做日志文件的作用:用于记录数据所作的所有更改,提供恢复机制;

2、重做日志文件的结构:

一组相同的联机重做日志文件副本称为联机重做日志文件组,lgwr后台进程向组内所有的联机重做日志文件并发写入相同信息;为保证数据库的正常操作,oracle服务器需要至少2个联机重做日志文件组。组内每个联机重做日志文件被称为成员,有相同的日志序列号和大小;联机重做文件最小为50kb;

3、重做日志文件是以循环的方式使用的;当一个重做日志文件被写满,lgwr则会移动到下一个日志组,这叫日志切换;同时还将进行检查点操作,将检查点信息写入控制文件;lgwr进程将重做条目从重做日志缓冲区写入联机重做日志文件的一个组,这个组被称为当前联机重做日志文件组;lgwr将在以下情况写入:

提交事务处理时;

当重做日志缓冲区被写满1/3时;

当重做日志缓冲区内已更改记录超过1m时;

dbwn将数据库缓冲区高速缓存中修改的块写入数据文件之前;

4、检查点:

如果检查点是由日志切换引起的,ckpt还会更新数据文件的标头;检查点的发生情况如下:

每次日志切换时;

当已通过正常、事务处理或立即选项关闭例程时;

通过设置初始化参数 fast_start_mttr_target 强制执行时;

数据库管理员通过手动方式请求时;

alter tablespace [offline normal|read only|begin backup];导致对特定数据文件执行检查点操作;

如果初始化参数log_checkpoints_to_alert设置为true,则有关每个检查点信息都记录在alert_sid.log内;该参数缺省值为false,表示不记录检查点;

5、强制执行日志切换和检查点:

alter system switch logfiles;强制执行日志切换

fast_start_mttr_target=…;强制执行检查点操作,例程恢复所用操作不应超过…秒

6、对联机重做日志文件的多元备份:

添加联机重做日志文件组:

重做日志文件

添加联机重做日志文件成员:

重做日志文件

删除联机重做日志文件:

若要增大或者减小联机重做日志文件组的大小,须新建联机重做日志文件组,再删除旧组;无法删除活动组或当前组;

删除联机重做日志文件组:

如果要删除的成员是组内最后一个有效的成员,则不能删除;如果该组为当前组,则必须先强制执行日志切换,才能删除该组成员;如果数据库正运行在archivelog模式下且未将该日志文件组归档,则不能删除该成员;

重定位或重命名联机重做日志文件:

oracle服务器仅更改控制文件内的指针,不从物理上重命名或创建任何操作系统文件;

7、获取联机重做日志的信息:v$log(联机重做日志状态信息的视图)、v$logfiles(日志文件状态信息视图,获取组内所有成员的名称)

重做日志文件

其中,status的状态有以下几种:

unused:刚添加的联机重做日志文件组,尚未对其进行写入;

current:当前的联机重做日志文件组,表示其也是活动的;

active:表示联机重做日志文件组是活动的,但不是当前的;它可能已经归档了,也可能未归档;崩溃恢复时需要该状态,可用于块恢复;

inactive:例程恢复不再需要联机重做日志文件组;可能归档了,也可能未归档;

clearing:表示在执行alter database clear logfile命令后,将该日志重建为一个空的日志,日志清除后,其状态为unused;

clearing_current:表示清除当前日志中已经关闭的线程;如果日志切换时发生某些故障,则日志可能处于此种状态;

重做日志文件

status的值可为:

invalid:该文件不可访问;

stale:文件内容不完全;

deleted:该文件已不再使用;

空白表示文件正在使用中;

8、归档的重做日志文件:

数据库配置的选择:archivelog模式下和noarchivelog模式下

归档联机重做日志文件的方式有手动和自动(建议);log_archive_start参数表明instance启动时,手动还是自动归档;如果为true,则是自动归档,arcn在每次日志切换时将已满日志进行归档;如果为false(缺省),则是手动归档;dba必须手动执行一条命令对所有或特定的联机重做日志文件进行归档。

获取归档日志的信息如下:

重做日志文件

继续阅读