1. 基本概念
- DB_NAME:主备各节点实例使用相同的
db_name
。推荐与service_name
一致。 - DB_UNIQUE_NAME:主备端数据库的唯一名称,设定后不可再更改。注意,如果主备
db_unique_name
不一样,需要与LOG_ARCHIVE_CONFIG
配合使用。 - LOG_ARCHIVE_CONFIG:列出主备库上的
DB_UNIQUE_NAME
参数。默认情况下,定义该参数能确保主备库数据库能够互相识别对方。
2. 参数配置表
参数名 | 主站点 | 备站点 | 说明 |
---|---|---|---|
DB_NAME | *.DB_NAME='DB' | *.DB_NAME='DB' | 主备各节点实例使用相同的 db_name ,推荐与 service_name 一致。 |
DB_UNIQUE_NAME | *.db_unique_name='Primary' | *.db_unique_name='Standby' | 主备端数据库的唯一名字,设定后不可再更改。 |
LOG_ARCHIVE_CONFIG | *.LOG_ARCHIVE_CONFIG='DG_CONFIG=(Primary,Standby)' | *.LOG_ARCHIVE_CONFIG='DG_CONFIG=(Primary,Standby)' | 列出主备库上的 DB_UNIQUE_NAME 参数。 |
3. LOG_ARCHIVE_DEST_n 参数
- LOG_ARCHIVE_DEST_1:本地归档路径。格式如下:
- 主站点:
*.LOG_ARCHIVE_DEST_1='LOCATION=/arch/ VALID_FOR=(ALL_LOGFILES,ALL_ROLES)'
- 备站点:
*.LOG_ARCHIVE_DEST_1='LOCATION=/stdby/ VALID_FOR=(ALL_LOGFILES,ALL_ROLES)'
- 主站点:
- LOG_ARCHIVE_DEST_2:仅当数据库角色为
primary
时生效,指定primary
归档 redo log 到standby
数据库上。格式如下:- 主站点:
*.LOG_ARCHIVE_DEST_2='SERVICE=DR2 lgwr async VALID_FOR=(ONLINE_LOGFILES, PRIMARY_ROLE)'
- 备站点(切换后生效):
*.LOG_ARCHIVE_DEST_2='SERVICE=DR1 lgwr async VALID_FOR=(ONLINE_LOGFILES, PRIMARY_ROLE)'
- 主站点:
- LOG_ARCHIVE_DEST_3:仅当数据库角色为
standby
时生效,定义primary
数据库的日志写到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)'
- 主站点:
- LOG_ARCHIVE_DEST_STATE_n:设置为
ENABLE
,激活log_archive_dest_n
定义的属性。
4. FAL_SERVER 和 FAL_CLIENT
- FAL_SERVER和FAL_CLIENT:处理归档裂缝(Archive Gap)。当 Primary Database的某些日志没有成功发送到Standby Database时,发生归档裂缝。配置如下:
- 主站点:
*.fal_server='DR2'
、*.fal_client='DR1'
- 备站点:
*.fal_server='DR1'
、*.fal_client='DR2'
- 主站点:
5. DB_FILE_NAME_CONVERT 和 LOG_FILE_NAME_CONVERT
- DB_FILE_NAME_CONVERT:主备盘组或数据文件存放路径不一致时,需要定义该参数进行转换。格式如下:
- 主站点:
.db_file_name_convert='+DATAGRP/db/datafile/','+DG1/db/datafile/'
- 备站点:
.db_file_name_convert='+DG1/db/datafile/','+DATAGRP/db/datafile/'
- 主站点:
- LOG_FILE_NAME_CONVERT:类似
DB_FILE_NAME_CONVERT
,定义主备 log 文件的存放路径转换。
6. STANDBY_FILE_MANAGEMENT
-
STANDBY_FILE_MANAGEMENT:控制是否自动将Primary数据库增加表空间或数据文件的改动传播到物理
Standby数据库。有两个值:
- AUTO:自动传播。
- MANUAL:手动复制新创建的数据文件到
Standby
服务器。
7. 其他注意事项
- 跨 OPEN RESETLOGS 的应用:在某些情况下,
Primary
数据库以RESETLOGS
方式打开后,不会影响 Data Guard 的配置,Standby
数据库会自动应用OPEN RESETLOGS
的操作。 - 添加或删除 Redo Logs:通常建议在
Primary
数据库增加或删除 Online Redo Logs 时,手工同步相关物理Standby
数据库中的设置,并保证Standby Redo Logs
比Online Redo Logs
至少多一组。
8. 示例命令
-
创建新的 Standby Redo Log 组:
ALTER DATABASE ADD STANDBY LOGFILE GROUP 4 ('/u01/app/oracle/oradata/orcl/std_redo04.log') size 500M;ALTER DATABASE ADD STANDBY LOGFILE GROUP 5 ('/u01/app/oracle/oradata/orcl/std_redo05.log') size 500M;ALTER DATABASE ADD STANDBY LOGFILE GROUP 6 ('/u01/app/oracle/oradata/orcl/std_redo06.log') size 500M;
-
切换当前日志到新的日志组:
ALTER SYSTEM SWITCH LOGFILE;
-
删除旧的日志组:
ALTER DATABASE DROP LOGFILE GROUP 1;
-
清空重做日志组:
ALTER DATABASE CLEAR LOGFILE GROUP 3;
-
备份当前最新的控制文件:
ALTER DATABASE BACKUP CONTROLFILE TO TRACE RESETLOGS;
通过以上详细的参数配置和示例命令,可以有效地管理和配置 Oracle Data Guard 环境,确保高可用性和数据保护。