千家信息网

配置Server Side TAF

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,实验环境:Oracle 11.2.0.4 RAC参考MOS文档:How To Configure Server Side Transparent Application Failover (文档 ID
千家信息网最后更新 2026年11月02日配置Server Side TAF

实验环境:Oracle 11.2.0.4 RAC
参考MOS文档:
How To Configure Server Side Transparent Application Failover (文档 ID 460982.1)

  • 1.为设置TAF在RAC集群上新建服务

  • 2.启动server_taf服务

  • 3.检查确认服务正在运行

  • 4.找到刚创建服务的service_id

  • 5.根据service_id审查服务的信息

  • 6.给服务添加server side failover参数

  • 7.再次审查服务可以看到Method, Type和Retries值

  • 8.检查已注册的服务的监听信息

  • 9.创建网络服务名

  • 10.测试TAF功能

1.为设置TAF在RAC集群上新建服务

eg: srvctl add service -d rac -s server_taf -r "rac1,rac2" -P BASIC

使用oracle用户在RAC集群上新建服务server_taf:

[oracle@jyrac1 ~]$ srvctl add service -d jyzhao -s server_taf -r "jyzhao1,jyzhao2" -P BASIC[oracle@jyrac1 ~]$

注意不能使用grid用户操作,如果使用grid 用户执行的话,会报错:

[grid@jyrac1 ~]$ srvctl add service -d jyzhao -s server_taf -r "jyzhao1,jyzhao2" -P BASICPRCD-1288 : User is not authorized to create service server_taf for database jyzhaoPRKH-1014 : Current user "grid" is not the oracle owner user "oracle" of oracle home "/opt/app/oracle/product/11.2.0/dbhome_1"

2.启动server_taf服务

eg: srvctl start service -d rac -s server_taf

启动server_taf服务

[oracle@jyrac1 ~]$ srvctl start service -d jyzhao -s server_taf

3.检查确认服务正在运行

eg: srvctl config service -d rac

检查确认服务正在运行:

[oracle@jyrac1 ~]$ srvctl config service -d jyzhaoService name: server_tafService is enabledServer pool: jyzhao_server_tafCardinality: 2Disconnect: falseService role: PRIMARYManagement policy: AUTOMATICDTP transaction: falseAQ HA notifications: falseFailover type: NONEFailover method: NONETAF failover retries: 0TAF failover delay: 0Connection Load Balancing Goal: LONGRuntime Load Balancing Goal: NONETAF policy specification: BASICEdition: Preferred instances: jyzhao1,jyzhao2Available instances:

4.找到刚创建服务的service_id

eg: select name,service_id from dba_services where name = 'server_taf';

找到刚创建服务的service_id

SQL> select name,service_id from dba_services where name = 'server_taf'; NAME                                                             SERVICE_ID---------------------------------------------------------------- ----------server_taf                                                                7

5.根据service_id审查服务的信息

col name format a15
col failover_method format a11 heading 'METHOD'
col failover_type format a10 heading 'TYPE'
col failover_retries format 9999999 heading 'RETRIES'
col goal format a10
col clb_goal format a8
col AQ_HA_NOTIFICATIONS format a5 heading 'AQNOT'

select name, failover_method, failover_type, failover_retries,goal, clb_goal,aq_ha_notifications
from dba_services where service_id = 7;

根据service_id审查服务的信息:

SQL> col name format a15  SQL> col failover_method format a11 heading 'METHOD' SQL> col failover_type format a10 heading 'TYPE' SQL> col failover_retries format 9999999 heading 'RETRIES' SQL> col goal format a10 SQL> col clb_goal format a8 SQL> col AQ_HA_NOTIFICATIONS format a5 heading 'AQNOT' SQL> select name, failover_method, failover_type, failover_retries,goal, clb_goal,aq_ha_notifications    2  from dba_services where service_id = 7  3  ;NAME            METHOD      TYPE        RETRIES GOAL       CLB_GOAL AQNOT--------------- ----------- ---------- -------- ---------- -------- -----server_taf      NONE        NONE              0 NONE       LONG     NOSQL>

6.给服务添加server side failover参数

execute dbms_service.modify_service (service_name => 'server_taf' -
, aq_ha_notifications => true -
, failover_method => dbms_service.failover_method_basic -
, failover_type => dbms_service.failover_type_select -
, failover_retries => 180 -
, failover_delay => 5 -
, clb_goal => dbms_service.clb_goal_long);

11.2版本可以使用srvctl 修改服务的信息:
srvctl modify service -d RAC -s server_taf -m BASIC -e SELECT -q TRUE -j LONG

给服务添加server side failover参数:

SQL> execute dbms_service.modify_service (service_name => 'server_taf' - > , aq_ha_notifications => true - > , failover_method => dbms_service.failover_method_basic - > , failover_type => dbms_service.failover_type_select - > , failover_retries => 180 - > , failover_delay => 5 - > , clb_goal => dbms_service.clb_goal_long); PL/SQL procedure successfully completed.

7.再次审查服务可以看到Method, Type和Retries值

select name, failover_method, failover_type, failover_retries,goal, clb_goal,aq_ha_notifications
from dba_services where service_id = 7;

再次审查服务可以看到Method, Type和Retries值:

SQL> select name, failover_method, failover_type, failover_retries,goal, clb_goal,aq_ha_notifications    2  from dba_services where service_id = 7;NAME            METHOD      TYPE        RETRIES GOAL       CLB_GOAL AQNOT--------------- ----------- ---------- -------- ---------- -------- -----server_taf      BASIC       SELECT          180 NONE       LONG     YES

8.检查已注册的服务的监听信息

lsnrctl services

Service "server_taf.za.oracle.com" has 2 instance(s).
Instance "rac1", status READY, has 2 handler(s) for this service...
Handler(s):
"DEDICATED" established:0 refused:0 state:ready
REMOTE SERVER
(ADDRESS=(PROTOCOL=TCP)(HOST=dell01)(PORT=1521))
"DEDICATED" established:0 refused:0 state:ready
LOCAL SERVER
Instance "rac2", status READY, has 1 handler(s) for this service...
Handler(s):
"DEDICATED" established:0 refused:0 state:ready
REMOTE SERVER
(ADDRESS=(PROTOCOL=TCP)(HOST=dell02)(PORT=1521))

我这里版本差异,显示有区别,分别在不同节点显示自己的实例:

--node1:Service "server_taf" has 1 instance(s).  Instance "jyzhao1", status READY, has 1 handler(s) for this service...    Handler(s):      "DEDICATED" established:0 refused:0 state:ready         LOCAL SERVERThe command completed successfully--node2:Service "server_taf" has 1 instance(s).  Instance "jyzhao2", status READY, has 1 handler(s) for this service...    Handler(s):      "DEDICATED" established:0 refused:0 state:ready         LOCAL SERVERThe command completed successfully

9.创建网络服务名

SERVERTAF =
(DESCRIPTION =
(LOAD_BALANCE = yes)
(ADDRESS = (PROTOCOL = TCP)(HOST = dell01)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = dell02)(PORT = 1521))
(CONNECT_DATA =
(SERVICE_NAME = server_taf.za.oracle.com)
)
)

服务端RAC所有节点配置tnsnames.ora,添加内容:

SERVERTAF =  (DESCRIPTION =    (LOAD_BALANCE = yes)    (ADDRESS = (PROTOCOL = TCP)(HOST = jyrac1)(PORT = 1521))    (ADDRESS = (PROTOCOL = TCP)(HOST = jyrac2)(PORT = 1521))    (CONNECT_DATA =      (SERVICE_NAME = server_taf)    )  )

sqlplus system/oracle@192.168.56.160/server_taf

10.测试TAF功能

select host_name,instance_name from v$instance;

SQL> select instance_name from V$instance;
INSTANCE_NAME
----------------
rac2

SQL> shutdown abort;
ORACLE instance shut down.

select host_name,instance_name from v$instance;

10.1 模拟客户端使用scanVIP测试能否实现TAF
sqlplus system/oracle@192.168.56.160/server_taf

[grid@jyrac1 ~]$ sqlplus system/oracle@192.168.56.160/server_tafSQL*Plus: Release 11.2.0.4.0 Production on Fri Mar 10 02:59:53 2017Copyright (c) 1982, 2013, Oracle.  All rights reserved.Connected to:Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit ProductionWith the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,Data Mining and Real Application Testing optionsSQL> select host_name,instance_name from v$instance;HOST_NAME----------------------------------------------------------------INSTANCE_NAME----------------jyrac1jyzhao1--这里强制关掉jyzhao1实例。SQL> /HOST_NAME----------------------------------------------------------------INSTANCE_NAME----------------jyrac2jyzhao2

10.1 结论: 可以实现TAF功能,相当于客户端不再需要配置,直接通过SCAN VIP连接。

10.2 模拟客户端使用Public IP测试能否实现TAF
sqlplus system/oracle@192.168.56.150/server_taf

SQL>  select host_name,instance_name from v$instance;HOST_NAME----------------------------------------------------------------INSTANCE_NAME----------------jyrac1jyzhao1--这里强制关掉jyzhao1实例。SQL> / select host_name,instance_name from v$instance*ERROR at line 1:ORA-12153: TNS:not connectedProcess ID: 20116Session ID: 24 Serial number: 7

如果客户端配置tnsnames.ora,将publicIP配置

TAF =  (DESCRIPTION =    (LOAD_BALANCE = yes)    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.150)(PORT = 1521))    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.152)(PORT = 1521))    (CONNECT_DATA =      (SERVICE_NAME = server_taf)    )  )

再次测试:

[oracle@jyrac2 admin]$ sqlplus system/oracle@tafSQL*Plus: Release 11.2.0.4.0 Production on Fri Mar 10 05:11:30 2017Copyright (c) 1982, 2013, Oracle.  All rights reserved.Connected to:Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit ProductionWith the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,Data Mining and Real Application Testing optionsSQL> select host_name,instance_name from v$instance;HOST_NAME----------------------------------------------------------------INSTANCE_NAME----------------jyrac2jyzhao2--这里强制关掉jyzhao2实例。SQL> /HOST_NAME----------------------------------------------------------------INSTANCE_NAME----------------jyrac1jyzhao1

10.2 结论: 直接连接Public IP无法实现TAF功能。但客户端配置Public IP列表,可以实现。

10.3 模拟客户端使用VIP测试能否实现TAF
sqlplus system/oracle@192.168.56.151/server_taf

[grid@jyrac1 ~]$ sqlplus system/oracle@192.168.56.151/server_tafSQL*Plus: Release 11.2.0.4.0 Production on Fri Mar 10 04:32:20 2017Copyright (c) 1982, 2013, Oracle.  All rights reserved.Connected to:Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit ProductionWith the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,Data Mining and Real Application Testing optionsSQL> select host_name,instance_name from v$instance;HOST_NAME----------------------------------------------------------------INSTANCE_NAME----------------jyrac1jyzhao1SQL> /select host_name,instance_name from v$instance*ERROR at line 1:ORA-03113: end-of-file on communication channelProcess ID: 32459Session ID: 159 Serial number: 3

如果客户端配置tnsnames.ora,可以通过sqlplus system/oracle@tafvip连接。

TAFVIP =  (DESCRIPTION =    (LOAD_BALANCE = yes)    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.151)(PORT = 1521))    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.153)(PORT = 1521))    (CONNECT_DATA =      (SERVICE_NAME = server_taf)    )  )

再次测试:

[oracle@jyrac2 admin]$ sqlplus system/oracle@tafvipSQL*Plus: Release 11.2.0.4.0 Production on Fri Mar 10 05:15:32 2017Copyright (c) 1982, 2013, Oracle.  All rights reserved.Connected to:Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit ProductionWith the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,Data Mining and Real Application Testing optionsSQL> select host_name,instance_name from v$instance;HOST_NAME----------------------------------------------------------------INSTANCE_NAME----------------jyrac2jyzhao2--这里强制关掉jyzhao2实例。SQL> /HOST_NAME----------------------------------------------------------------INSTANCE_NAME----------------jyrac1jyzhao1

10.3 结论: 直接连接VIP无法实现TAF功能。但客户端配置VIP列表,可以实现。


服务 客户 客户端 配置 测试 信息 再次 功能 实例 检查 强制 参数 正在 用户 结论 集群 运行 文档 版本 网络 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 花魁咖啡 互联网科技海报 哈尔滨大商圈互联网科技有限公司 河南云网互联网络科技有限公司 互联网科技有限公司经营范围 金融科技还是互联网 上海互联网科技有限公司 远信互联网科技 互联网科技革命 智慧科技互联网 北京禾田雨橡互联网科技 天扬科技互联网广告 汉立互联网科技有限公司联系电话 济南和联互联网科技有限公司 团飞科技与伯堂互联网服务平台 茂名市互联网科技产业园 互联网科技项目计划书材料类 长沙渺峰互联网科技有限公司 科技互联网专业工作会议发言稿 重庆科技产业互联网有哪些 互联网科技公司华为 网络科技有限互联网 杭州互联网科技公司 隆华科技工业互联网 互联网科技人工智能实验室 特约风豹互联网科技为什么扣费 厦门江牛科技互联网 富国互联网科技002692 艺电能源互联网科技有限公司招聘 上海互联网科技园景观
0