redo重做日志文件是Oracle数据库的非常重要的组成部分。当日志文件发生切换时(Log Switch),会触发一个检查点,那么日志文件的大小就和检查点的触发频率相关。更为频繁的检查点可以缩短数据库的恢复时间,但是过于频繁的检查点却会带来性能负担。所以如何合理地设置日志文件的大小也是数据库优化的一个重要内容。而且,如果日志文件意外损失或丢失,那么就会丢失数据,所以更大的日志文件可能意味着更多的数据损失风险。所以数据库的任何一个调整都需要慎重。
即使是Oracle公司,在对于日志的设置上,也是在不断调整,在大小、切换、恢复时间、数据损失等问题上,Oracle也在试图找到一个平衡点。一般来说,在实际生产环境中,把Log Switch的时间控制在半小时左右即可;对于通常的操作系统来说,日志文件的最大大小为2GB,在非常繁忙的业务系统中,由于受限于日志大小,调整、优化都只是一个选择而已。
Oracle版本 | 缺省的redo log file大小(单位:MB) |
8i | 1 |
9iR2 | 100 |
10gR1 | 10 |
10gR2 | 50 |
11g | 50 |
以通用的Oracle10.2.0.4版本为例, Oracle建库 的时候自动创建 3 个日志文件组,每个日志文件组包含一个日志文件,初始大小 50M ,在实际运行过程中可能切换频繁导致性能下降 ,这时候可以增大其大小,方法如下: 加入新的大的日志文件,然后删掉旧的小的日志文件 。例如,现有三个日志组,每个组内有一个成员,每个成员的大小为50MB,现在要把此三个日志组的成员大小都改为100MB,下面我将演示一下操作过程。
1.查看现有日志组及其文件大小;
点击(此处)折叠或打开
- SQL>
- SQL> select group#,sequence#,status,bytes/1024/1024 from v$log;
-
- GROUP# SEQUENCE# STATUS BYTES/1024/1024
- ---------- ---------- ---------------- ---------------
- 1 7 INACTIVE 50
- 2 8 INACTIVE 50
- 3 9 CURRENT 50