在讨论如题所示的话题之前,需要明确的是如下关于日志切换的一个基本理念:太过频繁的日志切换操作是对系统性能不利的。
具体的原因如下:
在做日志切换时,Oracle会不可避免的触发检查点。而当检查点发生的时候,数据库的后台进程会将已经修改过的数据块写入磁盘,这个过程涉及到的IO操作,会降低数据库的效率。

但同时,也不能因为磁盘IO的操作会降低效率,而阻止这件事情的发生。因为,如果联机重做日志文件没有日志切换,则在发生故障的时候,包含恢复操作所需事务记录的当前联机重做日志会出现介质失效。这种情况下,将丢失没有归档的事务(被修改的数据)。

因此,对于联机重做日志的规划很重要。
这部分包括:联机重做日志组的个数、每个联机重做日志组中的成员个数、联机重做日志文件的大小、日志切换的时间间隔,…等。

在本文,主要描述如何合理的设置REDO LOG的日志文件的大小。
——————————————————

通过查询v$instance_recovery的optimal_logfile_size,你可以获得关于重做日志文件需要设置为多大尺寸为好的参考建议值。
代码:
select optimal_logfile_size from v$instance_recovery;

有时候,查询该值,你会遇到结果为空的现象,如下:

这个原因是,你需要为数据库设置fast_start_mttr_target的值,以便数据库的Advisor可以计算出optimal_logfile_size的大小:

以上值的单位为:MB。

Oracle官方的建议是:
所有联机重做日志文件的大小都不得低于OPTIMAL_LOGFILE_SIZE给出的值。
——————————————————
Ending。

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

隐藏
变装