Oracle11g_DataGuard_架构

来源:互联网 发布:win10 linux双系统zr 编辑:程序博客网 时间:2024/05/21 19:22
1、为什么要使用Data Guard

使用Data Guard可以实现以下需求:

高可用性——通过快速故障转移,在生产库发生问题时,立刻将备库切换为主库。

数据保护——通过备库实现了异地容灾。

真实应用测试——可以在备库上测试更改带来的影响,随后又可将备库闪回进行反复测试。

报表及只读查询卸载——可以仅针对备库进行查询,以得到与查询生产库相同的结果。

备份卸载——可以仅针对物理备库进行备份,而不需要备份生产库。

2、重做传输服务

Redo Transport Service协调从主数据库到备用数据库的重做数据传输过程。一个独立的Data Guard进程从SGA的重做缓冲区中读取信息,交由Oracle Net服务传输到备用数据库,

这个进程成为Log Network Server(LNS)。 由LNS传输的重做记录在备用数据库由另一个Data Guard进程Remote File Server(RFS)接收。RFS在备用数据库上接收重做数据,

然后将其写入一个名为备用重做日志文件(Standby Redo Log,SRL)的顺序文件中。

2.1 同步重做传输

SYNC(synchronous transport)又称“零数据损失”方法,因为要等到LNS确认事务回复所需的重做数据已被写入备用站点的磁盘上,才允许LGWR认可提交操作。

过程如下:

用户提交一个事务,事务在SGA中创建一个重做记录。LGWR从日志缓冲区中读取重做记录,写入ORL,然后等待LNS的确认。

LNS从日志缓冲区读取相同的重做记录,通过Oracle Net服务传给备用数据库。备用数据库上的RFS接收重做数据,然后将其写入备用重做日志文件中。

当RFS从磁盘接收到一个写完消息时,会将一个确认消息传回给主数据库上的LNS进程,LNS接着通知LGWR传输完成。LGWR接着向用户发送提交确认信息。

在这一过程中可能会发生LNS wait on SENDREQ等待事件,可以在v$SYSTEM_EVENT视图中查询。

2.2 异步重做传输

ASYNC(asynchronous transport)与SYNC的不同之处在于,LGWR不必等待来自LNS的确认消息,无论主数据库与备用数据库相距多远,都几乎不会影响到主数据库的性能。

如果NLS赶不上进度,在将重做数据传给备用数据库前就回收了日志缓冲区,LNS将自行转为从ORL读取和发送重做数据。

当LNS赶上进度后,将自行转回到直接从日志缓冲区中读取/发送。

可以在视图X$LOGBUF_READHIST中跟踪日志缓冲区命中率。如果命中率低,代表LNS时常从ORL读取。

如果LNS还在发送ORL,而ORL已经经过了切换(归档),那么归档将由gap resolution进程负责传输。

此时,Data Guard在主数据库上使用ARCH进程连续ping备用数据库来确定其状态。如果通信可用,ARCH ping进程会查询备用控制文件,

来确定备用数据库从主数据库收到的最后一个完整日志文件。Data Guard确定需要哪些日志文件来重新同哦不备用数据库,然后立即开始使用其他

ARCH进程传输相应文件。在接下来执行日志切换时,LNS会试图连接备用数据库,成功后开始传输当前重做数据,而ARCH进程在后台处理间隔。

3、应用服务

3.1 Redo Apply

Redo Apply(物理备用数据库)维护的备用数据库是与主数据库逐块对应的精确物理副本。 当备用数据库上的RFS进程收到从主数据库传来的重做数据,然后将其写入SRL时,

Redo Apply使用介质恢复将SRL中的重做记录读入内存,接着直接在备用数据库上应用更改向量。

介质恢复并行执行,它包括一个介质恢复协调器(Media Recovery Coordinator)以及多个并行应用进程。

3.2 SQL Apply

SQL Apply(逻辑备用数据库)使用逻辑备用进程(Logical Standby Process,LSP)将更改协调应用于备用数据库。

组成SQL Apply的多个进程读取SRL,并通过将重做数据转换为逻辑更改记录(logical change record,LCR)来“挖掘”重做数据,然后构建SQL事务并将SQL应用于备用数据库。

4、Data Guard保护模式

4.1 最高性能

这种模式使用ASYNC重做传输,主数据库的性能和可用性不受重做传输的影响。该模式为默认模式。

4.2 最高可用性

这种模式使用SYNC重做传输,备库收到”重做数据已写入磁盘“确认消息所需的时间会影响主数据库的性能。但在主数据库出现故障时,通常可以百分之百地保证数据得到了保护。

另外,如果网络或备用数据库出现故障,主数据库仍然继续正常运行。最长等待秒数由参数NET_TIMEOUT的值决定,此后将放弃备用目标。

确切的讲,一旦超过NET_TIMEOUT秒,LGWR进程就与LNS进程中断连接,然后在无备用数据库的情况下确认提交并且继续处理事务。

在当前ORL变满后,LGWR会轮换到一个新ORL。在打开新ORL后,LGWR在必要时终止之前的LNS进程,启动一个新LNS进程并尝试与备用数据库建立新连接。如果成功,新ORL内容照常传输。如果LNS在NET_TIMEOUT

秒内还是没有成功连接,就如此循环。

4.3 最大保护

与最高性能类似,但是如果LNS不能确认备库已写入变更,那么主库将会不可用。


5、角色管理服务

5.1 切换

切换是计划内事件,切换可以尽量缩短停机时间。切换执行下面的步骤:

通知主数据库切换操作即将开始。

切断所有用户与主数据库的连接。

生成特殊重做记录来指示重做结束(End Of Redo,EOR)。

将主库转换为备用数据库。

备用数据库应用最后的EOR记录,确认没有丢失数据后,从备用转为主角色。

5.2 故障转移

故障转移用于描述因计划外事件导致的角色转换。这个过程与切换类似,不同之处在于主数据库没有机会写一条EOR记录。从备用数据库的角度看,重做传输突然间停止。如果故障

转移发生前在主数据库上启用了闪回数据库,它就可以闪回到备用数据库变为主数据库之前的SCN,然后转换为备用数据库。在使用Redo Apply时,通过在新主数据库上发出一下查

询来确定此SCN:

SELECT TO_CHAR(STANDBY_BECAME_PRIMARY_SCN)

FROM V$DATABASE;

DBA可选择手动故障转移或者自动故障转移。

6、Data Guard管理

可以使用三种工具管理Data Guard:

SQL*PLUS

Data Guard broker

Enterprise Manager

其中EM是通过DG broker来管理的。

0 0
原创粉丝点击