DataGuard运行原理非常简单:传输日志、应用日志。下图表示了DG的基本架构
日志传输服务将主库产生的日志数据传到从库。
应用服务(Apply Service)验证日志数据,并且更新从库的数据文件。
主数据库的写进程更新数据文件,并不依赖于DataGuard架构。
当网络或者从库故障恢复时,DG自动重传已经被主库归档的日志数据。
日志传输服务Redo Transport Services
Redo Transport Services协调主从库之间的日志传输。当主库LGWR写日志时,Log Network Server (LNS)程序从Log buffer cache中读取日志数据,通过Oracle Net Services将数据传输到从库上。从库上的Remote File Server (RFS)接收传过来的日志。RFS将接收到的日志写到standby redo log file (SRL).在多从库环境下,主库为每个从库都启用一个独立的LNS进程,用来传输日志数据。
使用LNS进程,DataGuard支持两种日志传输方式:同步、异步。
同步日志传输Synchronous Redo Transport
Synchronous transport (SYNC) 也被称为"零数据丢失"。只有当LNS确认日志被传输到从库并且已经写入磁盘后,主库上的commit操作才会被认为成功。
Data Guard 日志传输进程架构