Oracle RAC 客户端故障转移(failover),当采用TAF方式时,对于已经建立连接的客户端,在连接的实例或节点出现故障时,客户端无需再次发出连接请求,仍然可以继续之前的数据库操作,此称之为透明故障转移。使用TAF,需要配置客户端tnsnames.ora文件,在其中增加了failover_mode选项,failover=on是默认配置,不写也行。今天试验验证type=select和type=session的区别。这两种参数的设置在实例崩溃时都会对事务进行回滚,其不同之处在于对于节点崩溃时正在执行的select语句的处理。type=select会将正在执行的select语句转移到新的节点上继续执行返回后续的结果集,而type=session则会终止查询,想要再此查询需要重新运行select语句,从头开始进行查询。假设用户正在节点1上执行查询,整个结果集共有100条记录,现在已从节点1上返回10条记录,这时节点1宕机,用户连接被转移到节点2上,如果是session模式,则需要重新执行查询语句;如果是select方式,会从节点2上继续返回剩下的90天记录,而已经从节点1返回的10条记录不会重复返回给用户,对于用户而言,感受不到这种切换。显然为了实现select 方式,Oracle 必须为每个session保存更多的内容,包括游标,用户上下文等,需要更多的资源也是用资源换时间的方案。下面开始进行试验一、type=selecttnsnames配置如下RACDB= (description = (address = (protocol = tcp)(host = 192.168.1.201)(port = 1521)) (address = (protocol = tcp)(host = 192.168.1.202)(port = 1521)) (load_balance = yes) (connect_data = (server = dedicated) (service_name = RACDB) (failover_mode = (type = select) (method = preconnect) (retries = 180) (delay = 5) ) ) ) 实验开始:首先连接到RAC后查看此时的instance_name,并运行查询语句[oracle@jp admin]$ sqlplus sys/oracle@RACDB as sysdba SQL*Plus: Release 10.2.0.1.0 - Production on Wed Mar 5 06:17:10 2014 Copyright (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 options SYS@RACDB>show parameter instance_name NAME TYPE VALUE------------------------------------ ----------- ------------------------------instance_name string RACDB1SYS@RACDB>select * from dba_objects;...........在执行过程中将RACDB1 shutdown abort模拟节点崩溃SYS@RACDB1>shutdown abortORACLE instance shut down.此时查询卡住几秒钟后,继续返回查询结果,不用重新运行查询语句。二、type=sessiontnsnames.ora配置如下RACDB= (description = (address = (protocol = tcp)(host = 192.168.1.201)(port = 1521)) (address = (protocol = tcp)(host = 192.168.1.202)(port = 1521)) (load_balance = yes) (connect_data = (server = dedicated) (service_name = RACDB) (failover_mode = (type = session) (method = preconnect) (retries = 180) (delay = 5) ) ) ) 实验开始 SYS@RACDB>show parameter instance_name NAME TYPE VALUE------------------------------------ ----------- ------------------------------instance_name string RACDB2SYS@RACDB>select * from dba_objects;省略。。。。。。此时将RACDB2 shutdown abortSYS@RACDB2>shutdown abort ORACLE instance shut down. 此时查询卡住,几秒钟后报错并给出已查询的行数ERROR:ORA-25401: can not continue fetches 750 rows selected.SYS@RACDB>查询此时的instance_nameSYS@RACDB>show parameter instance_name NAME TYPE VALUE------------------------------------ ----------- ------------------------------instance_name string RACDB1已经自动切换到RACDB1上,但查询语句已经中断。 客户端TAF还包括其他一些参数:method=perconnect/basicbasic:只有当感知到当前节点发生故障时才连接到其他节点perconnect:在最初建立连接的时候就建立到所有实例的连接,当前节点发生故障可以快速切换到其他实例上。两个参数的设置区别就在于当前节点出现错误,转换到其他节点上所花的时间的长短,perconnect固然速度会很快,但是也会消耗一定的额外资源,换句话说就是拿资源换速度。如何取舍可根据实际情况自己确定。 load_blance=on/offon在最初建立连接的时候会随机选择一个节点进行连接,由于是随机的所以可以起到负载均衡的作用。如果此时连接的节点出现故障,在开启failover的情况下会自动随机连接另外一个节点,如果所有节点都无法建立连接则返回错误。off从第一个节点开始建立连接,如果第一个节点不能建立连接则在开启failover的情况下继续连接下一个节点,直到最后一个节点也无法建立连接则返回错误。RETRIES:当前节点失败后,失败切换功能会尝试连接备用节点,这个值确定了尝试的次数,如果仅DELAY被指定,RETRIES默认为5DELAY:两次尝试之间等待的秒数,如果仅指定RETRIES,DELAY默认为1秒BACKUP:指定另外一个用于备份连接的网络服务名,当RAC设置为主次模式时,使用此参数,并且METHOD应该设为preconnect
【Oracle优化笔记】访问索引的方法如何通过trace诊断ORA-00060 Deadlock Type?相关资讯 Oracle RAC Oracle failover
- Oracle RAC 更换存储实验 (今 06:38)
- Oracle RAC客户端tnsnames.ora相关 (09/02/2015 19:31:57)
- Oracle 11gR2 RAC集群服务启动与关 (04/29/2015 10:27:54)
| - 11.2.04 Oracle RAC 目录中 (12/21/2015 15:10:42)
- 关于心跳网络引起的Oracle RAC的节 (06/04/2015 17:53:20)
- RedHat 6.4安装Oracle11.2.0.2 RAC (04/27/2015 19:26:34)
|
本文评论 查看全部评论 (0)
评论声明- 尊重网上道德,遵守中华人民共和国的各项有关法律法规<
|