DATAGUARD配置参数详细解释DB_NAME只需注意DataGuard的主备各节点instance使用相同的db_name即可。
推荐与service_name一致。
DB_UNIQUE_NAMEPrimary与Standby端数据库的唯一名字,设定后不可再更改。
注意:如果主备db_unique_name不一样,需要与LOG_ARCHIVE_CONFIG配合使用db_unique_name并未规定需要与数据库service_name一致,可以自定义任意名称。
LOG_ARCHIVE_CONFIG列出主备库上的DB_UNIQUE_NAME 参数。
默认情况下,定义该参数能确保主备库数据库能够互相识别对方Primary与Standby端的db_unique_name不一致时如在主备库db_unique_name不一致的情况下未配置LOG_ARCHIVE_CONFIG则会出现如下报错ORA-16057: DGID from server not in Data Guard configuration原因:主库没有设置参数log_archive_config解决方法*.log_archive_config='dg_config=( Primary, Standby)'alter system set log_archive_config='dg_config=( Primary, Standby)' scope=both; Primary与Standby端的db_unique_name一致时LOG_ARCHIVE_DEST_1本地归档路径。
Primary与Standby需要定义各自的online redo log的归档地址,以系统实际的存放路径为准。
格式如下:Primary Site:*.LOG_ARCHIVE_DEST_1='LOCATION=/arch/ VALID_FOR=(ALL_LOGFILES,ALL_ROLES) 'Standby Site:*.LOG_ARCHIVE_DEST_1='LOCATION=/stdby/ VALID_FOR=(ALL_LOGFILES,ALL_ROLES) '注意:在LOG_ARCHIVE_DEST_n设置DB_UNIQUE_NAME表示该参数在DB_UNIQUE_NAME指定的数据库上生效,设置为本地的db_unique_name。
以priamry端为例,格式如下:*.LOG_ARCHIVE_DEST_1='LOCATION=/archivelog/ VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=Primary'这样配置的意义为:在数据库Primary上log_archive_dest_1对主备库上的联机日志都有效,这里的 db_unique_name可以省略LOG_ARCHIVE_DEST_2该参数仅当数据库角色为primary时生效,指定primary归档redo log到该参数定义的standby database上。
log_archive_dest_2可以说是dataguard上最重要的参数之一,它定义了redo log的传输方式(sync or async)以及传输目标(即standby apply node),直接决定了dataguard的数据保护级别。
格式如下:Primary Site:*.LOG_ARCHIVE_DEST_2='SERVICE=DR2 lgwr async VALID_FOR=(ONLINE_LOGFILES, PRIMARY_ROLE) 'Standby Site: (switch over后生效)*.LOG_ARCHIVE_DEST_2='SERVICE=DR1 lgwr async VALID_FOR=(ONLINE_LOGFILES, PRIMARY_ROLE) '注意:LOG_ARCHIVE_DEST_2参数里定义的service值,比如DR1,是tnsnames.ora文件里定义的Oracle Net名称。
有时会在LOG_ARCHIVE_DEST_2定义DB_UNIQUE_NAME的值,当前节点设置的均为另一端数据库的db_unique_name。
以primary端为例,格式如下:*.LOG_ARCHIVE_DEST_2='SERVICE=DR1 LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=Standby'这个参数的意义为:在数据库DR1上log_archive_dest_2对主库上的联机日志都有效关于valid_for参数,有如下解释:The redo_log_type keyword identifies the destination as valid for archiving to one of the following:ONLINE_LOGFILE:This destination is valid only when archiving online redo log files.STANDBY_LOGFILE:This destination is valid only when archiving standby redo log files.ALL_LOGFILES:This destination is valid when archiving either online redo log files or standby redo log files.The database_role keyword identifies the role in which this destination is valid for archiving:PRIMARY_ROLE:This destination is valid only when the database is running in the primary role.STANDBY_ROLE:This destination is valid only when the database is running in the standby role.ALL_ROLES:This destination is valid when the database is running in either the primary or the standby role.LOG_ARCHIVE_DEST_3该参数仅当数据库角色为standby时生效,定义primary database的日志写到standby database的standby redo log中。
Primary Site:*.LOG_ARCHIVE_DEST_3='LOCATION=/archivelog/standbylog/ VALID_FOR=(STANDBY_LOGFILES,STANDBY_ROLE) 'Standby Site:*.LOG_ARCHIVE_DEST_3='LOCATION=/arch/arch3/ VALID_FOR=(STANDBY_LOGFILES, STANDBY_ROLE)'注意:LOCATION定义的路径以本节点能读写的实际路径为准。
LOG_ARCHIVE_DEST_STATE_n设置为ENABLE,激活log_archive_dest_n定义的属性。
FAL_SERVER and FAL_CLIENT当Primary Database的某些日志没有成功发送到Standby Database,这时候发生饿了归档裂缝(Archive Gap)。
FAL是Fetch Archive Log的简写,它是dataguard主备之间GAP的处理机制。
当Primary Database的某些日志没有成功发送到Standby Database,这时候发生饿了归档裂缝(Archive Gap)。
Primary上不会有GAP,所以fal_server和fal_client也是只在standby上生效的参数,当然为了switch over的需要同样会在primary端进行预设置。
缺失的这些日志就是裂缝(Gap)。
Data Guard能够自动检测,解决归档裂缝,不需要DBA的介入。
这需要配置FAL_CLIENT, FAL_SERVER 这两个参数(FAL: Fetch Archive Log)。
从FAL 这个名字可以看出,这个过程是Standby Database主动发起的“取”日志的过程,Standby Database 就是FAL_CLIENT. 它是从FAL_SERVER 中取这些Gap, 10g中,这个FAL_SERVER可以是Primary Database,也可以是其他的Standby Database。
如:FAL_SERVER='PR1,ST1,ST2';FAL_CLIENT和FAL_SERVER两个参数都是Oracle Net Name。
FAL_CLIENT 通过网络向FAL_SERVER发送请求,FAL_SERVER通过网络向FAL_CLIENT 发送缺失的日志。
但是这两个连接不一定是一个连接。
因此FAL_CLIENT向FAL_SERVER发送请求时,会携带FAL_CLIENT参数值,用来告诉FAL_SERVER 应该向哪里发送缺少的日志。
这个参数值也是一个Oracle Net Name,这个Name是在FAL_SERVER上定义的,用来指向FAL_CLIENT.FAL参数定义的数据库名同样取自本地tnsnames.ora里配置的Oracle Net Service Name.其中DR1、DR2分别为主备库的网络服务名DB_FILE_NAME_CONVERTprimary与standby上diskgroup的名称或是数据文件的存放路径不一致的时候,需要定义该参数进行转换,否则standby apply后无法创建与primary一致的数据文件并报错。
db_file_name_convert 主数据库和备用数据库的数据文件转换目录对映(如果两数据库的目录结构不一样),如果有多个对映,逐一指明对映关系。
格式:*.db_file_name_convert=主数据库数据文件目录,备用数据库数据文件目录例如:Primary Site:*.db_file_name_convert='+DATAGRP/db/datafile/','+DG1/db/datafile/'或者*.db_file_name_convert='/u01/app/oradata/standby','/u01/app/oradata/primary'Standby Site:*.db_file_name_convert='+DG1/db/datafile/','+DATAGRP/db/datafile/'或者*.db_file_name_convert='/u01/app/oradata/primary','/u01/app/oradata/standby'其中+DG1/db/datafile/是primary dastabase上存放datafile的路径,+DATAGRP/db/datafile/是standby上存放datafile的路径多对多映射设定*.db_file_name_convert='/opt/oracle/oraInventory/oradata/oracle','/opt/oracle/oraInventory/oradata/standby','/home/ldai/testdb','/home/ldai/testdb/standby'注意:primary上的该参数仅在主备switch over后生效,格式应保持一致,比如"*.db_file_name_convert='+DG1/db/datafile','+DATAGRP/db/datafile/' ”,路径少了一个"/”,将导致standby apply失败。