RAC的TAF配置

最近RAC的TAF配置有点问题,客户端连接偶尔报TNS超时的问题。
C:\Documents and Settings\cadmin>sqlplus zzr@ext
SQL*Plus: Release 10.2.0.1.0 - Production on 星期四 5月 13 11:14:46 2010
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
输入口令:
连接到:
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production
With the Partitioning, Real Application Clusters, OLAP, Data Mining
and Real Application Testing options
SQL> quit
从 Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production
With the Partitioning, Real Application Clusters, OLAP, Data Mining
and Real Application Testing options 断开

 
 
C:\Documents and Settings\cadmin>sqlplus zzr@ext
SQL*Plus: Release 10.2.0.1.0 - Production on 星期四 5月 13 11:14:54 2010
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
输入口令:
ERROR:
ORA-12170: TNS: 连接超时


解决方法:
去掉oracle rac集群中的LOAD_BALANCE,如下:
SQL> show parameter lis

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
local_listener                       string      LISTENER_MEMBER1
recovery_parallelism                 integer     0
remote_listener                      string      LISTENER_MEMBER
SQL> alter system set remote_listener='' scope=both sid='*';

System altered.

分别重起各个节点的listener后问题解决。

原因:
由于服务器段设置了LOAD_BALANCE,导致客户端TNS连接过来后,偶尔无法判断连接的主机,导致连接超时。去掉LOAD_BALANCE,保留failover,后正常。
为了减少RAC各节点fusion cache的负载,建议去掉服务器端的LOAD_BALANCE


Rac TAF配置:

透明应用切换
test =
(DESCRIPTION =
(enable=broken)
(LOAD_BALANCE = yes)
(ADDRESS = (PROTOCOL = TCP)(HOST = db1_vip)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = db2_vip)(PORT = 1521))
(CONNECT_DATA =
(SERVICE_NAME = test)
(failover_mode=(type=select)(method=basic))
)
)

对于已有连接的失败切换,首先要求FAILOVER = ON,并且设置了FAILOVER_MODE
FAILOVER_MODE的子参数含义:
TYPE:
1)session---如果用户连接丢失,将创建一个新的会话连接到备用节点,用户的所有未提交的操作必须回滚,然后再次执行,SELECT操作也被中止.
2)select---如果用户连接丢失,将使用游标和之前的快照继续执行SELECT操作,叫做SQL接管,SQL接管能够无缝接管理的事务类型只有SELECT语句.其它的操作也必须要回滚然后再次执行.
3)none---客户端默认值,禁止SQL接管功能,主要用于测试的目地,在实际应用中TYPE应指定为session 或者select


METHOD:
1)basic---仅仅在FAILOVER发生时才连接备用节点
2)preconnect---在用户连接到主节点时同时也在备用节点产生一个连接会话,设置预连接模式,能够快速接管SQL

RETRIES:当前节点失败后,失败切换功能会尝试连接备用节点,这个值确定了尝试的次数,如果仅DELAY被指定,RETRIES默认为5
DELAY:两次尝试之间等待的秒数,如果仅指定RETRIES,DELAY默认为1秒
BACKUP:指定另外一个用于备份连接的网络服务名,当RAC设置为主次模式时,使用此参数,并且METHOD应该设为preconnect
如果要使用预连接,就不能使用客户端负载均衡和服务器端负载均衡,否则没有意义!!!


具有客户端负载均衡及透明应用切换无预连接的tnsnames配置
test =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = tcp)(HOST = db1_vip)(PORT = 1521))
(ADDRESS = (PROTOCOL = tcp)(HOST = db2_vip)(PORT = 1521))
(LOAD_BALANCE = ON)
(FAILOVER = ON)
)
(CONNECT_DATA =
(SERVICE_NAME = test)
(FAILOVER_MODE =
(TYPE = select)
(METHOD = basic)
(RETRIES = 10)
(DELAY = 1)
)
)
)

 

无客户端负载均衡有透明应用切换且有预连接的tnsnames配置


test1 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = tcp)(HOST = db1-vip)(PORT = 1521))
(LOAD_BALANCE = OFF)
(FAILOVER = ON)
)
(CONNECT_DATA =
(SERVICE_NAME = test)
(INSTANCE_NAME = test1)
(FAILOVER_MODE =
(BACKUP=test2)
(TYPE = select)
(METHOD = preconnect)
)
)
)


test2 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = tcp)(HOST = db2-vip)(PORT = 1521))
(LOAD_BALANCE = OFF)
(FAILOVER = ON)
)
(CONNECT_DATA =
(SERVICE_NAME = test)
(INSTANCE_NAME = test2)
(FAILOVER_MODE =
(BACKUP=test1)
(TYPE = select)
(METHOD = preconnect)
)
)
)


RAC设置为主次模式时的tnsnames配置
无客户端负载均衡(主次模式就不要客户端负载均衡了),有透明应用切换且有预连接的tnsnames配置
test1 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = tcp)(HOST = db2-vip)(PORT = 1521))
(ADDRESS = (PROTOCOL = tcp)(HOST = db1-vip)(PORT = 1521))
(LOAD_BALANCE = OFF)
(FAILOVER = ON)
(CONNECT_DATA =
(SERVICE_NAME = test)
(INSTANCE_ROLE = PRIMARY)
(INSTANCE_NAME = test1)
(FAILOVER_MODE =
(BACKUP=test2)
(TYPE = select)
(METHOD = preconnect)

)

)

)

test2 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = tcp)(HOST = db2-vip)(PORT = 1521))
(ADDRESS = (PROTOCOL = tcp)(HOST = db1-vip)(PORT = 1521))
(LOAD_BALANCE = OFF)
(FAILOVER = ON)
(CONNECT_DATA =
(SERVICE_NAME = test)
(INSTANCE_ROLE = PRIMARY)
(INSTANCE_NAME = test2)
(FAILOVER_MODE =
(BACKUP=test1)
(TYPE = select)
(METHOD = preconnect)
)
)
)
也可以设置为有透明应用切换但无预连接的模式,只要把上面的设置中的METHOD设置为basic。


与双主模式时的配置相比,多了INSTANCE_ROLE这样一个参数,当这个参数为SECONDARY时,这个本地服务命名不直接接收连接,只在主节点失败后才会接收连接。不直接接收连接,并不是指在客户端不能连通这个服务命名,只不过这个连接会被路由到主节点,次要次点并不真正有连接连上去。

 

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28419/viewspace-662622/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/28419/viewspace-662622/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值