第四章 重做日志
1.基本概念
1. 重做线程(Redo Thread)
在OPS(Oracle Parallel Server)中,每个实例都有一套自己的重做日志文件。
重做线程与实例是一一对应的。
2. SCN(System Change Number)
SCN是用于标识数据库变化的惟一标识号,其数值是顺序递增的。
3. 重做入口(Redo Entry)
4. 日志序列号
日志序列号是重做日志的使用标识号。当进行日志切换时,日志序列会自动增一,并将其信息写入控制文件中。
当执行了resetlogs操作后,日志序列号自动复位为1;当数据库处于archivelog模式时,系统会将日志序列号作为归档日志名称的一部分;在恢复数据库时,系统正是按日志序列号来引用归档日志和重做日志的。
2.归化重做日志
1. 多元化重做日志
多元化重做日志即镜像日志成员,通过把同一个日志组的不同日志成员放到不同磁盘是一个好主意,避免磁盘损坏导致实例终止。
应该将使不同日志组成员个数保持相同。
2. 合理设置重做日志尺寸
必须合理设置重做日志尺寸,避免日志切换频繁增加检查点次数而降低系统性能。(20~30min切换一次为宜,过大的话有可能导致实例恢复时间太长)
同一日志组成员尺寸必须相同。
3. 选择合适的日志组个数
选择不会妨碍LGWR进程工作的最少日志组个数。
当警告文件和LGWR跟踪文件中出现:
checkpoint not complete或redo log group not archived时应该增加日志组。
3.日志切换
当日志组写满之后Oracle Server会自动进行日志切换;另外也可以通过alter system switch logfile进行强制日志切换
4.检查点
当启动Oracle Server时,后台进程SMON总会检查控制文件、数据文件和重做日志文件的一致性(即三种文件的SCN值是否相同)。
a.当数据文件、控制文件、重做日志文件的当前SCN值完全一致,系统会直接打开有数据文件和重做日志。
b.如果控制文件和数据文件的当前SCN值完全一致,并小于重做日志的当前SCN值,此时需要进行实例恢复(例如shutdown abort;突然断电等)
c.如果控制文件和数据文件的当前SCN值不匹配,则表示数据文件或控制文件存在损坏,此时就需要进行介质恢复,以恢复损坏的物理文件。
5.增加重做日志
1. 增加日志组
当警告文件出现了checkpoint not complete时,应该增加日志组。增加日志组的目的是为了确保DBWR进程和ARCH进程不会妨碍LGWR进程的工作,进而提高系统性能。
alter database add logfile
(''''E:\oracle\oradata\lgtest\newREDO01.LOG'''', ''''F:\oracle\oradata\lgtest\newREDO01.LOG'''') size 30m;
2. 增加日志成员
增加日志成员即多元化重做日志,避免某个日志组的某个成员损坏后系统不能正常运转。
Alter database add logfile member
‘F:\oracle\oradata\lgtest\newREDO02.LOG''''’ to group 2;
6.改变重做日志位置或名称
1. 复制重做日志到目标位置
copy E:\oracle\oradata\lgtest\newREDO01.LOG f:\ newREDO01.LOG
2. 改变控制文件所记载的重做日志指针
alter database rename file ‘E:\oracle\oradata\lgtest\newREDO01.LOG’
to ‘f:\ newREDO01.LOG’;
但是不能改变当前正在使用的日志组成员。
7.删除重做日志
1. 删除日志成员
alter database drop logfile member ''''F:\oracle\oradata\lgtest\newREDO01.LOG''''
不能删除日志组的惟一成员;
当数据库处于archivelog模式下,确保日志成员所在组已经归档;
不能删除当前日志组的日志成员
2. 删除日志组
alter database drop logfile group 3;
3. 清除重做日志
alter database clear unarchived logfile group 2;
8.相关的一些脚本
1. 获取重做线程信息
select thread#, groups, current_group#, sequence# from v$thread
2. 获取日志组信息或获取日志组的SCN信息
select * from v$log
[1] [2] 下一页 没有相关教程
|