Oracle重做日志文件管理

  • 重做日志文件保存了用户对数据库所做的更新操作(DDL,DML),包含的主要信息是记录事务的开始和结事务中的每项操作的对象和类型、更新操作前后的数据值等。
  • 用户对数据库所做的修改都是在数据库的数据高速缓冲区中进行的(用户对数据的修改在写入数据文件之前要先写入日志),同时将产生的重做记录写入重做日志缓冲区。在一定条件下有DBWR进程将数据高速缓冲区中修改后的结果成批写回数据文件中,而重做日志文件中的重做记录由LGWR进程周期性的写入重做日志文件。

重做日志文件的工作原理

(1)每个数据路至少有两个重做日志文件,采用循环写的方式进行工作。当一个重做日志文件写满后,进程LGWR就会移到下一个日志,称为日志切换,日志序列号会自动增1,同时信息会写到控制文件。
日志高速缓冲区的内容达到1/3时,LGWR进程就会工作,LGWR进程就会将日志缓冲区中的内容写入到日志文件,假设有三个日志文件组logfile1,logfile2,logfile3。LGWR先将日志写入到logfile1,同时系统会给logfile1一个编号1,写满后就切换到logfile2,给logfile2一个编号2,写满后继续切换到logfile3,并分配一个编号3。写满后进程又会回到logfile1,并分配编号4,也就是说,每次在向一个日志文件中写数据时都会持续增加日志序列号,这个序列号是唯一存在的。

(2)为了保证LGWR进程的正常进行,通常采用重做日志文件组,每个组包含若干个完全相同的重做日志文件成员,这些成员文件相互镜像。有时候完成一个进程需要等待,等待的过程中通常为了使LGWR进程正常进行,减少磁盘的等待损耗,就会新建更多的日志文件组。一个重做日志文件组中一般含有多个相同的日志文件成员,这些成员也有不同的编号在这些不同编号的日志文件中是存在不同的磁盘的。为什么要放在不同的磁盘中?因为重做日志文件是为了保证数据库的备份与恢复的,为了使数据文件能得到恢复,但是如果重做日志文件本身遭到破坏,就可以采用刚刚所说的镜像文件,尽量创建更多的副本保证重做日志文件不受损失。所以通常重做日志文件组中包含有多个一模一样的日志文件成员,除了编号不同,内容都相同。

重做日志文件的状态

Current状态:正在被LGWR进程写入的重做日志文件的状态;
Active状态:正在被数据库实例用于数据库恢复的重做日志文件的状态;
Inactive状态:其他未被使用的重做日志文件状态
当前正在被LGWR进程写入日志记录的重做日志文件称为联机重做日志文件。

查看重做日志文件信息

V $ LOG:包含从控制文件中获取的所有重做日志文件组的基本信息。
V $ LOGFILE:包含重做日志文件组及其成员文件的信息。
V $ LOG_HISTORY:包含关于重做日志文件的历史信息。
例如
查看日志文件的组号,序列号,成员数,状态和归档状态,如图,Oracle默认创建三个重做日志文件组
在这里插入图片描述查看重做日志文件信息
在这里插入图片描述

创建重做日志文件

文件组:
可以使用ALTER DATABASE ADD LOGFILE GROUP语句为数据库创建重做日志文件组。
一个数据库中可以包含的重做日志文件组的最大数量是由控制文件中的MAXLOGFILES参数决定的。
文件成员:
可以使用ALTER DATABASE ADD LOGFILE MEMBER…TO GROUP语句为数据库重做日志文件组添加成员文件。一个重做日志文件组中可以拥有的最多成员文件数量是由控制文件中的MAXLOGMEMBERS参数决定的。

删除重做日志文件成员

可以使用ALTER DATABASE DROP LOGFILE MEMBER语句删除重做日志文件。
要删除的重做日志文件所属的重做日志文件组必须处于INACTIVE状态,且至少还有一个可用的重做日志成员文件。

删除重做日志文件组

可以使用ALTER DATABASE DROP LOGFILE语句删除重做日志文件组。
数据库中至少需要保留两个重做日志文件组,且要删除的重做日志文件组必须处于INACTIVE状态。

归档重做日志文件

前面说在写日志文件时文件组之间是切换的,当日志文件都写满然后循环写的时候,原来的数据会被覆盖。如果不对已经写好地日志文件归档的话就会丢失数据。重做日志文件归档是指将写满了的重做日志文件保存到一个或多个指定的离线位置,这些被保存的历史重做日志文件的集合称为归档重做日志文件。
根据是否对重做日志文件进行归档,数据库运行模式分为归档模式与非归档模式两种
查看数据库归档模式
在这里插入图片描述

改变数据库归档模式的步骤

关闭数据库
SHUTDOWN IMMEDIATE
设置归档目的地
归档目标有设置初始化参数LOG_ARCHIVE_DEST(主目标)和LOG_ARCHIVE_DUPLEX_DEST(辅目标),
设置初始化参数LOG_ARCHIVE_DEST_n(变量n取值为1-31,表示最多可以设置的归档目标数目其中1-10可以用于指定本地的或远程的归档目标,11-31只能用于指定远程的归档目标。
设置初始化参数LOG_ARCHIVE_DEST_n时,需要使用关键字LOCATIONSERVICE指明归档目标是本地的还是远程的。
可以使用关键字OPTIONAL(默认)或MANDATORY指定是可选归档目标还是强制归档目标。强制归档目标的归档必须成功进行,否则数据库将挂起。

将数据库启动到加载状态
STARTUP MOUNT
改变数据库归档模式
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE NOARCHIVELOG;
打开数据库
ALTER DATABASE OPEN
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值