欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

[Oracle] Data Guard 之 Redo传输详解

程序员文章站 2022-10-13 21:23:49
data guard主要提供两个服务:1)redo传输服务:即把primay端的redo日志传输到一个或多个standby目的地。2)redo应用服务:即在standby端...

data guard主要提供两个服务:
1)redo传输服务:即把primay端的redo日志传输到一个或多个standby目的地。
2)redo应用服务:即在standby端应用从primay端传输过来的redo日志。
本文先讲讲其中的redo传输服务。

1、使用arcn传输redo日志
默认情况下采用arcn传输redo日志,不过只有在最高性能模式下才可以使用arcn(具体可参考《[oracle] data guard 之 三种保护模式介绍》),采用arch传输redo日志的示意图如下:
[Oracle] Data Guard 之 Redo传输详解
其大致过程如下:
1)primay段arc0一旦完成日志切换,arc1就将新生成的归档日志传输到standby端;
2)standby端由rfs进程接受日志,如果配置了standby redo log,记录至standby redo log,等standby redo log做log switch形成归档日志,再应用归档日志做恢复;如果没有配置standby redo log,rfs进程接收到日志后,放到standby端归档目录下,standby再应用归档日志做恢复。

2、使用lgwr传输redo日志
使用lgwr进程和arcn有很大的不一样,最明显的区别是它不需要等primary完成日志切换后再传输,其示意图如下:

[Oracle] Data Guard 之 Redo传输详解

其过程大致如下:

1)一旦primary有redo日志产生,lgwr将触发lnsn进程传输redo只standby redo log;注意:这里不能由lgwr直接传输,因为整个数据库实例只有一个lgwr,为了保证它的主要性能不受影响,不能由它直接传输)

2)网络传输模式可以选择sync或async,sync是指当primary提交时, 必须得等redo传输至standby成功后,才能返回。所以如果设置sync,建议同时设置net_timeout参数,超时无响应,则返回错误。async是指primary提交是否成功和日志是否传输成功没有关系,这样对primary的性能影响最小。

3)standby端的rfs进程把redo写入standby redo log,如果开启了实时应用,就将redo应用至standby数据库,如果没有开启实时应用,等standby redo log归档后再应用到standby数据库。