Oracle 数据库入门(六)物理存储结构之重做日志文件和归档重做日志文件

重做日志文件

通常也称为联机重做日志文件,是用于数据库恢复的重要文件
用户对数据库的修改操作都被记录在重做日志文件中,DBA可以根据日志文件和备份文件将数据库恢复到最近一次记录日志的状态

重做日志文件由重做记录组成,而重做记录由一组修改向量组成,每个修改向量记录数据库在某个数据块所做的修改

在 Oracle 数据库过程中会默认创建三个重做日志文件组,文件组有组号,每组包含两个重做日志文件成员,数据库按照文件组组号大小从小到大顺序循坏写入重做日志文件。当一个组写满时自动切换到下一组,当所有组写满时将重新切换并覆盖第一个组

重做日志文件具有状态属性,当前正在被写入的重做日志文件状态为 Current,正在被用于数据库恢复的处于 Active(活动状态),已经归档不需用于数据库恢复的处于 Inactive (未活动状态),新添加未使用的重做日志文件状态为 Unused

增加重做日志文件

两种方式进行操作,一种是添加新的重做日志文件组,另一种是给已有组添加新的重做日志文件

alter database add logfile [group group#] (logfile_list) parameter_list

其中 group 子句显示指定组号,不能与已有组号冲突,如果没有设置会自动设置组号;parameter_list 为重做日志文件的存储参数列表,如文件初始化大小 size

alter database add logfile group 4('D:\test1.log','D:\test2.log') size 10M;

重做日志文件组可以添加新成员

alter database add logfile member ... to group group#
alter database add logfile member 'D:\test1.log','D:\test2.log' to group 4;

删除重做日志文件

删除重做日志文件成员

alter database drop logfile member logfile_list
alter database drop logfile member 'D:\test1.log','D:\test2.log';

删除重做日志文件组

alter database drop logfile group group#
alter database drop logfile group 4;

Oracle 数据库至少要保留两个重做日志文件组;只能删除处于 Inactive 状态的重做日志文件组,如果要删除处于 Current 状态的组,需要切换到 Inactive 状态;如果数据库处于归档模式,还需确定被删除组已经归档

删除重做日志文件以及组只是从数据字典和控制文件中删除,还需在操作系统中进行手工删除

清空重做日志文件

实际上是将重做日志文件的内容清空,如果组成员只有一个可以选择直接清空文件成员,如果成员数量超过一个可以选择直接清空组

//清空文件
alter database clear logfile 'D:\test.log';
//清空组
alter database clear logfile group 4;

修改重做日志文件

alter database rename file old_filelist to new_filelist

其中 old_filelist 为旧的文件位置,new_filelist 为新的文件位置,需手工复制源文件到新的存储位置,同时修改文件名称

alter database rename file 'D:\test.log','D:\test2.log' to 'D:\test11.log','D:\test22.log';

重做日志文件切换

数据库在运行过程中,当处于 Current 状态的组写满时会自动进行日志文件切换,也可以根据需要进行手动切换

alter system switch logfile;

该语句不需要指定任何参数

查看重做日志文件信息

可以通过查询与重做日志文件相关的一系列动态性能视图获得重做日志文件信息

  1. v $ log:包含控制文件中的重做日志文件信息
  2. v $ logfile:包含重做日志文件组的文件成员信息
  3. v $ lof_history:包含重做日志文件组的历史信息

归档重做日志文件

对重做日志文件进行备份,重做日志文件如果不进行归档操作,已保存日志记录在进行日志文件切换时将会被覆盖,这样当数据库故障时将无法恢复到出现故障前任一时间点的状态

设置日志归档模式

首先通过 v$database 视图或 archive log list 命令查看当前数据库的归档模式,然后将数据库启动到 mount 状态后通过 alter database archivelog|noarchivelog 将数据库设为归档或非归档模式,最后打开数据库新的日志归档模式即可生效

如果需要归档重做日志文件,除了设置数据库为归档模式外,还需要设置归档位置,即归档重做日志文件的存储路径,Oracle 数据库提供了多个初始化参数可以设置归档位置

  1. log_archive_dest:指定主归档位置,只能存储本地路径
  2. log_archive_duplex_dest:用于指定次归档位置,只能存储本地路径
  3. log_archive_dest_n:指定多个归档位置,该参数不仅可以配置本地路径,还可以配置远程存储位置

以上这些初始化参数均为动态参数,可以通过语句 alter system set 设置。log_archive_dest_n 不能与 log_archive_dest 以及 log_archive_duplex_dest 同时设置使用

查看归档信息

除了使用 archive log list 外,也可以通过查询归档信息相关的一系列动态性能视图获得数据库详细归档信息

  1. v $ database:查询数据库是否处于归档模式
  2. v $ archive_log:查询控制文件中所有已归档的日志信息
  3. v $ archive_dest:查询所有归档位置信息
发布了19 篇原创文章 · 获赞 7 · 访问量 5937

猜你喜欢

转载自blog.csdn.net/CSDN_handsome/article/details/103473987