您在这里:首页 > 学员专区 > 技术文章
Oracle视频
Oracle
CUUG课程

Oracle RAC failover 测试

 


   Oracle RAC中,除了基于客户端的TAF方式之外,还有基于服务器端的TAF方式,可以把服务端的TAF方式看作是客户端TAF方式的一个升级版吧。服务器端的TAF,当然是需要在服务器端进行配置了,这个是通过Service来完成的。本文主要描述Oracle 10g rac 下通过service方式配置服务器端的TAF。

 

    

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命令行。下面直接以命令行方式配置 
   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

 

 

(以上内容摘于网络,如有侵权,请告之,将第一时间删除)

相关文章 [上一篇] RAC 环境下修改归档模式
010-88589926(88587026)
CUUG热门培训课程
Oracle DBA就业培训
CUUG名师
网络课程
技术沙龙
最新动态

总机:(010)-88589926,88589826,88587026 QQ讨论群:243729577 182441349 邮箱:cuug_bj@cuug.com
通信地址:北京市海淀区紫竹院路98号北京化工大学科技园609室(CUUG)邮政编码:100089 
中国UNIX用户协会 Copyright 2010  ALL Rights Reserved 北京神脑资讯技术有限公司
京ICP备11008061号  京公网安备110108006275号