关键词: load balance (负载均衡) , fail over (透明切换)
以Oracle10g 为例子,Linux AS4.5
以下是listener.ora , tnsnames.ora , spfile 中的几个配置 。
ecsrac01$cat listener.ora
# listener.ora.ecsrac01 Network Configuration File: /u01/product/oracle/network/admin/listener.ora.ecsrac01
# Generated by Oracle configuration tools.
LISTENER_ECSRAC01 =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = ecsvip01)(PORT = 1521)(IP = FIRST))
)
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.134.130.177)(PORT = 1521)(IP = FIRST))
)
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))
)
)
)
ecsrac01$cat tnsnames.ora
# tnsnames.ora Network Configuration File: /u01/product/oracle/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
ECSDB2 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = ecsvip02)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ecsdb)
(INSTANCE_NAME = ecsdb2)
)
)
ECSDB1 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = ecsvip01)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ecsdb)
(INSTANCE_NAME = ecsdb1)
)
)
ECS =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.134.130.170)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = ecsdb)
)
)
ECSDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = ecsvip01)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = ecsvip02)(PORT = 1521))
(LOAD_BALANCE = yes)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ecsdb)
(FAILOVER_MODE =
(TYPE = SELECT)
(METHOD = BASIC)
(RETRIES = 180)
(DELAY = 5)
)
)
)
LISTENERS_ECSDB =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = ecsvip01)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = ecsvip02)(PORT = 1521))
)
LOCAL_ECSDB =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.134.130.177)(PORT = 1521))
)
SQL> show parameter list
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
local_listener string LOCAL_ECSDB
remote_listener string LISTENERS_ECSDB
------------------------------------------------------------------------------------------------------------------
客户端Load Balance,Failover 设置 :
ECSDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = ecsvip01)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = ecsvip02)(PORT = 1521))
(LOAD_BALANCE = yes)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ecsdb)
(FAILOVER_MODE =
(TYPE = SELECT)
(METHOD = BASIC)
(RETRIES = 180)
(DELAY = 5)
)
)
)
--------------------------------------------------------------------------------------------------------------------
Server 端Load Balance,Failover 设置 :
Server 端的tnsnames.ora 中包含有
LISTENERS_ECSDB =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = ecsvip01)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = ecsvip02)(PORT = 1521))
)
然后remote_listener 设置为tnsnames.ora 中的这个监听设置即可 。
SQL> show parameter list
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
local_listener string LOCAL_ECSDB
remote_listener string LISTENERS_ECSDB