重做日志管理

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
后台进程ARCn在日志 切换后自动完成 管理员权限,且数据库处于MOUNT或OPEN 状态时才能执行归档

手工归档时调用的SQL语句
ALTER SYSTEM ARCHIVE LOG ALL; ALTER SYSTEM ARCHIVE LOG NEXT;

重做日志的从产生到归档的过程
①服务器进程 拷贝 ② ② ② ②

在一组重做日志文件内可以创建多个日志文件成员,把它们分 布在不同的物理硬盘上,使它们互为镜像。
GROUP1
MENBER1_1
GROUP2
MENBER2_1
GROUP3
MENBER3_1
DISK 1
MENBER1_2
MENBER2_2
MENBER3_2
DISK 2

在写入时,LGWR将同步写入联机重做日志文件组内 的各个成员。
('D:\oracle\oradata\orcl\redo04-1.log','E:\oracle\orcl\redo04-2.log')
注意:在创建重做日志文件组时,用SIZE子句指定 重做日志文件的大小,而在添加重做日志文件 成员时则不需要指定。

添加重做日志文件成员
添加重做日志文件成员时,也需调用ALTER DATABASE语句。 例如,下面语句向第一组重做日志添加两个成员文件。


每当发生日志切换时,Oracle数据库赋予准备写入的重 做日志组一新的日志序列号,之后LGWR才开始写入 它。 日志序列号唯一地标识联机和归档重做日志文件。 查看日志序列号:

SQL*Plus命令 动态性能视图
SYS@orcl > archive log list

SYS@orcl > SELECT group#, sequence# FROM v$log;


重做日志文件的大小 ——最小长度为4MB,依据归档时单个存储介质的容 量。同组的成员文件的大小必须完全相同,不同组可 以不同。 重做日志文件的块大小 ——默认时等于磁盘的物理扇区大小(通常为512B, 大容量磁盘的扇区为4KB),Oracle 11.2版本开始,使 用BLOCKSIZE子句指定该块的大小。有效取值为512 、1024和4096。

清空重做日志文件内容
数据库打开期间,重做日志文件可能出现损坏,这样 就无法归档而最终会导致数据库操作停止。 执行ALTER DATABASE CLEAR [UNARCHIVED] LOGFILE语句重新初始化。 例如,下面语句清空组编号4的重做日志文件中的内容。
SYS@orcl > ALTER DATABASE CLEAR LOGFILE GROUP 4; 数据库已更改。

删除重做日志文件组

考虑以下限制:

一个实例至少需要两个重做日志文件组。 只有当重做日志文件组处于INACTIVE状态时才能删除。 启用归档模式后,在删除之前,要保证该组日志已归档。
例如,下面语句删除组编号为6的重做日志。 ALTER DATABASE DROP LOGFILE GROUP 6;

调用ALTER DATABASE语句,使用其RENAME FILE 子句重命名重做日志文件。
SYS@orcl > ALTER DATABASE 2 RENAME FILE 'E:\oracle\orcl\redo01-3.log' 3 TO 'F:\oracle\orcl\redo01-3.log';

添加重做日志文件组
使用ALTER DATABASE语句添加 例如,下面语句向orcl数据库添加一组重做日志文件,它 由两个成员文件组成,日志文件大小为50MB。

ALTER DATABASE orcl ADD LOGFILE SIZE 50M BLOCKSIZE 512 REUSE;
没有指定组编号
更改成UNUSED!

UNUSED:未使用过。新添加的重做日志文件组,或者 被清空之后的重做日志文件组处于该状态。
查询动态性能视图v$log SYS@orcl > SELECT group#,status FROM v$log;

归档进程与归档重做日志文件
Oracle数据库可以运行在以下两种模式下: ARCHIVELOG:归档模式 ——只有在原来的重做日志得到拷贝归档之后, LGWR才能重新使用该组重做日志文件。 NOARCHIVELOG:非归档模式 ——LGWR在需要重新使用重做日志文件时可以直接 覆盖原来的重做日志。
例如,下面语句删除第1组中的一个重做日志成员。 ALTER DATABASE DROP LOGFILE MEMBER 'F:\Oracle\orcl\redo01-3.log';
注意:⑴上面的操作仅修改控制文件的记录,没有从操作系统的文件系统 中删除该文件,要删除该文件,只能调用操作系统命令删除。 ⑵如果被删除的成员文件是组内最后一个,则不能调用上面的语句删除。

SYS@orcl > SHUTDOWN IMMEDIATE

用操作系统命令把需要移动到日志文件移动或复制到 目标位臵
MOVE E:\oracle\orcl\redo01-3.log F:\oracle\orcl\redo01-3.log

把数据库启动到mount状态
SYS@orcl > STARTUP MOUNT
重做日志管理
本章内容
重做日志的基本概念 重做日志的作用及其管理 归档重做日志管理

本章要求

理解重做日志的基本概念 掌握重做日志文件的工作方式 掌握日志文件组的管理 掌握数据库归档模式设置 掌握归档管理
1 重做日志的基本概念
重做日志的内容 重做日志的写入方式

1.1 重做日志的内容
打开数据库
SYS@orcl > ALTER DATABASE OPEN;

删除重做日志文件成员
删除日志文件成员时,要保证: 文件所在日志组的状态既不是CURRENT,也不是 ACTIVE。否则,需要执行强制日志切换才能删除。 删除日志文件后,数据库至少仍有两组日志文件,并 且每组中至少各有一个日志文件成员。
3 管理归档重做日志
设置Oracle数据库的归档日志位置 归档日志文件的命名方法 设置归档进程数量
用户内存区
重做日志



2 管理联机重做日志文件组及成员
重做日志文件组及成员的创建和删除 查看重做日志文件组及成员信息

2.1 查看重做日志文件信息

动态性能视图包括以下两种:

v$log:记录与重做日志文件组相关的信息,该信息取 自数据库的控制文件。v$log视图中各字段名称及其说 明如表5-1所示。
重做日 志缓冲 区

Oracle数据库以循环方式使用各组重做日志文件。 通常情况下,LGWR写满一组联机重做日志文件时自 动发生日志切换。 管理员可以通过以下方式强制要求Oracle数据库实例进 行日志切换。

执行命令——立即切换
ALTER SYSTEM SWITCH LOGFILE;

设置初始化参数ARCHIVE_LAG_TARGET,使Oracle实例定 期进行日志切换。


注意,无论添加、删除重做日志文件组还是重做日志成员 ,均需具有ALTER DATABASE系统权限。

规划重做日志需要考虑以下4个因素:


联机日志文件多路存储 ——同组成员放在不同的物理磁盘上,避免I/O错误、 文件崩溃等单点故障导致重做日志文件丢失。成员数 由MAXLOGMEMBERS决定。 重做日志文件组数量 ——最佳配臵是在不妨碍LGWR写入重做日志的前提 下越少越好。组数由MAXLOGFILES决定。
重做日志由重做记录(也被称作重做项)组成。 重做记录由一组修改矢量组成,每个修改矢量描 述数据库中单个数据块上所发生的改变。 记录的信息包括:


修改的SCN和时间戳; 产生这些修改的事务的标识号; 事务提交时的SCN和时间戳(如果事务已提交); 产生这些修改的操作类型; 被修改数据段的名称和类型。

LGWR在下面情况下把重做日志缓冲区内缓存的重做 记录写入联机重做日志文件:


用户提交事务时; 联机重做日志切换时; LGWR上次写入3s之后; 重做日志缓冲区达到三分之一满,或者缓存的重做日志达到1 MB时; DBWn把脏数据块写入数据文件之前。

每个数据库实例必须至少有两组联机重做日志文件, 并且以多路存储的方式组织。
列 名 GROUP# THREAD# SEQUENCE# BYTES BLOCKSIZE MEMBERS ARCHIVED STATUS FIRST_CHANGE# FIRST_TIME 描 述 重做日志文件组编号 日志线程编号 日志序列号 日志的字节长度 日志文件的块大小(512或4096) 日志组的成员数量 归档状态:YES(已归档)、NO(未归档) 日志组的状态,上一节已经介绍过 日志中的最低系统修改号(SCN) 日志中第一个SCN对应的时间

v$logfile:记录有关重做日志文件成员的信息,该视图 中各字段名称及其说明如表5-2所示。
列 名 GROUP# 描 述 所属重做日志文件组编号
日志成员的状态。成员的状态与日志组的状态 不同,它包括以下几种 INVALID:无法访问文件 STALE:文件内容不完整 DELETED:不再使用该文件 null:文件处于在用状态 日 志 文 件 的 类 型 : ONLINE ( 联 机 ) 或 STANDBY(备用) 重做日志成员的文件名 说明重做日志文件成员是否创建在快速恢复区
STATUS
TYPE
MEMBER IS_RECOVERY_DE ST_FILE
2.2 管理重做日志文件
用CREATE DATABASE语句创建数据库时,其 LOGFILE GROUP子句指出要创建的重做日志文 件组及成员。 数据库创建之后,则可根据需要调用ALTER DATABASE语句添加或删除重做日志文件组,或 者添加和删除各组内的重做日志文件成员数量。

查看Oracle数据库的运行模式

SQL*Plus命令ARCHIVE LOG LIST 查询动态性能视图v$database的log_mode列


日志切换时,归档进程将把填充过的联机重做日志文 件复制到指定的一个或多个位臵存储,为它们创建脱 机副本,这一过程被称作归档,重做日志文件的这些 脱机副本被称作归档重做日志文件。 归档分为自动归档和手工归档两种。

重做日志文件组的状态

ACTIVE:有效状态,指实例恢复时需要使用这组联机 重做日志文件。 CURRENT:当前状态,指LGWR当前正在写入这组联机 重做日志文件,实例恢复时也需要用到它们。 INACTIVE:无效状态,指实例恢复时不再需要这组重 做日志文件。 CLEARING:在执行ALTER DATABASE CLEAR LOGFILE语句后,系统正在清除重做日志文件中的内 容。注意:只能清除INACTIVE状态的日志文件,清除后日志状态
1.2 重做日志的写入方式

重做日志缓冲区

用户执行数据库操作时
数据高速缓 冲区 DML、DDL语 句修Βιβλιοθήκη Baidu数据库
批量写入
(DBWR)
数据文件
产生重做记录
重做记录
周期性写入
(LGWR)
重做日志文件
重做日志缓 冲区

Oracle把重做日志缓冲区看做一个圆形区域,进行循环 连续写入。

日志写入进程与联机重做日志文件
注意:在一组重做日志内,只要有一个成员可以正常写入,就不会 影响Oracle数据库的运行。

日志切换与日志序列号

日志切换指LGWR停止写入一组联机重做日志文件, 而开始写入下一组重做日志文件这一操作。
1, 4, 7, … 2, 5, 8, … 日志切换 重做日志文 件2 日志切换 日志切换 3, 6, 9, … 重做日志文 件3 LGWR 重做日志文 件1

ALTER DATABASE orcl
ADD LOGFILE MEMBER 'E:\oracle\orcl\redo01-2.log','E:\oracle\orcl\redo01-3.log'
TO GROUP 1;

移动、重命名重做日志文件成员
无论是移动还是重命名重做日志文件,它们的操作步 骤基本相同。 例如,移动重做日志文件。步骤如下: 关闭现有数据库
相关文档
最新文档