Oracle Dataguard 需要配置的参数详解

news/2025/1/8 2:14:00 标签: oracle, 数据库

Oracle Dataguard 需要配置的参数详解

目录

  • Oracle Dataguard 需要配置的参数详解
    • 一、数据库名:DB_NAME
    • 二、数据库唯一名:DB_UNIQUE_NAME
    • 三、LOG_ARCHIVE_CONFIG
    • 四、LOG_ARCHIVE_DEST_1
    • 五、LOG_ARCHIVE_DEST_2
    • 六、LOG_ARCHIVE_DEST_3
    • 七、LOG_ARCHIVE_DEST_STATE_n
    • 七、FAL_SERVER 与 FAL_CLIENT
    • 七、DB_FILE_NAME_CONVERT
    • 七、LOG_FILE_NAME_CONVERT
    • 七、STANDBY_FILE_MANAGEMENT

一、数据库名:DB_NAME

db_name参数用于标识数据库的名称。

主备各节点使用相同的db_name,推荐与service_name一致。例如:

主库:*.DB_NAME='HISDB'
备库:*.DB_NAME='HISDB'

二、数据库唯一名:DB_UNIQUE_NAME

主库与备库的唯一名称。如果主备db_unique_name不一样,需要与LOG_ARCHIVE_CONFIG配合使用。例如:

主库:*.db_unique_name='HISDB'
备库:*.db_unique_name='HISDBDG'

三、LOG_ARCHIVE_CONFIG

列出主备库上的DB_UNIQUE_NAME参数。定义该参数能确保主备库能够互相识别对方。当主备库的db_unique_name不一致时必须设置如下参数。例如:

主库:*.db_unique_name='HISDB'
备库:*.db_unique_name='HISDBDG'
主库:*.LOG_ARCHIVE_CONFIG='DG_CONFIG=(HISDB,HISDBDG)'
备库:*.LOG_ARCHIVE_CONFIG='DG_CONFIG=(HISDB,HISDBDG)'

如在主备库db_unique_name不一致的情况下未配置LOG_ARCHIVE_CONFIG则会出现如下报错:

ORA-16057: DGID from server not in Data Guard configuration

当主备库的db_unique_name一致时,LOG_ARCHIVE_CONFIG参数设置为空。例如:

主库:*.db_unique_name='HISDB'
备库:*.db_unique_name='HISDB'
主库:*.LOG_ARCHIVE_CONFIG=''
备库:*.LOG_ARCHIVE_CONFIG=''

四、LOG_ARCHIVE_DEST_1

设置本地归档路径。主库与备库需要定义各自的online redo log的归档地址,以系统实际的存放路径为准。格式如下:

主库:*.log_archive_dest_1='location=USE_DB_RECOVERY_FILE_DEST valid_for=(all_logfiles,all_roles) db_unique_name=hisdb'     -- db_unique_name: 主库的唯一名

备库:*.log_archive_dest_1='location=USE_DB_RECOVERY_FILE_DEST valid_for=(all_logfiles,all_roles) db_unique_name=hisdbdg'   -- db_unique_name: 备库的唯一名

五、LOG_ARCHIVE_DEST_2

log_archive_dest_2Oracle Dataguard最重要的参数之一,它定义了redo log的传输方式(sync or async)以及传输目标(即:standby apply node),直接决定了Oracle Dataguard的数据保护级别。

格式如下:

主库:*.log_archive_dest_2='service=hisdbdg lgwr async valid_for=(online_logfiles,primary_role) db_unique_name=hisdbdg'
-- service值: 是tnsnames.ora文件中定义的网络服务名。在主库中service参数为备库的网络服务名。
-- DB_UNIQUE_NAME值:当前节点设置的均为另一端数据库的 db_unique_name。主库设置为:hisdbdg

备库:*.log_archive_dest_2='service=hisdb lgwr async valid_for=(online_logfiles,primary_role) db_unique_name=hisdb'
-- service值: 是tnsnames.ora文件中定义的网络服务名。在备库中service参数为主库的网络服务名。
-- DB_UNIQUE_NAME值:当前节点设置的均为另一端数据库的 db_unique_name。主库设置为:hisdb。

六、LOG_ARCHIVE_DEST_3

该参数仅当数据库角色为standby时生效,定义主库的日志写到备库的standby redo log中。

格式如下:

主库:*.LOG_ARCHIVE_DEST_3='LOCATION=/archivelog/standbylog/ VALID_FOR=(STANDBY_LOGFILES,STANDBY_ROLE) '
备库:*.LOG_ARCHIVE_DEST_3='LOCATION=/arch/arch3/ VALID_FOR=(STANDBY_LOGFILES, STANDBY_ROLE)'
-- LOCATION定义的路径以本节点能读写的实际路径为准。

七、LOG_ARCHIVE_DEST_STATE_n

设置为ENABLE,激活log_archive_dest_n定义的属性。

格式如下:

主库:
*.log_archive_dest_state_1='enable'
*.log_archive_dest_state_2='enable'

备库:
*.log_archive_dest_state_1='enable'
*.log_archive_dest_state_2='enable'

七、FAL_SERVER 与 FAL_CLIENT

FALFetch Archive Log)是Oracle Dataguard主备之间GAP的处理机制。

当主库的某些日志没有成功发送到备库,这时候会产生Archive GAP。缺失的这些日志就是GAPOracle Dataguard能够自动检测、解决GAP,不需要DBA的介入。此时需要配置FAL_CLIENTFAL_SERVER这两个参数。

FAL是备库主动发起的取日志的过程,备库就是FAL_CLIENT,它从FAL_SERVER中取这些GAPFAL_SERVER可以是主库, 也可以是其他的备库。

FAL_CLIENTFAL_SERVER两个参数都是Oracle监听中的网络服务名。FAL_CLIENT通过网络向FAL_SERVER发送请求,FAL_SERVER通过网络向FAL_CLIENT发送缺失的日志。因此,FAL_CLIENTFAL_SERVER发送请求时,会携带FAL_CLIENT参数值,用来告诉FAL_SERVER应该向哪里发送缺少的日志。

格式如下:

-- fal_client用于接受日志,fal_server用于发送日志。
-- 无论是主库或备库,fal_server=对方,fal_client=自己
主库:
*.fal_server='HISDBDG'
*.fal_client='HISDB'
备库:
*.fal_server='HISDB'
*.fal_client='HISDBDG'

七、DB_FILE_NAME_CONVERT

主库与备库上数据文件的存放路径不一致的时候,需要定义该参数进行转换,否则standby apply后无法创建与主库一致的数据文件并报错。

格式如下:

-- 格式: 
-- 主库配置格式: *.db_file_name_convert= 备库数据文件目录,主库数据文件目录
-- 备库配置格式: *.db_file_name_convert= 主库数据文件目录,备库数据文件目录
主库:*.db_file_name_convert='/usr/local/oradata/hisdbdg/','/usr/local/oradata/hisdb/'
备库:*.db_file_name_convert='/usr/local/oradata/hisdb/','/usr/local/oradata/hisdbdg/'

七、LOG_FILE_NAME_CONVERT

DB_FILE_NAME_CONVERT类似,定义主备log文件的存放路径转换。如果主、备库的联机日志路径不一致,则需要设置log_file_name_convert参数。但如果主备库数据文件以及日志文件路径一致则不需要设置该参数。

格式如下:

-- 主库配置格式: *. log_file_name_convert=备库log目录,主库log目录
-- 备库配置格式: *. log_file_name_convert=主库log目录,备库log目录

主库:*.log_file_name_convert='/usr/local/oradata/hisdbdg/','/usr/local/oradata/hisdb/'
备库:*.log_file_name_convert='/usr/local/oradata/hisdb/','/usr/local/oradata/hisdbdg/'

七、STANDBY_FILE_MANAGEMENT

初始化参数STANDBY_FILE_MANAGEMENT作用于standby数据库 ,用来控制是否自动将主库增加表空间或数据文件的改动,传播到物理备库。该参数有两个值:

AUTO:如果该参数值设置为AUTO,则主库执行的表空间创建操作也会被传播到物理备库上执行。

MANUAL:如果设置为MANUAL或未设置任何值(默认值是MANUAL),需要手工复制新创建的数据文件到物理备库。

在主库端删除表空间时,会影响到物理备库端的数据文件和表空间,初始化参数STANDBY_FILE_MANAGEMENT的属性值设置决定了该事件是否需要DBA介入。

STANDBY_FILE_MANAGEMENT设置为AUTO时,在主库删除表空间,则备库也会自动删除相关的表空间,无需人工干预。

STANDBY_FILE_MANAGEMENT参数设置为MANUAL时,在主库删除表空间时,备库只会将表空间和数据文件从数据字典中删除,表空间涉及的物理文件仍需要手工删除。

在主库端执行数据文件重命名操作:

如果主库重命名了一个或多个数据文件,该项修改并不会自动传播到备库。即使设置了初始化参数STANDBY_FILE_MANAGEMENTAUTO也不行,要让备库的数据文件与主库保持一致,只能手工操作。

添加或删除Redo logs文件:

如果在主重置日志文件大小或增加删除日志组,如果STANDBY_FILE_MANAGEMENT参数值设置为AUTO的话,这种操作也会被传播到物理备库库。

通常建议,当在主库增加或删除Online Redo logs时,一定记得手工同步相关物理备库中的相关设置,同时也要考虑好Standby Redo logsOnline Redo logs之间的关系,即保证Standby Redo logsOnline Redo logs要至少多一组。

注意在备库端操作前务必将STANDBY_FILE_MANAGEMENT设置为MANUAL,如果物理备库的日志文件与主库路径不同的话,应该通过初始化参数LOG_FILE_NAME_CONVERT的设置,让其自动进行转换。


http://www.niftyadmin.cn/n/5815585.html

相关文章

英雄联盟丢失dll文件怎么解决?游戏中发现dll找不到的处理方法

下班或放学回到家,美滋滋地打开电脑,准备在召唤师峡谷大杀四方,结果点击启动游戏的瞬间,一个弹窗如同 “恶魔” 般出现 ——“XX.dll 文件丢失,无法启动游戏”。那一刻,是不是感觉心都凉了半截?…

【H3CNE邓方鸣】RIP路由协议(已淘汰)+2025.1.6

本章讲授的内容主要是为了引出OSPF对RIP缺陷的解决。 文章目录 定义RIP初始化流程路由信息更新RIP的环路问题产生原因防环机制RIP计时器 RIPv2 定义 RIP是Routing Information Protocol(路由信息协议)的简称,是一种基于距离矢量算法的路由协…

【C++数据结构——线性表】顺序表的基本运算(头歌实践教学平台习题)【合集】

目录😋 任务描述 相关知识 一、线性表的基本概念 二、初始化线性表 三、销毁线性表 四、判定是否为空表 五、求线性表的长度 六、输出线性表 七、求线性表中某个数据元素值 八、按元素值查找 九、插入数据元素 十、删除数据元素 测试说明 通关代码 测…

k8s集群部署 - 高版本(1.28.2) docker(运行时)

k8s集群部署 - 高版本(1.28.2) docker(运行时) 文章目录 k8s集群部署 - 高版本(1.28.2) docker(运行时)环境准备启用 Kubernetes 组件端口配置 sysctl 内核参数节点之间实现免密登录 安装 Docker在所有三台机器上,安装…

(leetcode算法题)面试题 17.19. 消失的两个数字

可以在O(n)的时间复杂度下得到这两个消失的数字的异或的结果,或者得到这两个数字的和 但是怎么从上面的结果中得到这两个数字? 比如对于异或的结果,可以知道这两个数字在哪一位的置位是不同的 然后再根据这一位把 [1, n] 分为两个不同的数…

Kubernetes(第四天)

1.基于资源清单创建harbor认证信息 需要有一个基础的secret文件 (创建:kubectl create secret docker-registry lxcharbor --docker-usernameYunwei001 --docker-passwordYunwei001 --docker-emailYunwei001qq.com --docker-serverharbor.lxcedu.com&a…

高等数学学习笔记 ☞ 导数的基础知识

1. 导数的定义 1. 函数在点处的导数定义:设函数在点的某邻域内有定义,取附近的点,对应的函数值分别和, 令,取θ (也就是以上两点确定的直线的斜率),当时,上述直线的斜率就逐渐趋近 于点处的切线的斜率,此时&#xff…

.net core 为什么使用 null!

为什么使用 null!? 通常在以下几种情况中,你可能会使用 null!: 属性值可能会在对象构造或某个方法中被初始化,但在构造函数或者对象完全初始化之前,属性的值可能会是 null。你知道这个属性最终会被赋一个非 null 的值…