简介
TAF是Transparent Application
Failover的英文缩写,即为透明应用失败切换,也就是说应用在通过以TAF方式配置的客户端连数据库后,当前所连接的数据库实例发生异常中断后,应
用会自动连接到其他可用实例上去继续前面的查询,而不需要应用重新发起连接或是重启应用来恢复会话连接。此文结合多人经验,特此感谢曾经一起战斗在DBA
岗位上的伙伴儿们。
1、实验环境平台信息
--系统:
Oracle Linux 5.7
Linux 2.6.32-200.13.1.el5uek x86_64
x86_64 x86_64 GNU/Linux
--11g R2 RAC 11.2.0.3
2、tnsnames文件配置(node1,node2都要设置)
cd $ORACLE_HOME/network/admin
cat tnsnames.ora
# tnsnames.ora Network Configuration File:
/space/sys_software/oracle/app/product/11.2.0/db_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
TX9AB =
(DESCRIPTION =
(ADDRESS =
(PROTOCOL = TCP)(HOST = node1-vip)(PORT = 1521))
(ADDRESS =
(PROTOCOL = TCP)(HOST = node2-vip)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = tx9ab)
(FAILOVER_MODE=
(TYPE=session)
(METHOD=preconnect)
(RETRIES=180)
(DELAY=5))
)
)
3、修改Linux平台上的的tcp延时协议
--修改参数 net.ipv4.tcp_retries2
对该参数的解释
TCP失败重传次数,默认值15,意味着重传15次才彻底放弃.可减少到5,以尽早释放内核资源。实际设置为1,如果使用默认参数,通常要等待30分钟左右,这样对于TAF的配置显然就失去了意义。
net.ipv4.tcp_retries2=1;
--sysctl
-p
激活设置;
4、TAF效果测试
[oracle@node1 admin]$ sqlplus sys/oracle@tx9ab as sysdba
SQL*Plus: Release 11.2.0.3.0 Production on Fri Aug 14 01:24:52
2015
Copyright (c) 1982, 2011, Oracle. All rights
reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit
Production
With the Partitioning, Real Application Clusters, Automatic Storage
Management, OLAP,
Data Mining and Real Application Testing options
SQL> select count(*) from v$datafile;
COUNT(*)
----------
7
....换个窗口切换到grid用户
[grid@node1 ~]$ srvctl stop instance -d tx9ab -i tx9ab1 -o
abort
.....换回原来窗口,在相同session中查询
SQL> show parameter name
NAME
TYPE
VALUE
------------------------------------ -----------
------------------------------
db_file_name_convert
string
db_name
string
tx9ab
db_unique_name
string
tx9ab
global_names