前面分别在客户端配置过
负载均衡:http://blog.csdn.net/dbcommando/article/details/7692034
TAF: http://blog.csdn.net/dbcommando/article/details/7693249
现在实现在客户端同时配置负载均衡和TAF。
service_name:racdb
1、在客户端的tnsnames.ora文件中添加如下内容:
racdb = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.252.75)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = racdb) (INSTANCE_NAME = racdb1) (FAILOVER_MODE=(TYPE=select)(METHOD=basic)(RETRIES=4)(DELAY=1)) ) ) (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.252.76)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = racdb) (INSTANCE_NAME = racdb2) (FAILOVER_MODE=(TYPE=select)(METHOD=basic)(RETRIES=4)(DELAY=1)) ) ) (LOAD_BALANCE = yes) )
2、验证负载均衡:
打开第1个sqlplus
SQL> conn terry/terry@racdb 已连接。 SQL> show parameter instance_name NAME TYPE VALUE ------------------- ------------ --------------- instance_name string racdb1 SQL>
打开第2个sqlplus:
SQL> conn terry/terry@racdb 已连接。 SQL> show parameter instance_name NAME TYPE VALUE ------------------- ------------ --------------- instance_name string racdb2 SQL>
打第3个sqlplus:
SQL> conn terry/terry@racdb 已连接。 SQL> show parameter instance_name NAME TYPE VALUE ------------------- ------------ --------------- instance_name string racdb2 SQL>
打开第4个sqlplus
:
SQL> conn terry/terry@racdb 已连接。 SQL> show parameter instance_name NAME TYPE VALUE ------------------- ------------ --------------- instance_name string racdb1 SQL>可以看出在两个节点间根据空闲情况进行了近似轮巡的方式连接。
3、验证TAF:
根据上面的连接,其中两个连接到了实例racdb1,有两个连接到了实例racdb2,现将实例racdb2停掉。
[oracle@rac121 ~]$ srvctl stop instance -d racdb -i racdb2 -o immediate [oracle@rac121 ~]$ srvctl status database -d racdb Instance racdb1 is running on node rac121 Instance racdb2 is not running on node rac122 [oracle@rac121 ~]$
4、查看连接到实例racdb2的连接的情况
:
SQL>conn terry/terry@racdb 已连接。 SQL> show parameter instance_name NAME TYPE VALUE -------------- ------------ --------- instance_name string racdb2 SQL> show parameter instance_name NAME TYPE VALUE -------------- ------------ ---------- instance_name string racdb1 SQL> select sid from v$mystat where rownum=1; SID ---------- 85 SQL>
另一个连接到racdb2实例的节点:
SQL>conn terry/terry@racdb 已连接。 SQL> show parameter instance_name NAME TYPE VALUE -------------- ------------ --------- instance_name string racdb2 SQL> show parameter instance_name NAME TYPE VALUE -------------- ------------ ---------- instance_name string racdb1 SQL> select sid from v$mystat where rownum=1; SID ---------- 100 SQL>
很显然,实例racdb2出问题的情况下,实例racdb1接管了连接,保证业务的正常运行。