Oracle Data Guard主要是通过为生产数据库提供一个或多个备用数据库(是产生数据库的一个副本),以保证在主库不可用或异常时数据不丢失并通过备用数据库继续提供服务。对于Oracle DG的配置,我们可以通过Grid Control来完成,也可以通过Data Guard Broker以及SQL*Plus来完成。对于前两者方式可以在图形界面上完成,操作简单。而对于使用SQL*Plus命令行方式,我们需要进行大量的配置,尤其是这其中的一些参数。本文主要描述配置Oracle Data Guard 的重要参数。下面关于Data Guard简称为DG。
1、DG的几类参数
配置DG时,有几种不同类型的参数,通常分为与角色无关的参数,主库角色参数,备库角色参数。
对于这些不同类型参数都应当给予正确的设置,否则DG无法正常运行或者无法正常实现角色转换。
注,对于主备库参数分类并不意味着这些参数只能在主库或备库设置,如有些参数发生切换的话,主备库都应当设置。
2、 与角色无关的参数
a、COMPATIBLE = release_number
这个用于设置版本兼容性参数,必须指定相同的值,否则,切换异常以及redo传输服务失败。
b、DB_NAME = database name
这个参数比较常见,任意一个数据库都必须有的数据库的名字。注,同一个DG中,所有角色的DB_NAME相同。
如 *.db_name='oradb'
c、DB_UNIQUE_NAME = Unique name for the database
数据库的唯一名称,与DB_NAME相对应,此是一个逻辑名称,对应于数据库的实例名,缺省情况下等于DB_NAME。
如果配置LOG_ARCHIVE_CONFIG,建议设置为一个唯一的值,在主备角色发生变化的情况下,该参数不会改变。
主库:*.db_unique_name='oradb'
备库: *.db_unique_name='oradbdg'
d、LOG_ARCHIVE_CONFIG = 'DG_CONFIG ( db_unique_name, db_unique_name, ... )'
该参数用于定义DG中所有有效的DB_UNIQUE_NAME名字的列表,以逗号分割,为DG提供安全性检查。建议始终配置该参数。
主库与备库端采用相同设置。
主库:*.log_archive_config='DG_CONFIG=(oradb,oradbdg)'
备库: *.log_archive_config='DG_CONFIG=(oradb,oradbdg)'
e、CONTROL_FILES = 'control_file_name', 'control_file_name', '...'
该参数用于定义控制文件所在的位置,根据主库与备库所在的路径作相应修改。可以参考: Oracle 控制文件
f、 LOG_ARCHIVE_MAX_PROCESSES =integer
该参数用于定义归档所使用的进程数。
在主库上,归档进程用于处理联机重做日志文件的归档以及处理到备库重做日志流的间隔。
在备库上,归档进程负责归档Standby Redo log,并将归档日志转发到级联备库。
建议该参数最小设置为4,其最大值为30
g、LOG_ARCHIVE_FORMAT=log%d_%t_%s_%r.arc
这个参数用于定义归档日志的格式
h、REMOTE_LOGIN_PASSWORDFILE = {EXCLUSIVE|SHARED}
该参数用于设置认证方式,建议设置参数值为EXCLUSIVE 或者SHARED,注意保证相同Data Guard配置中所有db 服务器sys密码相同。
关于这个参数,可参考:Oracle 密码文件
主库:*.REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE
备库: *.REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE
3、主库角色相关参数
a、LOG_ARCHIVE_DEST_n = {LOCATION=path_name | SERVICE=service_name, attribute, attribute, ...}
用于设置主库归档日志路径以及重做日志传输。对于DG环境中此参数设置较为复杂。有关归档问题请参考:Oracle 归档日志
如果启用了闪回区,对于本地归档则无需再设置。对于该参数可以设置10个可用目标,其中一个为本地归档。也即是可存在9个备用库。
该参数有众多特性,下面列出几个常用的。
SERIVCE: 用于指定备用数据库的TNSNAMES描述符,Oralce 会将重做日志传送到这个TNSNAMES指定的备库。
SYNC: 用于指定使用同步传输方式到备库。即LGWR进程需要等待来自LNS的确认消息后,然后告知客户端事务已提交。
最高可用性及最大保护模式下,至少有一个备用目标应指定为SYNC。
ASYNC:与SYNC相反,指定使用异步传输模式,此为默认的传输方法。
NET_TIMEOUT: 指定LGWR进程等待LNS进程的最大时间数,单位为秒(缺省30)。如果超出该值,则主库放弃备库,继续执行主库上的事务。
REOPEN:主库遇到备库故障后尝试重新连接备库所需等待的时间,单位为秒(缺省300)。
DB_UNIQUE_NAME:主库与备库连接时会发送自己的唯一名称,同时要求备库返回其唯一名称,并结合LOG_ARCHIVE_CONFIG验证其存在性。
VALID_FOR:定义何时使用(角色相关)LOG_ARCHIVE_DEST_n参数以及应该在哪类重做日志文件上运行。
可用日志文件类型:online_logfile,standby_logfile, all_logfiles
可用的角色类型:primary_role, standby_role, all_roles
主库:log_archive_dest_1='LOCATION=/u01/database/sybo3/arch db_unique_name=oradb valid_for=(ALL_LOGFILES,ALL_ROLES)';
备库: log_archive_dest_2='SERVICE=oradbdg ASYNC db_unique_name=oradbdg valid_for=(ONLINE_LOGFILES,PRIMARY_ROLE)';
log_archive_dest_3='SERVICE=oradbdg2 ASYNC db_unique_name=oradbdg2 valid_for=(ONLINE_LOGFILES,PRIMARY_ROLE)';
如果按上述设置则log_archive_config应设置为log_archive_config='DG_CONFIG=(oradb,oradbdg,oradbdg2)'
定义使用闪回区时归档的设置
log_archive_dest_1='LOCATION=USE_DB_RECOVERY_FILE_DEST db_unique_name=oradb valid_for=(ALL_LOGFILES,ALL_ROLES)'
-- Author : Robinson Cheng
-- Blog : http://blog.csdn.net/robinson_0612
b、LOG_ARCHIVE_DEST_STATE_n = {ENABLE|DEFER|ALTERNATE}
指定参数值为ENABLE,允许redo 传输服务传输重做日志数据到指定的路径。默认情况下为ENABLE。
4、备库角色相关参数
a、DB_FILE_NAME_CONVERT = 'location_of_primary_database_datafile','location_of_standby_database_datafile'
对于主库与备库在同一主机上或者是不同的主机且使用了不同的路径,该参数应当被设置。
当主库切换或发生故障后转移到备用数据库,该参数会执行转换并将其值强制写入到控制文件。
其次该参数也可用于RMAN做复制数据库时指定其数据文件的转换位置。参考: RMAN 数据库克隆文件位置转换方法
主库: /u01/database/oradb/oradata *.db_file_name_convert =('oradbdg','oradb')
备库: /u01/database/oradbdg/oradata *.db_file_name_convert =('oradb','oradbdg')
如果使用ASM,可以设置为*.db_file_name_convert =('+DATA','+RECOVERY')
b、LOG_FILE_NAME_CONVERT = 'location_of_primary_database_redo_logs','location_of_standby_database_redo_logs'
指明主数据库和备用数据库联机重做日志文件转换关系。其作用等同于DB_FILE_NAME_CONVERT
主库: /u01/database/oradb/redo *.db_file_name_convert =('oradbdg','oradb')
备库: /u01/database/oradbdg/redo *.db_file_name_convert =('oradb','oradbdg')
c、FAL_SERVER(Fetch Archive Log) = Oracle_Net_service_name
该参数定义为存在于备用服务器的TNS名称列表(指向主数据库和任意备用数据库)。该参数仅物理备用数据库有效。
主要是用于轮询查找丢失的重做日志间隔,并处理应用进程发布的任意未定间隔请求。
当物理备用数据库遇到重做间隔时无法连接到主库,也可从其它备库提取日志。
主库:*.FAL_SERVER=oradbdg (主库进行设置,是为了在切换后主备角色互换)
备库:*.FAL_SERVER=oradb
d、FAL_CLIENT = Oracle_Net_service_name
日志间隔请求着客户端名称,为TNSNAMES名称。FAL_SERVER上的归档进程可以反向连接请求者。该参数仅物理备用数据库有效。
该参数的值必须在主库的TNSNAMES文件中定义。
主库:*.FAL_CLIENT=oradb (主库进行设置,是为了在切换后主备角色互换)
备库:*.FAL_CLIENT=oradbdg
e、STANDBY_FILE_MANAGEMENT = {AUTO | MANUAL}
该参数仅适用于物理备用数据库。建议将其值设置为AUTO,这样当主库添加或删除数据文件时,会自动在备库上完成相应的更改。
主库:*.STANDBY_FILE_MANAGEMENT=AUTO (主库进行设置,是为了在切换后主备角色互换)
备库:*.STANDBY_FILE_MANAGEMENT=AUTO
更多参考
有关Oracle RAC请参考
使用crs_setperm修改RAC资源的所有者及权限
使用crs_profile管理RAC资源配置文件
RAC 数据库的启动与关闭
再说 Oracle RAC services
Services in Oracle Database 10g
Migrate datbase from single instance to Oracle RAC
Oracle RAC 连接到指定实例
Oracle RAC 负载均衡测试(结合服务器端与客户端)
Oracle RAC 服务器端连接负载均衡(Load Balance)
Oracle RAC 客户端连接负载均衡(Load Balance)
ORACLE RAC 下非缺省端口监听配置(listener.ora tnsnames.ora)
ORACLE RAC 监听配置 (listener.ora tnsnames.ora)
配置 RAC 负载均衡与故障转移
CRS-1006 , CRS-0215 故障一例
基于Linux (RHEL 5.5) 安装Oracle 10g RAC
使用 runcluvfy 校验Oracle RAC安装环境
有关Oracle 网络配置相关基础以及概念性的问题请参考:
配置非默认端口的动态服务注册
配置sqlnet.ora限制IP访问Oracle
Oracle 监听器日志配置与管理
设置 Oracle 监听器密码(LISTENER)
配置ORACLE 客户端连接到数据库
有关基于用户管理的备份和备份恢复的概念请参考
Oracle 冷备份
Oracle 热备份
Oracle 备份恢复概念
Oracle 实例恢复
Oracle 基于用户管理恢复的处理
SYSTEM 表空间管理及备份恢复
SYSAUX表空间管理及恢复
Oracle 基于备份控制文件的恢复(unsing backup controlfile)
有关RMAN的备份恢复与管理请参考
RMAN 概述及其体系结构
RMAN 配置、监控与管理
RMAN 备份详解
RMAN 还原与恢复
RMAN catalog 的创建和使用
基于catalog 创建RMAN存储脚本
基于catalog 的RMAN 备份与恢复
RMAN 备份路径困惑
使用RMAN实现异机备份恢复(WIN平台)
使用RMAN迁移文件系统数据库到ASM
linux 下RMAN备份shell脚本
使用RMAN迁移数据库到异机
有关ORACLE体系结构请参考
Oracle 表空间与数据文件
Oracle 密码文件
Oracle 参数文件
Oracle 联机重做日志文件(ONLINE LOG FILE)
Oracle 控制文件(CONTROLFILE)
Oracle 归档日志
Oracle 回滚(ROLLBACK)和撤销(UNDO)
Oracle 数据库实例启动关闭过程
Oracle 10g SGA 的自动化管理
Oracle 实例和Oracle数据库(Oracle体系结构)