oracle taf c,【TAF】使用Oracle RAC的TAF技术之SESSION类型

《【TAF】使用Oracle RAC的TAF技术实现不间断查询》(http://space.itpub.net/519536/viewspace-676654)文中谈到当FAILOVER_MODE类型为SELECT时可以实现查询语句不间断的返回结果。另外一种类型是SESSION,看一看SESSION类型会给我们带来什么样的效果。1.在tnsnames.ora文件中添加测试连接串RACDB1@rac1 /home/oracle$ vi $ORACLE_HOME/network/admin/tnsnames.oratestractafsession =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = rac1-vip)(PORT = 1521))(ADDRESS = (PROTOCOL = TCP)(HOST = rac2-vip)(PORT = 1521))(LOAD_BALANCE = yes)(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = RACDB)(FAILOVER_MODE =(TYPE = SESSION)(METHOD = BASIC)(RETRIES = 180)(DELAY = 5))))注意,此处配置的FAILOVER_MODE中的TYPE是“SESSION”。2.使用testractaf连接串连接到数据库RACDB1@rac1 /home/oracle$ sqlplus sec/sec@testractafsessionSQL*Plus: Release 10.2.0.1.0 - Production on Mon Oct 25 21:16:47 2010Copyright (c) 1982, 2005, Oracle.  All rights reserved.Connected to:Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - ProductionWith the Partitioning, Real Application Clusters, OLAP and Data Mining optionsSQL> select instance_name from v$instance;INSTANCE_NAME----------------RACDB1可见,此时sqlplus连接到了RAC的第一个实例RACDB1上。3.手工停止RACDB1实例[root@rac2 ~]# srvctl stop instance -d RACDB -i RACDB14.重新确认查询语句所在实例SQL> select instance_name from v$instance;select instance_name from v$instance*ERROR at line 1:ORA-25408: can not safely replay callSQL> select instance_name from v$instance;INSTANCE_NAME----------------RACDB2此时在原sqlplus界面下提交查询SQL语句后立即收到“ORA-25408: can not safely replay call”错误,但是,再次提交同样的查询便会得到结果,结果表明此时已经切换到另外一个实例RACDB2上。这里的报错和不使用TAF技术的报错是有本质区别的,这里最重要的优势是:不需要重新发起连接。5.恢复实例RACDB1,继续[root@rac2 ~]# srvctl start instance -d RACDB -i RACDB1SQL> select instance_name from v$instance;INSTANCE_NAME----------------RACDB26.此处我们模拟一个长时间无法返回全部信息的查询语句SQL> select * from all_objects a,all_objects b,all_objects c where a.object_id=b.object_id and a.object_id=c.object_id;…… 此处省略输出信息 ……7.手工停止RACDB2实例[root@rac2 ~]# crs_stat -tName           Type           Target    State     Host------------------------------------------------------------ora....B1.inst application    ONLINE    ONLINE    rac1ora....B2.inst application    ONLINE    ONLINE    rac2ora.RACDB.db   application    ONLINE    ONLINE    rac2ora....DB1.srv application    ONLINE    ONLINE    rac1ora....DB2.srv application    ONLINE    ONLINE    rac2ora.....taf.cs application    ONLINE    ONLINE    rac1ora....SM1.asm application    ONLINE    ONLINE    rac1ora....C1.lsnr application    ONLINE    ONLINE    rac1ora.rac1.gsd   application    ONLINE    ONLINE    rac1ora.rac1.ons   application    ONLINE    ONLINE    rac1ora.rac1.vip   application    ONLINE    ONLINE    rac1ora....SM2.asm application    ONLINE    ONLINE    rac2ora....C2.lsnr application    ONLINE    ONLINE    rac2ora.rac2.gsd   application    ONLINE    ONLINE    rac2ora.rac2.ons   application    ONLINE    ONLINE    rac2ora.rac2.vip   application    ONLINE    ONLINE    rac2[root@rac2 ~]# srvctl stop instance -d RACDB -i RACDB2[root@rac2 ~]# crs_stat -tName           Type           Target    State     Host------------------------------------------------------------ora....B1.inst application    ONLINE    ONLINE    rac1ora....B2.inst application    OFFLINE   OFFLINEora.RACDB.db   application    ONLINE    ONLINE    rac2ora....DB1.srv application    ONLINE    ONLINE    rac1ora....DB2.srv application    ONLINE    OFFLINEora.....taf.cs application    ONLINE    ONLINE    rac1ora....SM1.asm application    ONLINE    ONLINE    rac1ora....C1.lsnr application    ONLINE    ONLINE    rac1ora.rac1.gsd   application    ONLINE    ONLINE    rac1ora.rac1.ons   application    ONLINE    ONLINE    rac1ora.rac1.vip   application    ONLINE    ONLINE    rac1ora....SM2.asm application    ONLINE    ONLINE    rac2ora....C2.lsnr application    ONLINE    ONLINE    rac2ora.rac2.gsd   application    ONLINE    ONLINE    rac2ora.rac2.ons   application    ONLINE    ONLINE    rac2ora.rac2.vip   application    ONLINE    ONLINE    rac28.结论当RACDB2实例终止后,持续返回的结果信息被中断,紧随其后的是报错信息“ORA-25401: can not continue fetches”,在报错的同时该连接已经重新连接到其他可用的数据库实例上,后续的SQL语句不受影响。错误提示信息如下:…… 省略输出信息 ………… 省略输出信息 ……ERROR:ORA-25401: can not continue fetches2085 rows selected.SQL>SQL> select instance_name from v$instance;INSTANCE_NAME----------------RACDB19.小结本文给出了当故障来临时在FAILOVER_MODE中TYPE选择“SESSION”时的应对特点,此时与“SELECT”类型有一些区别。实例故障出现时,这里选择了报错并终止。在这种配置下可以结合具体应用来应对这些报错。在具体应用设计的过程中需要充分考虑Failover不同模式下的应对方案。Good luck.secooler10.10.25-- The End --

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值