standby redo log的作用

大家都知道dataguard有三种数据保护模式,最大保护模式,最高可用模式,最高性能模式.
在最大保护模式,最高可用模式中必须使用standby redo log.最高性能模式中,官方推荐也使用
standby redo log.那到底使用standby redo log和不使用有什么区别呢?

db Oracle 10.2.0.1 物理standby
/u09/standbyarchivelog 为standby_archive_dest的路径
/u09/archivelog 为log_archive_dest_1的路径

以下测试后结果:
---------1
主库log_archive_dest_2的配置:
log_archive_dest_2='service=dba01 arch ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=dba01'
是否使用standby redo log: no
产生的测试结果:
主库切换日志时,才会传已归档的日志到备库standby_archive_dest的路径,并使用mrp进程应用.
---------2
主库log_archive_dest_2的配置:
log_archive_dest_2='service=dba01 arch ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=dba01'
是否使用standby redo log: yes
产生的测试结果:
主库切换日志时,才会传已归档的日志到备库的standby redolog,并在log_archive_dest_1的路径中产生一个归档,并使用mrp进程应用.
----------3
主库log_archive_dest_2的配置:
log_archive_dest_2='service=dba01 lgwr ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=dba01'
是否使用standby redo log: no
产生的测试结果:
备库standby_archive_dest的路径中会多出一个归档文件去对应primary的当前日志文件,
mrp在主库进行日志切换时才应用此归档文件.
如果备库要failover,当前没有归档的日志文件不会被应用.
----------4
主库log_archive_dest_2的配置:
log_archive_dest_2='service=dba01 lgwr ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=dba01'
是否使用standby redo log: yes
产生的测试结果:
主库的当前日志会传到standby redo log中,归档时standby redo log归档到log_archive_dest_1的路径.
mrp在主库日志切换时才应用此standby redo log.
如果备库要failover,当前的standby redolog会被应用.

结论:
使用arch传输归档,有无standby redo log无差别,因为要传的日志都是归档日志.
使用logwr 传输归档,在没有standby redo log的情况下,如果备库执行failover,只会应用主库归档过的log,未归档的就算已经传到备库,也是不应用的;
使用logwr 传输归档,在有standby redo log的情况下,如果备库执行failover,不仅会应用归档过的log,未归档的standby redo
log也可以应用.这就减少了数据的丢失.我想这也是为什么最大保护和最高可用必须使用standby redo log的原因吧~

相关推荐