Oracle Online redo log 深入理解(6)

SQL> select group#,member from v$logfile;
         
GROUP#  MEMBER                                       
---  ----------------------------------------------------------------
  3  /u01/oradata/WILSON/onlinelog/o1_mf_3_6bcsqtfj_.log           
  3  /u01/flash_recovery_area/WILSON/onlinelog/o1_mf_3_6bcsqtwv_.log
  2  /u01/oradata/WILSON/onlinelog/o1_mf_2_6bcsqs3t_.log           
  2  /u01/flash_recovery_area/WILSON/onlinelog/o1_mf_2_6bcsqstm_.log
  1  /u01/oradata/WILSON/onlinelog/o1_mf_1_6bcsqpty_.log           
  1  /u01/flash_recovery_area/WILSON/onlinelog/o1_mf_1_6bcsqqt0_.log
         
6 rows selected
SQL> alter database add logfile ('/u01/oradata/WILSON/onlinelog/redo4a.log', '/u01/flash_recovery_area/WILSON/onlinelog/redo4b.log') size 10m;
         
Database altered
         
SQL>  select group#, sequence#, bytes, members, status from v$log;
         
    GROUP#  SEQUENCE#      BYTES    MEMBERS STATUS
---------- ---------- ---------- ---------- ----------------
        1        217  52428800          2 INACTIVE
        2        218  52428800          2 CURRENT
        3        216  52428800          2 INACTIVE
        4          0  10485760          2 UNUSED
         
SQL> select group#,member from v$logfile;
GROUP# MEMBER                                                   
- ----------------------------------------------------------------
 3  /u01/oradata/WILSON/onlinelog/o1_mf_3_6bcsqtfj_.log           
 3  /u01/flash_recovery_area/WILSON/onlinelog/o1_mf_3_6bcsqtwv_.log
 2  /u01/oradata/WILSON/onlinelog/o1_mf_2_6bcsqs3t_.log           
 2  /u01/flash_recovery_area/WILSON/onlinelog/o1_mf_2_6bcsqstm_.log
 1  /u01/oradata/WILSON/onlinelog/o1_mf_1_6bcsqpty_.log           
 1  /u01/flash_recovery_area/WILSON/onlinelog/o1_mf_1_6bcsqqt0_.log
 4 /u01/oradata/WILSON/onlinelog/redo4a.log                     
 4 /u01/flash_recovery_area/WILSON/onlinelog/redo4b.log         
         
8 rows selected

3、关于redo log sizing

最后聊聊redo log的大小问题。在负载较高和投产的系统中,我们经常会遇到log过小引起的一系列问题。通过AWR报告和alert log,我们都可以发现这种现象的端倪。

如果系统在关键作业时生成的redo size峰值量很高,并且持续很长时间。我们在Alert log上可以看到频繁的online log切换,同时连带出现“check point not complete”或者“could not allocate log sequence”提示。说明日志切换过于频繁。

从AWR报告上,我们主要关注两个与redo log相关的事件:log file parallel write和log file sync。如果两个事件出现在top events中,作为dba和调试人员就需要注意了。

在Oracle的官方资料中,对redo log的大小设置也是以切换频率而定的,要求调整到15-20分钟进行一次切换。调整的手段主要是增加日志组数量和调大日志成员文件大小。这样,都可以给dbwr和arc进程更多的时间在后台进行数据写入和归档。

在实际中,笔者还要建议关注日志组成员的数目,我们对日志采用多路径冗余手段,是为了防止出现单磁盘文件以外损坏。但是,过多的日志成员数目也会带来性能瓶颈。笔者曾见过一个日志组成员数量是10个文件,散布在10个设备上。这样,就意味lgwr要写入十次才能将一个log entry写入,性能可想而知。

在oracle 10g中,官方提供了视图v$instance_recovery,也可以提供一定程度的log大小建议。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/416ee93b2e6d99130c5826eca336ff82.html