1.1 概述
DG的运行遵循一个简单的原则:传输重做数据(redo),然后应用重做数据。重做数据中包括Oracle数据库恢复数据库事务需要的所有信息。生产数据库(即主数据库)将重做数据传输给一个或者多个独立副本(即备用数据库),备用数据库处于连续的恢复状态,验证并应用重做数据,从而与主数据库保持同步。如果因网络中断或者备用数据库故障导致主备连接中断,DG自动重新同步备用数据库
以下概括DataGuard传输-应用架构
1 生成重做数据时,重做传输服务将重做数据从主数据库传输到备用数据库(LNS)
2 应用服务验证重做数据并更新备用数据库文件。
3 独立于dg,数据库写进程更新主数据库数据文件。
4 在网络中断或备用数据库停运后,DATAGURAD使用已在主数据库上归档的重做数据arch ping自动同步备用数据库。
1.2 重做传输服务
DG重做传输服务协调从主数据库到备用数据库的传输过程,同时主数据库的LGWR进程将重做数据写入到自己的ORL中,一个独立的数据库进程从SGA的日志缓冲区读取信息,交由Oracle net服务传输到备用数据库,这个进程叫做Log Network Server(LNS)。
DG的灵活架构允许将重做数据从一个数据库直接传给一个或者多个(最多9个)备用数据库。DG与RAC完美的集成在一起,一个RAC服务有两个或者更多的服务器节点,每个节点运行着自己的实例,共享访问一个Oracle数据库。主数据库和备用数据库都可以是RAC环境。每个活动的数据库实例都生成自己的重做线程并且拥有相应的LNS进程,后者将数据传输给备用数据库。
DG的每个实例的LNS进程传输属于自己thread的重做数据,在备用数据库由另一个DG进程(Remote File Server RFS)接收重做数据,RFS在备用数据库上接收重做数据,然后将其写入一个名为备用日志(SRL)的顺序文件中,在多路备用库中,主数据库独立LNS进程针对每个备用数据库传输,例如配置了3个备用数据库,每个数据库实例对应3个LNS进程。
DG支持两种使用LNS进程的重做传输方法:同步(SYNC)异步 (ASYNC)
1.2.1 同步传输服务
同步传输服务 sync,又称0数据丢失模式,因为要等到LNS确认事务恢复所需要重做数据已经写入到SRL才允许主数据库提交成功。
但是根据可用模式的不一样 SYNC也有不同的处理方式,
一个错误观点:LRWR进程将重做数据传输到备用数据库,事实并非如此,DG环境的LNS服务进程管理所有同步和异步的重做传输,11G开始传输定义为SYNC或者ASYNC不像以前的LGWR SYNC, LGWR ASYNC就是为了消除这个观点。
以下为同步整个过程:
1 用户提交一个事务,事务在SGA中创建一条重做记录。LGWR从日志缓冲区中读取重做记录,吸入ORL,然后等待SRL确认。
2 LNS从重做日志缓冲区读取相同的的重做记录,通过Oracle Net服务传输给备用数据库。备用数据库RFS服务接收重做数据并将其写入SRL。
3 当RFS从磁盘接收到一个写消息时候,会将确认消息返还给LNS,LNS通知LGWR写入完成,事务提交完成。
弊端
虽然SYNC模式可以确保数据库得到完全的保护模式,但是性能降低很明显,收到以下因素影响:
1 重做-写入大小
2 可用的网络带宽
3 往返网络延迟
4 备用数据库SRL写入性能。对应的等待为LNS wait on SENDREQ.
1.2.2 异步传输服务