Oracle 11G RAC环境的load balance + TAF配置
作者:八神 | 分类: 大话技术 | 标签: 大话技术 | 日期:2008-07-14
一.客户段的load balance + TAF
sword =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = hack1-vip)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = hack2-vip)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = hack3-vip)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = hack4-vip)(PORT = 1521))
(LOAD_BALANCE = yes)
(FAILOVER = ON)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = sword.db.alibaba.com)
(FAILOVER_MODE =
(TYPE = SESSION)
(METHOD = BASIC)
)
)
)
LOAD_BALANCE = yes表示程序走sword连接的时候,将在下面4个地址里面随机的选择一个,达到接点间连接均匀
failover表示开启TAF(Transparent Application Failover)特性,其中TYPE = SESSION表示当一个连接好的会话
的实例发生故障,系统会自动将会话切换到其他可用的实例,前台应用无须再度发起连接,但会话正在执行的SQL
需要重新执行,METHOD = BASIC表示初始连接就连接一个接点,他还有个选项是preconnect,表示初始连接所有的
接点,在failover的时候可以很快就切过去,这个基本是资源浪费
二.服务器端的负载平衡
1.listener.ora文件里面配置
LISTENER_SWORD_HACK<n> =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))
(ADDRESS = (PROTOCOL = TCP)(HOST = hack<n>-vip)(PORT = 1521)(IP = FIRST))
(ADDRESS = (PROTOCOL = TCP)(HOST = hack<n>-priv)(PORT = 1521)(IP = FIRST))
)
)
2.tnsnames.ora文件里面加入
LISTENERS_SWORD =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = hack1-vip)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = hack2-vip)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = hack3-vip)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = hack4-vip)(PORT = 1521))
)
3.各个实例修改remote_listener参数
alter system set REMOTE_LISTENER = ‘LISTENERS_SWORD’ scope=both sid=’sword1′;
alter system set REMOTE_LISTENER = ‘LISTENERS_SWORD’ scope=both sid=’sword2′;
alter system set REMOTE_LISTENER = ‘LISTENERS_SWORD’ scope=both sid=’sword3′;
alter system set REMOTE_LISTENER = ‘LISTENERS_SWORD’ scope=both sid=’sword4′;
服务器段的负载均衡主要是通过REMOTE_LISTENER参数控制的,在连接被定位到某个接点后,系统会根据REMOTE_LISTENER
考虑多个接点的负载(主机load是个很重要的参考标准),把连接再次分发出去,这个和客户段的load balance是可以结合
在一起混合使用的,互不干扰
三.连接RAC数据库
[oracle@hack2 admin]$ sqlplus system/sg6n9ol0ij117@sword
SQL*Plus: Release 11.1.0.6.0 - Production on Mon Jul 14 10:29:33 2008
Copyright (c) 1982, 2007, Oracle. All rights reserved.
Enter password:
ERROR:
ORA-12520: TNS:listener could not find available handler for requested type of server
如果出现ORA-12520错误,应该是oracle的BUG,解决方法是加入local_listener参数控制各个接点service的注册
1.tnsnames.ora文件添加
LISTENER_HACK1 =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = hack1-vip)(PORT =1521))
)
LISTENER_HACK2 =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = hack2-vip)(PORT =1521))
)
LISTENER_HACK3 =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = hack3-vip)(PORT =1521))
)
LISTENER_HACK4 =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = hack4-vip)(PORT =1521))
)
2.修改各个接点的local_listener参数
alter system set LOCAL_LISTENER = ‘LISTENER_HACK1′ scope=both sid=’sword1′;
alter system set LOCAL_LISTENER = ‘LISTENER_HACK2′ scope=both sid=’sword2′;
alter system set LOCAL_LISTENER = ‘LISTENER_HACK3′ scope=both sid=’sword3′;
alter system set LOCAL_LISTENER = ‘LISTENER_HACK4′ scope=both sid=’sword4′;
3.重新启动listener
lsnrctl start LISTENER_SWORD_HACK<n>
4.连接
[oracle@hack2 admin]$ sqlplus system/sg6n9ol0ij117@sword
SQL*Plus: Release 11.1.0.6.0 - Production on Mon Jul 14 11:50:52 2008
Copyright (c) 1982, 2007, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - 64bit Production
With the Partitioning, Real Application Clusters and Real Application Testing options
SQL> show user
USER is “SYSTEM”
错误详细信息请参考metalink Note:342419.1



长见识咯,谢过
zZ @ July 15, 2008 |