DG是dataguard,也叫standby,是Oracle提供的一种容灾解决方案,只有企业版可用,标准版是不能用的,DG最多可以有一个主节点,9个从节点。可分为逻辑和物理两类,这里注意区分一下,逻辑的是通过redo转换成SQL语句,然后再standby上执行该SQL语句实现的同步,物理standby是接受主节点的redo数据后,以介质恢复的方式进行同步,这是这两者的本质区别。
DG的三种模式:
最大保护:主节点事务提交前,redo写入在线日志,而且从节点也要写入到standby redolog中,并且保证在从库中至少一个节点可用,在主节点才提交事务,注意,最大保护模式,从节点故障,主库会被shutdown。
最高性能:这种模式,主节点随时提交事务,事务提交时,redo至少写入一个从节点,但是写入不一定同步。
最高可用性:这种模式和最大保护有点类似,不同的是,从库故障,主库不会shutdown,而是转为最高性能模式,从库恢复后,转回最高可用性模式。
物理standby只能read only打开,此时只接受redo,不应用redo。应用redo,就不能打开。11G,可以以open read only模式打开,继续应用redo.所以大部分时间,物理standby都是在mount状态。
逻辑standby正常情况下就是read write模式,而且由于是应用sql语句实现同步,所以物理结构可以不一致。
硬件以及操作系统需求:
主库和从库运行的操作系统平台必须相同,版本可以有差异,数据库安装路径可以不同。主从服务器的配置差异最好不要太大,要不切换角色的时候,配置差的切换后,性能会有影响。
主库必须是归档模式,并且force logging模式,从库可以是非force logging。一个主节点,可以有逻辑从节点,可以有物理从节点,但是时区和时间设置必须一致,否则同步会出现问题。
相关参数:
DB_NAME:DG中所有数据库都相同
DB_UNIQUE_NAME:为每一个数据库指定唯一的名称。
LOG_ARCHIVE_CONFIG:该参数用来控制从远端数据库接收或发送REDO数据,通过DG_CONFIG属性罗列同一个Data Guard中所有DB_UNIQUE_NAME(含Primary数据库和Standby数据库),以逗号分隔,SEND/NOSEND属性控制是否可以发送,RECEIVE/NORECEIVE属性控制是否能够接收。例如:log_archive_config='DG_CONFIG=(PRIMARY_P,STANDBY_S)'
LOG_ARCHIVE_DEST_n:归档文件的生成路径,例如:log_archive_dest_1='LOCATION=/opt/oracle/archive/ VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=PRIMARY_P'
LOG_ARCHIVE_DEST_STATE_n:指定参数值为ENABLE,允许redo 传输服务传输redo 数据到指定的路径,LOG_ARCHIVE_DEST_n对应使用。
FAL_SERVER:指定一个数据库SID,通常该库为primary 角色
FAL_CLIENT:指定一个数据库SID,通常该库为standby 角色
LOG_ARCHIVE_MAX_PROCESSES:指定归档进程数量,默认4.可以指定1-30.
STANDBY_FILE_MANAGEMENT:如果primary 数据库数据文件发生修改(如新建,重命名等)则按照本参数的设置在standby 中做相应修改。设为AUTO 表示自动管理。设为MANUAL表示需要手工管理.