RAC连接时的2种方式Connect Time Failver和taf

1. Client-side Connect Time Failover
  在客户端的tnsname中配置多个地址,当用户连接时会按照次序尝试各个地址,直到连接成功,连接好后,不再检测地址是否可用,如果连接到的节点失败,则此session断开,必须用户重新连接。

 

 

2. TAF(Transparent Application Failover)   在客户端指定该方式后,连接会自己检查,如果节点失败,会自己切换,用户无感觉,具体需要在tnsname设置failover_mode,如下 LACA =   (DESCRIPTION =     (ADDRESS_LIST =       (ADDRESS = (PROTOCOL = TCP)(HOST = 109.115.101.136)(PORT = 1521))       (ADDRESS = (PROTOCOL = TCP)(HOST = 109.115.101.137)(PORT = 1521))       (LOAD_BALANCE = yes)     )     (CONNECT_DATA =       (SERVER = DEDICATED)       (SERVICE_NAME = RACDB)       (FAILOVER_MODE =  (TYPE= session)         (METHOD=basic)         (RETRIES=180)         (DELAY =5)       )     )   ) failover_mode几个参数: type :session和select,前者select时节点失败后断开,后者即使select进行时,也会无缝切换,例如用户查询100条记录在节点一,当返回10条记录后,节点一失败,则会自动切换到节点2,并返回剩下的90条记录,这样,采用select方式的话,要求session记录更多的信息,可能比较消耗资源 METHOD :basic :仅在节点故障时在转移,preconnect: 建立连接时就在各个节点各建立一个连接,实现无缝,但是这样会更耗资源 retries和delays表示重试的次数,和间隔时间

 

另外,可以在Server中设置taf,这样客户端的tnsname就不必设置failovermode了,甚至连tnsname文件都不需要了,

 

sqlplus

 

其中109.115.101.136是一个节点的vip, server_taf是server端taf的service名

 

 

 

 

 

为了设置Server的taf,在dbca中选择service management,然后选择add新建一个service,名字任意,然后指定主要节点和备用节点,选择method(在下面)。然后让它自动配置 另外还需要利用dbms_service设置type,retires,delay等参数,其使用方法如下: exec dbms_service.modify_service( service_name => 'PSOUG_SOA', goal => DBMS_SERVICE.GOAL_THROUGHPUT, aq_ha_notifications => TRUE, failover_method => DBMS_SERVICE.FAILOVER_METHOD_BASIC, failover_type => DBMS_SERVICE.FAILOVER_TYPE_SELECT, failover_retries => 10, failover_delay => 1, clb_goal => DBMS_SERVICE.CLB_GOAL_LONG);

 

另外,在show parameter service中可以看到新建立的service:

 

SQL> show parameter service

 

NAME                                 TYPE        VALUE ------------------------------------ ----------- ------------------------------ service_names                        string      RACDB, server_taf

 

这里我设置的是server_taf

 

posted @ 2014-03-27 14:31  凡轩之  阅读(697)  评论(0编辑  收藏  举报