Data Guard 日志传输模式

1.概述

Data Guard支持两种使用LNSLog Network Server)进程的重做传输方法:同步(SYNC)和异步(ASYNC)。

传输进程架构:

2.同步传输

同步传输(synchronous transportSYNC),又称“零数据损失”方法,因为要等到LNS确认事务恢复所需的重做数据已被写入到备用库的磁盘上,才允许LGWR确认提交成功。如图:


 

 

1)当用户发出 commit命令后,将产生一条 redo record (也称作redo entry)放入SGA中的 redo buffer 中,后台进程LGWR将读取此redo record,将其写入online redo log file,然后等待从LNS进程传来的确认信息。

2)LNS进程同样从redo log buffer读取redo record,并将其通过Oracle Net Services传输给standby DB。在standby DB上的RFS后台进程将接收到的redorecord写入standbylogfile中。

3)当RFS确定写入所有的redo record到磁盘后,向primaryDB的LNS发送确认信息。当LGWR收到LNS转发的确认信息后,才返回commit成功的消息给用户。

3.异步传输

异步传输(asynchronous transport,ASYNC)与SYNC的不同之处在于,LGWR不必等待来自LNS的确认消息,而且 Data Guard 11g LNS直接读取redo buffer中的redo record。如果LNS赶不上进度LNS进程会平滑切换到从主数据库的ORL读取和发送(11g版本内增强了这一功能)。

4.自动间隔侦测

LNS进程停止将重做数据传输到备用数据库,而主数据库却就继续提交事务时,就会出现日志文件间隔,另外网络失效时也可能产生这种情况。在此状态下,主数据库LGWR进程继续写入到当前ORL,填满ORL后,会切换到下一组ORL,此时归档进程会在本地归档已满的ORL,这在繁忙的系统会出现很大的日志间隔。

在中断期间,Data Guard在主数据库上使用ARCH进程连续ping备用数据库来确定其状态。当还原与备用数据库的通信后,ARCH ping进行会查询备用控制文件(通过其RFS进程),来确定备用数据库从主数据库收到的最后一个完整日志文件。Data Guard确定需要哪些日志文件来重新同步备用数据库,然后立即开始使用其他ARCH进程传输相应文件。在接下来执行日志切换时,LNS会试图连接备用数据库,成功后开始传输当前的重做数据,而ARCH进程在后台处理间隔。上图的虚线表示传输和应用所需的重做来处理日志文件间隔。一旦备用应用进程能赶上当前重做记录的进度,应用进程就自动切换,不再读取归档重做日志,改而读取当前的SRL(若配置了Data Guard).

Data Guard 10g开始,主数据库的一个ARCH进程一直专门负责本地归档,从而确保在处理间隔期间,远程归档操作不影响主数据库的归档操作。

在主备数据库之间处于非同步状态的时间越久,故障发生时损失数据的风险越大。Data Guard运行时使用多个后台ARCH进程来快速处理间隔,与此同时,LNS进程像往常一样执行当前日志流的SYNCASYNC传输。

猜你喜欢

转载自buralin.iteye.com/blog/1833188