Maison > Article > base de données > Data Guard Service 相关介绍
使用ARCH进程传递最大问题在于:Primary Database 只有在发生归档时才会发送日志到Standby Database。如果Primary Database 异常
Data Guard Services
以下的三部分组成Data Guard的日志数据传输、日志数据应用以及改变数据库角色:
a)、日志传输服务(Redo Transport Services)
b)、日志应用服务
c)、角色转换
1、Redo Transport Services(日志传输服务)
控制生产数据库自动将redo data发送至一个或多个归档地址
1.1、使用ARCH进程
用ARCH模式传输不写Standby Redo logs,直接保存成归档文件存放于Standby端。
说明:
逻辑Standby接收后将其转换成SQL语句,在Standby数据库上执行SQL语句实现同步,这种方式叫SQL Apply。
物理Standby接收完Primary数据库生成的REDO数据后,以介质恢复的方式实现同步,这种方式也叫Redo Apply。
缺点:使用ARCH进程传递日志有一个问题,即只有primary database归档以后才会传送日志到 standby database。这就导致,如果primary database异常宕机,联机日志中的redo内容就会发生丢失,所以要避免这种数据丢失,我们则要使用LGWR,而使用LGWR又分为SYNC(同步)和ASYNC(异步两种方式)。Primary database 缺省使用ARCH进程。
使用ARCH进程传递最大问题在于:Primary Database 只有在发生归档时才会发送日志到Standby Database。如果Primary Database 异常宕机,联机日志中的Redo 内容就会丢失,因此使用ARCH 进程无法避免数据丢失的问题,要想避免数据丢失,就必须使用LGWR,而使用LGWR 又分SYNC(同步)和ASYNC(异步)两种方式。
1.2使用LGWR 进程的SYNC 方式
1)Primary Database 产生的Redo 日志要同时写道日志文件和网络。也就是说LGWR进程把日志写到本地日志文件的同时还要发送给本地的LNSn进程(Network Server Process),再由LNSn(LGWR Network Server process)进程把日志通过网络发送给远程的目的地,每个远程目的地对应一个LNS进程,,多个LNS进程能够并行工作。
2)LGWR 必须等待写入本地日志文件操作和通过LNSn进程的网络传送都成功,Primary Database 上的事务才能提交,这也是SYNC的含义所在。
3)Standby Database的RFS进程把接收到的日志写入到Standby Redo Log日志中。
4)Primary Database的日志切换也会触发Standby Database 上的日志切换,即Standby Database 对Standby Redo Log的归档,然后触发Standby Database 的MRP或者LSP 进程恢复归档日志。
因为Primary Database 的Redo 是实时传递的,于是Standby Database 端可以使用两种恢复方法:
实时恢复(Real-Time Apply):只要RFS把日志写入Standby Redo Log 就会立即进行恢复;
归档恢复:在完成对Standby Redo Log 归档才触发恢复。
Primary Database默认使用ARCH进程,如果使用LGWR进程必须明确指定。使用LGWR SYNC方式时,可以同时使用NET_TIMEOUT参数,这个参数单位是秒,代表如果多长时间内网络发送没有响应,LGWR 进程会抛出错误。示例如下:
alter system set log_archive_dest_2 = 'SERVICE=db_phystdby LGWR SYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=PHYSTDBY NET_TIMEOUT=30' scope=both;
相关参考:
Oracle Data Guard 重要配置参数
基于同一主机配置 Oracle 11g Data Guard
探索Oracle之11g DataGuard
Oracle Data Guard (RAC+DG) 归档删除策略及脚本
Oracle Data Guard 的角色转换
Oracle Data Guard的日志FAL gap问题
Oracle 11g Data Guard Error 16143 Heartbeat failed to connect to standby 处理方法