Data Guard Services

Data Guard Service 相关介绍_第1张图片

以下的三部分组成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 方式

1Primary Database 产生的Redo 日志要同时写道日志文件和网络。也就是说LGWR进程把日志写到本地日志文件的同时还要发送给本地的LNSn进程(Network Server Process),再由LNSnLGWR Network Server process进程把日志通过网络发送给远程的目的地,每个远程目的地对应一个LNS进程,多个LNS进程能够并行工作。

2LGWR 必须等待写入本地日志文件操作和通过LNSn进程的网络传送都成功,Primary Database 上的事务才能提交,这也是SYNC的含义所在。

3Standby DatabaseRFS进程把接收到的日志写入到Standby Redo Log日志中。

4Primary 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;

1.3使用LGWR进程的ASYNC 方式

使用LGWR SYNC方法的可能问题在于,如果日志发送给Standby Database过程失败,LGWR进程就会报错。也就是说Primary DatabaseLGWR 进程依赖于网络状况,有时这种要求可能过于苛刻,这时就可以使用LGWR ASYNC方式。它的工作机制如下:

1 Primary Database 一段产生Redo 日志后,LGWR 把日志同时提交给日志文件和本地LNS 进程,但是LGWR进程只需成功写入日志文件就可以,不必等待LNSn进程的网络传送成功。

2 LNSn进程异步地把日志内容发送到Standby Database。多个LNSn进程可以并发发送。

3 Primary DatabaseOnline Redo Log 写满后发生Log Switch,触发归档操作,也触发Standby DatabaseStandby DatabaseStandby Redo Log 的归档;然后触发MRP或者LSP 进程恢复归档日志。

因为LGWR进程不会等待LNSn进程的响应结果,所以配置LGWR ASYNC方式时不需要NET_TIMEOUT参数。示例如下:

alter system set log_archive_dest_2 = 'SERVICE=db_phystdby LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=PHYSTDBY ' scope=both;

2、Log Apply Services (日志应用服务)

在备库上应用redo data来保持与主数据库事务的一致。可以应用归档日志文件,或real-time apply(实时应用)启用,用 standby redo log files(备用重做日志文件)

Standby Database RFSRemote File Server进程接收到日志后,就把日志写到Standby Redo Log或者Archived Log文件中,具体写入哪个文件,取决于Primary 的日志传送方式和Standby database的位置。如果写到Standby Redo Log文件中,则当Primary Database发生日志切换时,也会触发Standby Database上的Standby Redo Log 的日志切换,并把这个Standby Redo Log 归档。如果是写到Archived Log,那么这个动作本省也可以看作是个归档操作。

在日志接收中,需要注意的是归档日志会被放在什么位置:

1如果配置了STANDBY_ARCHIVE_DEST 参数,则使用该参数指定的目录。

2如果某个LOG_ARCHIVE_DEST_n 参数明确定义了VALID_FOR=(STANDBY_LOGFILE,*)选项,则使用这个参数指定的目录。

3如果数据库的COMPATIBLE参数大于等于10.0,则选取任意一个LOG_ARCHIVE_DEST_n的值。

4如果STANDBY_ARCHIVE_DEST LOG_ARCHIVE_DEST_n 参数都没有配置,使用缺省的STANDBY_ARCHIVE_DEST参数值,这个缺省值是$ORACLE_HOME/dbs/arc.

3、Role Transitions(角色转换)

改变数据库角色,从一个备份库到主库,或从一个主库到备库,使用switchover  failover操作。

Oracle数据库运行在primary standby两个角色中的一个。应用Data Guard,你可以使用switchover failover操作来改变一个数据库的角色。

Switchover 是一个primary database 和其一个standby database之间的人物。Switchover 确保无数据丢失。通常这样做的目的是为了维护主系统。在切换期间,primary database 转换为了standby 角色,standby 数据库则转变为primary角色。这种转换,而无需重新创建数据库。

Failover 是当住数据库不可以用。Failover只在primary database发生灾难性故障事故,failover可以将standby数据库过渡为一个primary角色。数据库管理员可以配置Data Guard来确保无数据丢失。