从DG的架构图开始了解一下DG的各个组成部分:

DRAN架构示意图 dg架构_SQL



简单来看由三部分组成:主库,备库,中间层(各种服务+日志、归档文件),中间层我们放到后面说,先看一下主库和备库:

Primary Database


DG环境包含一个主库。 主库可以是单实例,也可以是RAC 集群。 备库至少有一个standby 数据库组成。 主备库之间通过oracle Net进行通信 ,主备库不受地理位置的限制。


Standby Databases



Standby 数据库与主库一致保持事务一致。一个主库可以对应多个备库。备库的种类在11g中有三种:



1.物理备库



2.逻辑备库



3.快照备库


 


物理standby(Physical standby database)


        物理standby是对主库进行physically identical copy。 这是一种Media recovery,是基于block-for-block的恢复。在数据块级别进行恢复,这种方式没有数据类型的限制,可以保证两个数据库完全一致。



        在Oracle 11g之前,standby 数据库只能在Mount 状态下进行恢复,也可以是打开,但只能已只读方式打开,并且打开时不能执行恢复操作。到了11g,standby 可以启动到read-only状态并同步,这样standby 数据库就可以用来进行一些数据查询操作,提高数据库的利用率。



逻辑standby(Logical standby database)



        逻辑standby 的同步使用的是SQL Apply。这种方式 像logminer挖掘日志,但是通过Logminer 技术,通过把日志内容还原成SQL 语句,然后SQL引擎执行这些语句,Logminer Standby不支持所有数据类型,可以在视图 DBA_LOGSTDBY_UNSUPPORTED 中查看不支持的数据类型,如果使用了这种数据类型,则不能保证数据库完全一致。




快照 standby(Snapshot Standby Database)


Snapshot standby 是Oracle 11g中的新特性,也是对standby database的一次升级。 Snapshot standby 和 物理standby,逻辑standby 一样,也会从主库接收归档文件,但是不同的是,snapshot standby 不会应用这些接收的归档。



Snapshot Standby Database和逻辑备库都建立在物理standby基础上, 如果我们想在standby 库上做一些测试,因为主库我们不能动,我们可以在备库测。 那么我们就可以把这个standby 切换成snapshot standby。 


切换语句如下:



SQL> alter database convert to snapshot standby;


 把snapshot standby 数据库打开,进行我们的测试。



SQL> alter database open;


执行命令将数据库从snapshot状态切换到之前的状态,如物理standby或者逻辑standby。



SQL> alter database convert to physical standby;


从snapshot standby的功能看来oracle是逐渐弱化逻辑备库的,在11g中使用物理备库和快照备库将是主流,顺带吐槽自己,每次发完都得重新修改几次,不是图片看不到就是格式发布后变得混乱 T_T