扩容oracle重做日志大小提升性能

Tue Jul 28, 2020

100 Words|Read in about 1 Min
Tags: Devops  

redo重做日志文件是Oracle数据库的非常重要的组成部分。当日志文件发生切换时(Log Switch),会触发一个检查点,那么日志文件的大小就和检查点的触发频率相关。更为频繁的检查点可以缩短数据库的恢复时间,但是过于频繁的检查点却会带来性能负担。所以如何合理地设置日志文件的大小也是数据库优化的一个重要内容。而且,如果日志文件意外损失或丢失,那么就会丢失数据,所以更大的日志文件可能意味着更多的数据损失风险。所以数据库的任何一个调整都需要慎重。

即使是Oracle公司,在对于日志的设置上,也是在不断调整,在大小、切换、恢复时间、数据损失等问题上,Oracle也在试图找到一个平衡点。

一般来说,在实际生产环境中,把Log Switch的时间控制在半小时左右即可。
对于通常的操作系统来说,日志文件的最大大小为2GB,在非常繁忙的业务系统中,由于受限于日志大小,调整、优化都只是一个选择而已。

从10g以后默认的redo log size都是50M 3组。日志文件的最大大小为2GB,在非常繁忙的业务系统中,由于受限于日志大小,调整、优化都只是一个选择。

Oracle修改redo log大小的方法总体来说主要是加入新的大的日志文件,然后手工切换检查点到新的日志组文件,最后删掉旧的小的日志文件。 目的:修改当前在线日志从默认50M增加至512M。
下面记录我们为一客户做重做日志扩容的调整记录。

1.查看当前日志组的状态

select group#,members,bytes/1024/1024,status from v$log;

2.查看在线日志组的位置

select MEMBER from v$logfile;

3.新增group 4-6日志组,大小为512M

alter database add logfile group 4 ('/opt/app/oracle/oradata/orcl/redo04.log') size 512M;
alter database add logfile group 5 ('/opt/app/oracle/oradata/orcl/redo05.log') size 512M;
alter database add logfile group 6 ('/opt/app/oracle/oradata/orcl/redo06.log') size 512M;

4.切换当前日志到新的日志组

alter system switch logfile;   
alter system switch logfile;
让在线日志组,变成inactive的方式,执行如下命令:
alter system checkpoint;

5.删除旧的日志组

alter database drop logfile group 1;
alter database drop logfile group 2;
alter database drop logfile group 3;

6.查看修改后的日志组的状态信息:

select group#,members,bytes/1024/1024,status from v$log;

See Also

Tue Jul 28, 2020

100 Words|Read in about 1 Min
Tags: Devops