DataGuard参数配置详解(转载)

2024-05-27 20:48

本文主要是介绍DataGuard参数配置详解(转载),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

DB_NAME
只需注意DataGuard的主备各节点instance使用相同的db_name即可。推荐与service_name一致。

Primary Site  Standby Site
*.DB_NAME='DB'*.DB_NAME='DB’

DB_UNIQUE_NAME
Primary与Standby端数据库的唯一名字,设定后不可再更改。
注意:
如果主备db_unique_name不一样,需要与LOG_ARCHIVE_CONFIG配合使用
db_unique_name并未规定需要与数据库service_name一致,可以自定义任意名称。

Primary Site    Standby Site
*.db_unique_name='Primary’*.db_unique_name='Standb

LOG_ARCHIVE_CONFIG
列出主备库上的DB_UNIQUE_NAME 参数。默认情况下,定义该参数能确保主备库数据库能够互相识别对方

Primary与Standby端的db_unique_name不一致时

Primary SiteStandby Site
*.db_unique_name=Primary *.db_unique_name=Standby
*.LOG_ARCHIVE_CONFIG='DG_CONFIG=(Primary,Standby)'*.LOG_ARCHIVE_CONFIG='DG_CONFIG=(Primary,Standby)'

如在主备库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一致时

Primary SiteStandby Site
*.db_unique_name=test*.db_unique_name=test
*.LOG_ARCHIVE_CONFIG=''*.LOG_ARCHIVE_CONFIG=''

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.

Primary SiteStandby Site
*.fal_server='DR2’*.fal_server=' DR1 
*.fal_client='DR1'*.fal_client=' DR2'

其中DR1、DR2分别为主备库的网络服务名
DB_FILE_NAME_CONVERT
primary与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失败。这个参数仅对standby数据库有效
primary上执行create tablespace等add datafile操作时,无须自定义datafile的全路径名称,由数据库自动创建datafile即可。
LOG_FILE_NAME_CONVERT
同DB_FILE_NAME_CONVERT类似,定义主备log文件的存放路径转换。

STANDBY_FILE_MANAGEMENT

初始化参数STANDBY_FILE_MANAGEMENT作用于standby数据库 ,用来控制是否自动将Primary数据库增加表空间或数据文件的改动,传播到物理Standby数据库。该参数有两个值:
AUTO:如果该参数值设置为AUTO,则Primary数据库执行的表空间创建操作也会被传播到物理Standby数据库上执行。
MANUAL:如果设置为MANUAL或未设置任何值(默认值是MANUAL),需要手工复制新创建的数据文件到物理Standby服务器。
注意:STANDBY_FILE_MANAGEMENT参数特指Primary数据库端的表空间或数据文件创建,如果数据文件是从其他数据库复制而来(比如通过TTS传输表空间),则不管STANDBY_FILE_MANAGEMENT参数值如何设置,都必须同时手工复制到Standby数据库,并重建物理Standby数据库的控制文件。
在Primary数据库端删除表空间时,会影响到物理Standby端数据库的数据文件和表空间,初始化参数STANDBY_FILE_MANAGEMENT的属性值设置决定了该事件是否需要DBA介入。
当STANDBY_FILE_MANAGEMENT设置为AUTO。
SQL> ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO; 
System altered.
在Primary数据库端执行删除表空间的操作:
SQL> DROP TABLESPACE TEST INCLUDING CONTENTS AND DATAFILES; 
Tablespace dropped.
INCLUDING DATAFILES子句,在删除表空间时Oracle也将自动删除对应的物理文件。
将初始化参数STANDBY_FILE_MANAGMENT设置为AUTO,对于表空间和数据文件的操作无须DBA手工干预,物理Standby能很好地进行处理。
当STANDBY_FILE_MANAGEMENT参数设置为MANUAL时,即使DBA在Primary数据库端执行删除操作时加上了INCLUDING DATAFILES子句,Standby数据库仍然只会将表空间和数据文件从数据字典中删除,表空间涉及的物理文件仍需要手工删除。
对于文件系统,我们可以将初始化参数STANDBY_FILE_MANAGMENT设置为AUTO,但是对于裸设备,只能将该参数设置为MANUAL。
在Primary数据库端执行数据文件重命名操作:
如果Primary数据库重命名了一个或多个数据文件,该项修改并不会自动传播到Standby数据库。 就算设置了初始化参数STANDBY_FILE_MANAGEMENT等于AUTO也不行,要让Standby的数据文件与Primary保持一致,只能手工操作。
1、alter tablespace/datafile offline;
2、使用操作系统命令来拷贝
3、alter databaser rename datafile '....' to '...'
4、alter tablespace/datafile online;
5、确认STANDBY DB中所有归档已经apply
6、alter database recover managed standby database cancel停止redo apply
7、拷贝并重命名数据文件
8、alter database rename file '...' to '....';
9、alter databas recover managed standby database disconnect from session.
添加或删除Redologs文件
数据库调优时极有可能会涉及重置日志文件大小或增加删除日志组等操作,如果STANDBY_FILE_MANAGEMENT参数值设置为AUTO的话,这种操作也会被传播到物理Standby数据库。不过在一般情况下,你可以不管STANDBY_FILE_MANAGEMENT参数的设置,因为无论Primary端对日志组或日志文件的操作是否传播到物理Standby数据库,也不会影响到物理Standby数据库的运行,不过如果你不注意其中的关系,造成的影响可能会很深远。
通常建议当你在Primary数据库增加或删除Online Redologs时,一定记得手工同步相关物理Standby数据库中相关的设置,同时也要考虑好Standby Redologs与Online Redologs之间的关系,即保证Standby Redologs比Online Redologs要至少多一组。
注意的就是在Standby数据库端操作前务必将STANDBY_FILE_MANAGEMENT设置为MANUAL,如果物理Standby数据库的日志文件与Primary数据库路径不同的话,应该通过初始化参数LOG_FILE_NAME_CONVERT的设置,让其自动进行转换。
Standby redo log组数公式>=(每个instance日志组个数+1)*instance个数,例如
rac 2台机器 每台3组 则 standy 需8组,并且创建时要为每个实例建4组。一般来说,逻辑备库需要更多的redo组数,这是由于逻辑备库有自身的redo日志,而这些redo日志优先归档,故同等条件下逻辑备库的归档速度比物理备库的慢。
跨OPEN RESETLOGS的应用
在某些情况下,Primary数据库以RESETLOGS方式打开之后,也不会影响Data Guard的配置,Standby数据库无须人工参与,自动应用OPEN RESETLOGS的操作,继续接收并应用Primary数据库OPEN RESETLOGS之后产生的日志。
当然这是有条件的,并不是所有情况下都能这么智能。我们知道执行ALTER DATABASE OPEN RESETLOGS语句之后,数据库的INCARNATION被重置,也就是此时其Standby数据库的SEQUENCE序号也会从头开始设置。当然物理Standby数据库并不关注这一点,它只是忠实地紧跟Primary数据库的脚步,一步一步地执行Primary数据库曾经执行过的操作,因此当其接收到新的REDO数据时,就会自动应用这部分REDO数据。
图中显示了Primary数据库RESETLOGS操作对Standby的影响

Standby 数据库状态

Standby 数据库操作

解决方案
尚未应用RESETLOGS 之前的 REDO 数据自动应用REDO 数据无须手工介入
应用了RESETLOGS 之后的 REDO 数据,不过 Standby 数据库启用了 FRA可以回到应用RESETLOGS 之前的状态,不过需要 DBA 手工介入

手工FLASHBACK DATABASE 到应用 RESETLOGS 日志之前的状态

重启REDO 应用,以重新接收新的 REDO 数据

应用了RESETLOGS 之后的 REDO 数据,而且没有配置 FRA无法进行应用处理重建物理Standby 是唯一的选择

 

正常情况下这个逻辑没有问题,不过遇到Primary执行过OPEN RESETLOGS之后,又通过备份恢复到OPEN RESETLOGS之前的状态,视物理Standby的具体配置(配置方式决定了物理Standby是否有可能回到OPEN RESETLOGS之前的状态)的不同,情况可能会复杂很多。

参考至:http://java-beginner-liyun.iteye.com/blog/monthblog/2010-07?show_full=true
               http://www.linuxidc.com/Linux/2011-09/42721p3.htm
               http://www.cnblogs.com/sopost/archive/2010/01/30/2190114.html
               http://epub.itpub.net/6/5.htm

               http://wenku.baidu.com/view/deec7e29cfc789eb172dc8f5.html
本文原创,转载请注明出处、作者

如有错误,欢迎指正

邮箱:czmcj@163.com

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26851211/viewspace-755556/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/26851211/viewspace-755556/

这篇关于DataGuard参数配置详解(转载)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1008554

相关文章

windos server2022的配置故障转移服务的图文教程

《windosserver2022的配置故障转移服务的图文教程》本文主要介绍了windosserver2022的配置故障转移服务的图文教程,以确保服务和应用程序的连续性和可用性,文中通过图文介绍的非... 目录准备环境:步骤故障转移群集是 Windows Server 2022 中提供的一种功能,用于在多个

windos server2022里的DFS配置的实现

《windosserver2022里的DFS配置的实现》DFS是WindowsServer操作系统提供的一种功能,用于在多台服务器上集中管理共享文件夹和文件的分布式存储解决方案,本文就来介绍一下wi... 目录什么是DFS?优势:应用场景:DFS配置步骤什么是DFS?DFS指的是分布式文件系统(Distr

JAVA系统中Spring Boot应用程序的配置文件application.yml使用详解

《JAVA系统中SpringBoot应用程序的配置文件application.yml使用详解》:本文主要介绍JAVA系统中SpringBoot应用程序的配置文件application.yml的... 目录文件路径文件内容解释1. Server 配置2. Spring 配置3. Logging 配置4. Ma

MySQL中时区参数time_zone解读

《MySQL中时区参数time_zone解读》MySQL时区参数time_zone用于控制系统函数和字段的DEFAULTCURRENT_TIMESTAMP属性,修改时区可能会影响timestamp类型... 目录前言1.时区参数影响2.如何设置3.字段类型选择总结前言mysql 时区参数 time_zon

mac中资源库在哪? macOS资源库文件夹详解

《mac中资源库在哪?macOS资源库文件夹详解》经常使用Mac电脑的用户会发现,找不到Mac电脑的资源库,我们怎么打开资源库并使用呢?下面我们就来看看macOS资源库文件夹详解... 在 MACOS 系统中,「资源库」文件夹是用来存放操作系统和 App 设置的核心位置。虽然平时我们很少直接跟它打交道,但了

关于Maven中pom.xml文件配置详解

《关于Maven中pom.xml文件配置详解》pom.xml是Maven项目的核心配置文件,它描述了项目的结构、依赖关系、构建配置等信息,通过合理配置pom.xml,可以提高项目的可维护性和构建效率... 目录1. POM文件的基本结构1.1 项目基本信息2. 项目属性2.1 引用属性3. 项目依赖4. 构

Rust 数据类型详解

《Rust数据类型详解》本文介绍了Rust编程语言中的标量类型和复合类型,标量类型包括整数、浮点数、布尔和字符,而复合类型则包括元组和数组,标量类型用于表示单个值,具有不同的表示和范围,本文介绍的非... 目录一、标量类型(Scalar Types)1. 整数类型(Integer Types)1.1 整数字

Java操作ElasticSearch的实例详解

《Java操作ElasticSearch的实例详解》Elasticsearch是一个分布式的搜索和分析引擎,广泛用于全文搜索、日志分析等场景,本文将介绍如何在Java应用中使用Elastics... 目录简介环境准备1. 安装 Elasticsearch2. 添加依赖连接 Elasticsearch1. 创

Python如何使用seleniumwire接管Chrome查看控制台中参数

《Python如何使用seleniumwire接管Chrome查看控制台中参数》文章介绍了如何使用Python的seleniumwire库来接管Chrome浏览器,并通过控制台查看接口参数,本文给大家... 1、cmd打开控制台,启动谷歌并制定端口号,找不到文件的加环境变量chrome.exe --rem

龙蜥操作系统Anolis OS-23.x安装配置图解教程(保姆级)

《龙蜥操作系统AnolisOS-23.x安装配置图解教程(保姆级)》:本文主要介绍了安装和配置AnolisOS23.2系统,包括分区、软件选择、设置root密码、网络配置、主机名设置和禁用SELinux的步骤,详细内容请阅读本文,希望能对你有所帮助... ‌AnolisOS‌是由阿里云推出的开源操作系统,旨