tnsnames.ora RAC两个节点一样(LOCAL_LISTENER1分别配置):
LISTENERS_ORCL =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = vip1)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = vip2)(PORT = 1521))
)
ORCL=
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = vip1)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = vip2)(PORT = 1521))
(LOAD_BALANCE = yes)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
LOCAL_LISTENER1=
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = node1)(PORT = 1521))
)
STVPORT1 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = vip1)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
(INSTANCE_NAME = orcl1)
)
)
STVPORT2 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = vip2)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
(INSTANCE_NAME = orcl2)
)
)
listener.ora 两个节点分别配置:
LISTENER_ORCL1 =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = vip1)(PORT = 1521)(IP = FIRST))
(ADDRESS = (PROTOCOL = TCP)(HOST = node1)(PORT = 1521)(IP = FIRST))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) )
)
设置参数remote_listener=LISTENERS_ORCL
local_listener=LOCAL_LISTENER1
客户端配置:
(1)
orcl=
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = vip1)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)
该配置客户端只需连接到一个vip(虚拟ip),服务器端负责负载均衡,根据节点的连接数及负责情况,由pmon每3秒更新到service_register里面,然后假如节点的负荷有发生变化,将会通知到监听程序,由监听程序再决定新的客户端连接分配至哪个节点
(2)
ORCL=
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = vip1)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = vip2)(PORT = 1521))
(LOAD_BALANCE = yes)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
客户端负责负载均衡(结合服务器端配置应该会有两次负载均衡的检测,并且可避免上面(1)的配置出现服务器端vip1故障可能会无法连接的情况?)
(3)jdbc
jdbc:oracle:thin:@vip1:1521/orcl (结合服务器端配置可负载均衡)
jdbc:oracle:thin:@vip1:1521:orcl1 或 jdbc:oracle:thin:@vip2:1521:orcl2
jdbc:oracle:thin:@(DESCRIPTION=(FAILOVER=on)(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=vip1)(PORT=1521))(ADDRESS=(PROTOCOL=TCP)(HOST=vip2)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=orcl)))
总结:
客户端还是尽量使用(2)中的连接字符串
服务器端配置很色部分应该是最主要的,
tnsnames.ora中的其它配置应该只是为了彼此连接登录使用,还未验证
lsnrctl status
Service "ORCL" has 2 instance(s).
Instance "ORCL1", status READY, has 2 handler(s) for this service...
Instance "ORCL2", status READY, has 1 handler(s) for this service...