redo log & archive

在oracle当中,事务对数据库所做的修改以重做记录的形式保存在重做日志缓存中。

在事务提交时,由LGWR进程将缓存中该事物相关的重做记录全部写入重做日志文件。

这时,事务认为已经成功提交,这种机制称为‘快速提交


1.1.redo log结构

重做日志具有以下特征

a.记录对数据所做的更改

b.提供恢复机制

c.可以划分成组

d.至少需要两个组

日志组(redo log group)是一组相同的重做日志文件副本。组内的不同日志成员互为镜像,即每个成员都有相同的日志序列号和同样的大小。

当前日志序列号存储在控制文件和所有数据文件的头部

查询当前数据库重做日志文件的位置和名称

select * from v$logfile;

1.2.日志序列号

LGWR在以下情况写入

a.当食物提交时

b.当重做日志缓冲区被写满三分之一时

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

d.每隔3秒

e.在dbwn将数据库缓冲区将data buffer cache中的块写入数据文件之前

redo log file是以循环方式使用的。每个日志组用一个递增日志序列号来标识,每次重新使用日志时就会覆盖原来的序列号。

LGWR按顺序向联机重做日志组写入重做信息。一旦当前日志组被写满,LGWR就开始写入下一个组。

这成为日志切换(log swtch).日志切换的过程,oracle完成以下任务

a.日志序列号自动加1,并且将日志序列号联通scn信息写入到控制文件的日志历史记录中。

b.促使ckpt进程发生检查点,从而使得后台进程ckpt将检查点时刻的scn信息写入到控制文件

和数据文件头部,并促使dbwn将data buffer cache中的脏缓冲区写入到数据文件。

c.当数据库处于archivelog模式时,日志切换回促使arcn进程开始归档

除了日志自动切换外,在一些特定情况下,dba还可以强制系统进行日志切换,需要具有alter system权限

alter system awtch logfile

一般用于当日志组很大,需要很长时间才能写满的情况

查看日志状态

select group#,sequence#,members,status from v$log;

1.3.检查点

简要描述一下实例恢复。假定当前日志序列号为56,先前检查点时的scn号为3456231,并且

该scn好记录到了控制文件和数据文件头部,这时执行事务变化,并提交了事务,scn值变为了

3456239,如果此时系统断电,因为并未发生检查点操作,控制文件和数据文件头部的scn仍未3456231,而

重做日志文件为3456239,因为数据文件控制文件和日志文件的scn号不一致,在实例重启时会进行实例恢复

此时smon会将自动执行从3456321至3456239之间所有的事务变化。

1.3.1 生成检查点

checkpoint是一个数据库事件,他会同步所有数据文件,控制文件和重做日志文件。当ckpt发出检查点时

会执行以下两个任务

a.ckpt修改控制文件和数据文件头部,将当前最新的scn信息写入到这两种文件,从而使数据文件,控制文件和日志文件处于

一致状态,对于三者的状态有以下三种情况

*三种文件当前scn完全一致,无需恢复

*数据文件和控制文件一致但小于日志文件,需要实例恢复

*数据文件和控制文件scn不一致,则表示数据文件或控制文件存在损坏,需要介质恢复

b.促使dbwn开始工作,并将数据库dirty buffer写入到数据文件

检查点发生在一下情况

*每次日志切换

*使用normal,transational,immeidate选项关闭实例

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

*dba通过手工请求

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

1.3.2 强制检查点

为了降低实例恢复时间,必须要增加检查点次数

a.设置 fast_start_mttr_target,比如设置为300,则代表数据库需要实例恢复的时候,恢复的时间不能超过300秒

系统会根据300秒时间自动计算可以保留的脏块数目,如果超过则自动发出检查点操作

b.alter system checkpoint

手工执行


关于日志组过大或者切换时间过长的时候,如果当前日志组记录了90m的事务更改,此时突然断电,实例恢复时就需要

使用这90m文件进行恢复,需要较长的时间,所以应合理的设置日志组的大小和日志切换的时间周期

<think>嗯,用户问的是关于“redo设置”的含义用法,属于IT领域。首先,我需要确认“redo”在不同上下文中的含义。在数据库管理系统中,特别是像Oracle这样的关系型数据库,redo日志是非常关键的概念。用户可能指的是Oracle的redo日志设置,或者是其他系统或应用中的类似机制,比如日志记录或重做日志配置。 首先,我应该回忆一下数据库中的redo日志的作用。redo日志用于记录所有数据变更操作,确保事务的持久性恢复能力。当系统崩溃时,可以通过redo日志来重做已提交但未写入数据文件的事务,保证数据不丢失。因此,redo设置可能涉及日志文件的大小、数量、存储位置、归档模式等配置参数。 接下来,需要考虑用户可能的背景。用户可能是一名数据库管理员,或者正在学习数据库管理的开发人员。他们可能遇到性能问题,或者需要优化数据库的恢复机制,因此需要了解如何正确配置redo日志。此外,用户的问题可能涉及如何调整redo日志的大小组数,以平衡磁盘I/O系统恢复时间。 然后,我应该检查是否有其他场景中的“redo设置”。比如,在软件开发中,某些应用程序可能有自己的重做日志机制,或者在版本控制系统中,redo可能指某种操作。但根据常见的IT领域问题,最可能的还是数据库中的redo日志设置,尤其是Oracle的。 需要确保解释清楚redo日志的基本概念,包括其作用、组成部分(如日志缓冲区、日志文件组、归档日志),以及配置参数的影响。比如,日志缓冲区大小影响事务提交的速度,日志文件组的大小数量影响系统切换日志的频率恢复效率。此外,归档模式决定了是否保留历史日志,用于时间点恢复。 还要注意用户可能关心的最佳实践,比如如何合理设置日志文件的大小组数,避免日志切换过于频繁导致的性能问题,或者如何配置归档模式以支持备份恢复策略。同时,可能需要提到常见的配置参数,如LOG_BUFFER、LOG_FILE_SIZE、LOG_ARCHIVE_DEST等。 最后,生成相关问题时要覆盖不同方面,比如配置参数、性能优化、故障恢复、与其他日志机制的区别,以及实际应用中的最佳实践。这有助于用户全面理解redo设置的相关知识,并解决他们可能遇到的具体问题。</think>### redo设置的含义与用法 在IT领域(尤其是数据库管理中),**redo设置**通常指与**重做日志(Redo Log)**相关的配置参数,主要用于保障事务的持久性数据恢复能力。以下是其核心概念与用法: --- #### 1. **Redo Log的作用** - **事务持久性**:所有数据变更操作(如插入、更新、删除)会先记录到redo日志,再写入数据文件。即使系统崩溃,也能通过redo日志恢复未持久化的数据[^1]。 - **崩溃恢复**:数据库重启时,通过重放redo日志确保已提交事务的修改不会丢失。 --- #### 2. **Redo设置的组成部分** - **日志缓冲区(Redo Log Buffer)**:内存区域,临时存储事务生成的redo条目。通过参数`LOG_BUFFER`配置大小。 - **日志文件组(Redo Log Groups)**:物理文件,存储持久化的redo日志。通常需要多组文件循环使用,避免单点故障。 - **归档日志(Archive Log)**:若开启归档模式(`ARCHIVELOG`),redo日志会被备份,用于时间点恢复。 --- #### 3. **关键配置参数** | 参数 | 说明 | 示例值 | |---------------------|----------------------------------------------------------------------|-----------------| | `LOG_BUFFER` | 控制日志缓冲区大小,影响事务提交速度。 | `256M` | | `LOG_FILE_SIZE` | 单个redo日志文件的大小。过小会导致频繁切换,影响性能。 | `4G` | | `LOG_GROUPS` | 日志文件组的数量。至少需2组,建议3-5组以提高容错性。 | `3` | | `ARCHIVELOG` | 是否启用归档模式。开启后可支持完整备份与恢复。 | `ARCHIVELOG ON` | | `LOG_ARCHIVE_DEST` | 归档日志的存储路径。 | `/archive` | --- #### 4. **最佳实践** - **日志文件大小**:根据业务负载调整,避免频繁切换(如每小时切换1-2次)。 - **多组日志文件**:防止单组文件损坏导致数据丢失。 - **归档模式**:生产环境建议开启,支持时间点恢复。 - **监控日志切换频率**:通过数据库视图(如`V$LOG_HISTORY`)观察切换频率,优化性能。 --- #### 5. **示例场景** > 在Oracle数据库中,若事务提交缓慢,可能因`LOG_BUFFER`过小或日志文件组不足。通过增大缓冲区或添加日志组可缓解问题[^1]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值