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表示需要手工管理.