前提知识
- 客户端连接RAC的TNS串使用多IP方式连接,会默认先连接IP1,若IP1无法连接时,才会连接IP2,以此类推
参考试验 http://www.821121.com/?p=2042不同连接串配置产生的效果 - 当主库为集群环境并配置有本节点静态监听时,若IP1所在集群环境的数据库关闭(不关闭监听、集群服务),客户端连接IP1会受到静态监听影响,不会尝试后续IP2,从而造成连接异常
- 此次模拟试验时在上述前提下模拟该连接串配置对ADG的影响
环境介绍
主从情况
主 | 从 | |
---|---|---|
操作系统 | CentOS 7.6.1810 (Core) | CentOS 7.6.1810 (Core) |
数据库类型 | RAC | 单机 |
版本 | 19.3 | 19.3 |
IP | 192.168.0.85 rac1/192.168.0.86 rac2/10.0.0.85 rac1priv/10.0.0.86 rac2priv/192.168.0.87 rac1vip/192.168.0.88 rac2vip/192.168.0.89 racscanip | 192.168.0.143 oracle |
log_archive_dest_2 | log_archive_dest_2='SERVICE=orcl19cdg2 LGWR ASYNC AFFIRM VALID_FOR=(ONLINE_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=orcl19cdg2'; | log_archive_dest_2='SERVICE=89orcl19c LGWR ASYNC NOAFFIRM delay=0 max_failure=0 reopen=60 VALID_FOR=(ONLINE_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=orcl' |
从库143的tnsnames.ora
89orcl19c =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.85)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.86)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
orcl19cdg2 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.143)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl19cdg2)
)
)
85监听情况
[grid@rac1 ~]$ lsnrctl status
LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 10-DEC-2024 11:22:48
Copyright (c) 1991, 2019, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 19.0.0.0.0 - Production
Start Date 09-DEC-2024 17:27:51
Uptime 0 days 17 hr. 54 min. 56 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/app/19.3.0/grid/network/admin/listener.ora
Listener Log File /u01/app/grid/diag/tnslsnr/rac1/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.0.85)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.0.87)(PORT=1521)))
Services Summary...
Service "+ASM" has 1 instance(s).
Instance "+ASM1", status READY, has 1 handler(s) for this service...
Service "+ASM_ARCH" has 1 instance(s).
Instance "+ASM1", status READY, has 1 handler(s) for this service...
Service "+ASM_DATA" has 1 instance(s).
Instance "+ASM1", status READY, has 1 handler(s) for this service...
Service "+ASM_OCR" has 1 instance(s).
Instance "+ASM1", status READY, has 1 handler(s) for this service...
Service "+ASM_TEST" has 1 instance(s).
Instance "+ASM1", status READY, has 1 handler(s) for this service...
Service "24821e337619f56ee0635600a8c08e13" has 1 instance(s).
Instance "orcl1", status READY, has 1 handler(s) for this service...
Service "266aeef7edadba24e0635500a8c080e0" has 1 instance(s).
Instance "orcl1", status READY, has 1 handler(s) for this service...
Service "86b637b62fdf7a65e053f706e80a27ca" has 1 instance(s).
Instance "orcl1", status READY, has 1 handler(s) for this service...
Service "orcl" has 2 instance(s).
Instance "orcl1", status UNKNOWN, has 1 handler(s) for this service...
Instance "orcl1", status READY, has 1 handler(s) for this service...
Service "orclXDB" has 1 instance(s).
Instance "orcl1", status READY, has 1 handler(s) for this service...
Service "pdb" has 1 instance(s).
Instance "orcl1", status READY, has 1 handler(s) for this service...
Service "testpdb" has 1 instance(s).
Instance "orcl1", status READY, has 1 handler(s) for this service...
The command completed successfully
86监听情况(略)
模拟步骤(因博客篇幅有限,日志或文件记录过长,改为省略不展示)
实验一、ADG正常情况下,85关闭,同步是否正常
85节点切集群日志并关库
85实例日志(略)
检查Asm里的归档文件(略)
从库143实例日志情况(略)
从库143归档目录情况(略)
85停库情况下86切日志(略)
从库143实例日志情况(略)
从库143归档情况(略)
结论
可正常同步
实验二、ADG异常,85关闭,86切换日志,从库143重新开启后同步是否正常
86实例日志(略)
86日志显示,连接断开,后续归档没能自动传给从库143,每300秒尝试连接从库143
从库143日志(略)
结论
受监听影响,从库143重新开库并开启同步是无法主动获取到归档的,需要主库进程恢复连接(默认300秒轮询)后主动发送给从库143
实验三、再实验二的基础上修改连接串为scanIP
从库143的tnsnames.ora
89orcl19c =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.89)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
orcl19cdg2 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.143)(PORT = 1521))
)
结论
若从库143连接串改为连接SCANIP ,从库143开库就能主动连接上86,不用等待300秒的主库轮询