假设我们有以下 tns 本地命名:
CMAN =
(DESCRIPTION=
(SOURCE_ROUTE=YES)
(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.0.16)(PORT=1522)) ###CMAN
(ADDRESS=(PROTOCOL=TCP)(HOST=sat-scan)(PORT=1521))
(CONNECT_DATA=
(SERVICE_NAME=satdb)
(FAILOVER_MODE=
(TYPE=SELECT)
(METHOD=BASIC)
(RETRIES=10)
(DELAY=1)
)
)
)
SOURCE_ROUTE=YES 是:
当您将此参数设置为 on 或 yes 时,Oracle Net 将按顺序使用每个地址,直到到达目的地。要使用 Oracle Connection Manager,需要从客户端到 Oracle Connection Manager 的初始连接,并且需要从 Oracle Connection Manager 到侦听器的第二个连接。
但是如果我们有两个 cman 呢?如何实现 LOAD_BALANCE 和 FAILOVER 参数?这个对吗?
CMAN =
(DESCRIPTION=
(LOAD_BALANCE=ON)
(FAILOVER=ON)
(SOURCE_ROUTE=YES)
(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.0.16)(PORT=1522)) ###CMAN
(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.0.17)(PORT=1522)) ###CMAN
(ADDRESS=(PROTOCOL=TCP)(HOST=sat-scan)(PORT=1521))
(CONNECT_DATA=
(SERVICE_NAME=satdb)
(FAILOVER_MODE=
(TYPE=SELECT)
(METHOD=BASIC)
(RETRIES=10)
(DELAY=1)
)
)
)
192.168.0.16:1522
我的意思是,它必须仅在and周围进行平衡和故障转移192.168.0.17:1522
,但我想它也会考虑sat-scan:1521
,也许客户端直接连接scan-scan
而不需要通过 cman 传递。
您可以对多个描述进行负载平衡,每个描述提供不同的 SOURCE_ROUTE,如下所示:
以下也应该有效,并且更紧凑。在这种情况下,路由首先到达连接管理器的地址列表,这些地址为负载平衡和故障转移设置,然后被定向到 RAC SCAN 地址,无论使用哪个连接管理器: