Oracle RAC中,除了基于客户端的TAF方式之外,还有基于服务器端的TAF方式,可以把服务端的TAF方式看作是客户端TAF方式的一个升级版吧。服务器端的TAF,当然是需要在服务器端进行配置了,这个是通过Service来完成的。本文主要描述Oracle 10g rac 下通过service方式配置服务器端的TAF。
下面是一些关于这方面的基础参考链接:
有关负监听配置,载均衡(load balance)请参考
ORACLE RAC 监听配置 (listener.ora tnsnames.ora)
ORACLE RAC 下非缺省端口监听配置(listener.ora tnsnames.ora)
Oracle RAC 客户端连接负载均衡(Load Balance)
Oracle RAC 服务器端连接负载均衡(Load Balance)
Oracle RAC 负载均衡测试(结合服务器端与客户端)
有关Oracle RAC failover 连接时故障转移请参考
Oracle RAC failover 测试(连接时故障转移)
Oracle RAC failover 测试(TAF方式)
有关Services的创建请参考
Services in Oracle Database 10g
再说 Oracle RAC services
1、服务器端、客户端的环境 #服务器端环境,host信息 oracle@bo2dbp:~> cat /etc/hosts |grep vip 192.168.7.61 bo2dbp-vip.2gotrade.com bo2dbp-vip 192.168.7.62 bo2dbs-vip.2gotrade.com bo2dbs-vip #服务器端环境,集群信息 oracle@bo2dbp:~> ./crs_stat.sh Resource name Target State -------------- ------ ----- ora.GOBO4.GOBO4A.inst ONLINE ONLINE on bo2dbp ora.GOBO4.GOBO4B.inst ONLINE ONLINE on bo2dbs ora.GOBO4.db ONLINE ONLINE on bo2dbp ora.bo2dbp.ASM1.asm ONLINE ONLINE on bo2dbp ora.bo2dbp.LISTENER_BO2DBP.lsnr ONLINE ONLINE on bo2dbp ora.bo2dbp.LISTENER_ORA10G_BO2DBP.lsnr ONLINE ONLINE on bo2dbp ora.bo2dbp.gsd ONLINE ONLINE on bo2dbp ora.bo2dbp.ons ONLINE ONLINE on bo2dbp ora.bo2dbp.vip ONLINE ONLINE on bo2dbp ora.bo2dbs.ASM2.asm ONLINE ONLINE on bo2dbs ora.bo2dbs.LISTENER_BO2DBS.lsnr ONLINE ONLINE on bo2dbs ora.bo2dbs.LISTENER_ORA10G_BO2DBS.lsnr ONLINE ONLINE on bo2dbs ora.bo2dbs.gsd ONLINE ONLINE on bo2dbs ora.bo2dbs.ons ONLINE ONLINE on bo2dbs ora.bo2dbs.vip ONLINE ONLINE on bo2dbs ora.ora10g.db ONLINE ONLINE on bo2dbp #客户端环境 robin@SZDB:~> cat /etc/issue Welcome to SUSE Linux Enterprise Server 10 SP3 (x86_64) - Kernel \r (\l). robin@SZDB:~> sqlplus -v SQL*Plus: Release 10.2.0.3.0 - Production #客户端tnsnames配置 GOBO4 = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.7.61)(PORT = 1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.7.62)(PORT = 1521)) (LOAD_BALANCE = yes) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = TAF) #注意我们客户端的SERVICE_NAME,我们设置为TAF ) ) 2、在服务器端配置service 配置service有多种方式,如dbca,oem,srvctl命令行。下面直接以命令行方式配置 关于什么是service以及如何使用srvctl命令行创建service,请参考: http://blog.csdn.net/robinson_0612/article/details/8124232 oracle@bo2dbp:~> srvctl add service -d GOBO4 -s TAF -r GOBO4A -a GOBO4B -P basic oracle@bo2dbp:~> srvctl start service -d GOBO4 -s TAF oracle@bo2dbp:~> ./crs_stat.sh | grep TAF ora.GOBO4.TAF.GOBO4A.srv ONLINE ONLINE on bo2dbp ora.GOBO4.TAF.cs ONLINE ONLINE on bo2dbp oracle@bo2dbp:~> srvctl config service -d GOBO4 -a TAF PREF: GOBO4A AVAIL: GOBO4B TAF: basic oracle@bo2dbp:~> export ORACLE_SID=GOBO4A oracle@bo2dbp:~> sqlplus / as sysdba SQL*Plus: Release 10.2.0.3.0 - Production on Mon Dec 17 14:55:02 2012 Copyright (c) 1982, 2006, Oracle. All Rights Reserved. Connected to: Oracle Database 10g Release 10.2.0.3.0 - 64bit Production With the Real Application Clusters option SQL> show parameter service NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ service_names string SYS$SYS.KUPC$S_1_2012102317304 4.GOBO4, SYS$SYS.KUPC$C_1_2012 1023173044.GOBO4, GOBO4, TAF SQL> begin 2 dbms_service.modify_service( 3 service_name=>'TAF', 4 failover_method =>dbms_service.failover_method_basic, 5 failover_type =>dbms_service.failover_type_select, 6 failover_retries =>180, 7 failover_delay=>5); 8 end; 9 / PL/SQL procedure successfully completed. SQL> select name,failover_method,failover_type,goal,clb_goal from dba_services 2 where name='TAF'; NAME FAILOVER_METHOD FAILOVER_TYPE GOAL CLB_G -------------------- -------------------- --------------- ------------ ----- TAF BASIC SELECT LONG SQL> ho lsnrctl status .......... Service "TAF" has 1 instance(s). Instance "GOBO4A", status READY, has 2 handler(s) for this service... The command completed successfully 3、测试服务器端TAF robin@SZDB:~> sqlplus fail_over/fail@gobo4 fail_over@GOBO4> get verify.sql 1 REM the following query is for TAF connection verification 2 col sid format 99999 3 col serial# format 9999999 4 col failover_type format a13 5 col failover_method format a15 6 col failed_over format a11 7 Prompt 8 Prompt Failover status for current user 9 Prompt ============================================ 10 SELECT sid, 11 serial#, 12 failover_type, 13 failover_method, 14 failed_over 15 FROM v$session 16 WHERE username = 'FAIL_OVER'; 17 REM the following query is for load balancing verification 18 col host_name format a20 19 Prompt 20 Prompt Current instance name and host name 21 Prompt ======================================== 22* SELECT instance_name,host_name FROM v$instance; 23 #下面的连接查询中表明客户端当前连接到了节点bo2dbp,其实例名为GOBO4A fail_over@GOBO4> @verify Failover status for current user ============================================ SID SERIAL# FAILOVER_TYPE FAILOVER_METHOD FAILED_OVER ------ -------- ------------- --------------- ----------- 1073 48 SELECT BASIC NO Current instance name and host name ======================================== INSTANCE_NAME HOST_NAME ---------------- -------------------- GOBO4A bo2dbp #此时停止节点bo2dbp oracle@bo2dbp:~> srvctl stop instance -d GOBO4 -i GOBO4A #查看停止节点bo2dbp即实例GOBO4A后的结果 oracle@bo2dbp:~> ./crs_stat.sh |grep inst ora.GOBO4.GOBO4A.inst OFFLINE OFFLINE ora.GOBO4.GOBO4B.inst ONLINE ONLINE on bo2dbs #此时回到客户端再次执行查询,FAILED_OVER的值已经变成YES,即表明当前的session为failover过来的 #同时实例名和节点名也发生了变化 fail_over@GOBO4> set timing on; fail_over@GOBO4> @verify Failover status for current user ============================================ SID SERIAL# FAILOVER_TYPE FAILOVER_METHOD FAILED_OVER ------ -------- ------------- --------------- ----------- 1082 396 SELECT BASIC YES Elapsed: 00:00:04.19 Current instance name and host name ======================================== INSTANCE_NAME HOST_NAME ---------------- -------------------- GOBO4B bo2dbs Elapsed: 00:00:00.01 4、小结 a、服务器端的TAF方式的failover通过在服务器端配置service来完成 b、服务器端的TAF方式与客户端的TAF方式产生同样的效果 b、一旦在服务端配置了基于服务器端的TAF,客户端再无需通过在客户端添加FAILOVER_MODE项 c、该方式简化客户端配置,通过集中统一管理service实现failover
更多参考
有关Oracle RAC请参考
使用crs_setperm修改RAC资源的所有者及权限
使用crs_profile管理RAC资源配置文件
RAC 数据库的启动与关闭
再说 Oracle RAC services
Services in Oracle Database 10g
Migrate datbase from single instance to Oracle RAC
Oracle RAC 连接到指定实例
Oracle RAC 负载均衡测试(结合服务器端与客户端)
Oracle RAC 服务器端连接负载均衡(Load Balance)
Oracle RAC 客户端连接负载均衡(Load Balance)
ORACLE RAC 下非缺省端口监听配置(listener.ora tnsnames.ora)
ORACLE RAC 监听配置 (listener.ora tnsnames.ora)
配置 RAC 负载均衡与故障转移
CRS-1006 , CRS-0215 故障一例
基于Linux (RHEL 5.5) 安装Oracle 10g RAC
使用 runcluvfy 校验Oracle RAC安装环境
有关Oracle 网络配置相关基础以及概念性的问题请参考:
配置非默认端口的动态服务注册
配置sqlnet.ora限制IP访问Oracle
Oracle 监听器日志配置与管理
设置 Oracle 监听器密码(LISTENER)
配置ORACLE 客户端连接到数据库
有关基于用户管理的备份和备份恢复的概念请参考
Oracle 冷备份
Oracle 热备份
Oracle 备份恢复概念
Oracle 实例恢复
Oracle 基于用户管理恢复的处理
SYSTEM 表空间管理及备份恢复
SYSAUX表空间管理及恢复
Oracle 基于备份控制文件的恢复(unsing backup controlfile)
有关RMAN的备份恢复与管理请参考
RMAN 概述及其体系结构
RMAN 配置、监控与管理
RMAN 备份详解
RMAN 还原与恢复
RMAN catalog 的创建和使用
基于catalog 创建RMAN存储脚本
基于catalog 的RMAN 备份与恢复
RMAN 备份路径困惑
使用RMAN实现异机备份恢复(WIN平台)
使用RMAN迁移文件系统数据库到ASM
linux 下RMAN备份shell脚本
使用RMAN迁移数据库到异机
有关ORACLE体系结构请参考
Oracle 表空间与数据文件
Oracle 密码文件
Oracle 参数文件
Oracle 联机重做日志文件(ONLINE LOG FILE)
Oracle 控制文件(CONTROLFILE)
Oracle 归档日志
Oracle 回滚(ROLLBACK)和撤销(UNDO)
Oracle 数据库实例启动关闭过程
Oracle 10g SGA 的自动化管理
Oracle 实例和Oracle数据库(Oracle体系结构)