前提
说起ADG搭建,主备都是rac的环境。可以讲的就很多很多,这篇文章就聊一聊,双RAC环境搭建主从ADG,要注意的问题。
在这之前需要知道的信息为
主备库db_unique_name
主库:orcl19c
备库:orcl19cadg
四节点public ip
192.168.1.130
192.168.1.131
192.168.1.150
192.168.1.151
知识点
1.网络
2.参数
网络
配置静态监听
主备库4个节点都要增加GLOBAL_DBNAME配置静态监听。
那么问题来了
问:为什么要配置静态监听
答:静态监听配置要和db_unique_name一样,这样就算不启动数据库,在监听中也会存在一个和db_unique_name名字相同的service name。如果备库为shut down状态,主库日志也可以传输到备库
主库两节点网络
节点1 grid监听
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = orcl19c)
(ORACLE_HOME = /u01/app/oracle/product/19.3.0/db_1)
(SID_NAME = orcl19c1)
)
)
节点2 grid监听
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = orcl19c)
(ORACLE_HOME = /u01/app/oracle/product/19.3.0/db_1)
(SID_NAME = orcl19c2)
)
)
节点1 tnsname.ora
ORCL19CADG =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.150)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl19cadg)
)
)
ORCL19C =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.130)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl19c)
)
)
节点2 tnsname.ora
ORCL19CADG =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.151)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl19cadg)
)
)
ORCL19C =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.131)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl19c)
)
)
备库两节点网络
节点1 grid监听
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = orcl19cadg)
(ORACLE_HOME = /u01/app/oracle/product/19.3.0/db_1)
(SID_NAME = orcl19c1)
)
)
节点2 grid监听
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = orcl19cadg)
(ORACLE_HOME = /u01/app/oracle/product/19.3.0/db_1)
(SID_NAME = orcl19c2)
)
)
节点1 tnsname.ora
ORCL19CADG =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.150)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl19cadg)
)
)
ORCL19C =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.130)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl19c)
)
)
节点2 tnsname.ora
ORCL19CADG =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.151)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl19cadg)
)
)
ORCL19C =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.131)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl19c)
)
)
参数
问:为什么要配置log_file_name_convert,pdb_file_name_convert参数
答:如果不配置的话,同步状态下的ADG主库在增加数据文件的情况,备库也会通过传到redo数据中的DDL增加数据文件,但这个ddl中没有对应备库增加数据文件的路径。备库在进行DDL增加数据文件时默认会增加到dbs目录下。不使用log_file_name_convert,pdb_file_name_convert参数时ADG增加数据文件的解决方法为,主库增加数据库文件,在不切换日志的状态下于备库也同样增加一个数据文件。当DDL语句通过redo数据传到备库时,备库发现已经有一个file_id相同的data file。于是便不再进行操作。
主库
alter system set fal_client='orcl19c' scope=both;
alter system set fal_server='orcl19cadg' scope=both;
alter system set standby_file_management='auto' scope=both;
alter system set log_archive_dest_state_1='enable' scope=both;
alter system set log_archive_dest_state_2='enable' scope=both;
alter system set log_archive_dest_1='location=+FRA mandatory REOPEN=120 valid_for=(all_logfiles,all_roles)' scope=both;
alter system set log_archive_format='%t_%s_%r.dbf' scope=spfile;
alter system set remote_login_passwordfile='EXCLUSIVE' scope=spfile;
alter system set log_file_name_convert='+DATA/ORCL19CADG/ONLINELOG/','+DATA/ORCL19C/ONLINELOG/' scope=spfile;
alter system set pdb_file_name_convert='+DATA/ORCL19CADG/DATAFILE/','+DATA/ORCL19C/DATAFILE/' scope=spfile;
备库
alter system set fal_client='orcl19cadg' scope=both;
alter system set fal_server='orcl19c' scope=both;
alter system set standby_file_management='auto' scope=both;
alter system set log_archive_dest_state_1='enable' scope=both;
alter system set log_archive_dest_state_2=