当前位置:  数据库>oracle

【Oracle】RAC failover切换之TAF

    来源: 互联网  发布时间:2017-06-02

    本文导语: Oracle RAC 客户端故障转移(failover),当采用TAF方式时,对于已经建立连接的客户端,在连接的实例或节点出现故障时,客户端无需再次发出连接请求,仍然可以继续之前的数据库操作,此称之为透明故障转移。 使用TAF,需要配置...

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=select

tnsnames配置如下

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 - Production

With the Partitioning, Real Application Clusters, OLAP and Data Mining options

 

SYS@RACDB>show parameter instance_name

 

NAME                                TYPE        VALUE

------------------------------------ ----------- ------------------------------

instance_name                        string      RACDB1

SYS@RACDB>select * from dba_objects;

...........

在执行过程中将RACDB1 shutdown abort模拟节点崩溃

SYS@RACDB1>shutdown abort

ORACLE instance shut down.

此时查询卡住几秒钟后,继续返回查询结果,不用重新运行查询语句。

二、type=session

tnsnames.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      RACDB2

SYS@RACDB>select * from dba_objects;

省略。。。。。。

此时将RACDB2 shutdown abort

SYS@RACDB2>shutdown abort             

ORACLE instance shut down.

 

此时查询卡住,几秒钟后报错并给出已查询的行数

ERROR:

ORA-25401: can not continue fetches

 

 

 

750 rows selected.

SYS@RACDB>

查询此时的instance_name

SYS@RACDB>show parameter instance_name

 

NAME                                TYPE        VALUE

------------------------------------ ----------- ------------------------------

instance_name                        string      RACDB1

已经自动切换到RACDB1上,但查询语句已经中断。

 

客户端TAF还包括其他一些参数:

method=perconnect/basic

basic:只有当感知到当前节点发生故障时才连接到其他节点

perconnect:在最初建立连接的时候就建立到所有实例的连接,当前节点发生故障可以快速切换到其他实例上。

两个参数的设置区别就在于当前节点出现错误,转换到其他节点上所花的时间的长短,perconnect固然速度会很快,但是也会消耗一定的额外资源,换句话说就是拿资源换速度。如何取舍可根据实际情况自己确定。

 

load_blance=on/off

on在最初建立连接的时候会随机选择一个节点进行连接,由于是随机的所以可以起到负载均衡的作用。如果此时连接的节点出现故障,在开启failover的情况下会自动随机连接另外一个节点,如果所有节点都无法建立连接则返回错误。

off从第一个节点开始建立连接,如果第一个节点不能建立连接则在开启failover的情况下继续连接下一个节点,直到最后一个节点也无法建立连接则返回错误。

RETRIES:当前节点失败后,失败切换功能会尝试连接备用节点,这个值确定了尝试的次数,如果仅DELAY被指定,RETRIES默认为5

DELAY:两次尝试之间等待的秒数,如果仅指定RETRIES,DELAY默认为1秒

BACKUP:指定另外一个用于备份连接的网络服务名,当RAC设置为主次模式时,使用此参数,并且METHOD应该设为preconnect


    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Linux Oracle RAC内核参数
  • 配置Oracle RAC需要注意的问题
  • Oracle RAC 10.2.0.1升级到10.2.0.4
  • Linux下Oracle RAC一个节点宕机导致共享存储无法挂载的故障排除
  • Oracle10201 RAC升级到10204后导出数据时报EXP-00056错误
  • 与Oracle RAC相关的连接配置写法实例
  • [Oracle] RAC 之 - 负载均衡深入解析
  • 如何在RAC环境下修改Oracle字符集
  • Oracle RAC 状态检查
  • 基于Linux平台的Oracle RAC 10g集群教程:删除节点所需要的步骤
  • Linux Oracle10.2.0 RAC配置注意问题
  • redhat 5.5全新安装oracle rac的问题[1000分]
  • Oracle 10201 RAC升级到10204
  • oracle 11g RAC 常用命令整理分享
  • Redflag Linux安装Oracle 10gR2 RAC记事
  • 基于Linux平台的Oracle RAC 10g集群教程:添加节点所需要的步骤
  • Oracle10g RAC for Linux配置全过程
  • Oracle 12c发布简单介绍及官方下载地址
  • 在linux下安装oracle,如何设置让oracle自动启动!也就是让oracle那个服务自动启动,不是手动的
  • oracle 11g最新版官方下载地址
  • 请问su oracle 和su - oracle有什么不同?
  • Oracle 数据库(oracle Database)Select 多表关联查询方式
  • 虚拟机装Oracle R12与Oracle10g
  • Oracle数据库(Oracle Database)体系结构及基本组成介绍
  • Oracle 数据库开发工具 Oracle SQL Developer
  • 如何设置让Oracle SQL Developer显示的时间包含时分秒
  • Oracle EBS R12 支持 Oracle Database 11g
  • Oracle 10g和Oracle 11g网格技术介绍
  • SCO unix下安装oracle,但没有光盘,请大家推荐一个oracle下载站点(unix版本的)。谢谢!!!!
  • oracle中如何把表中具有相同值列的多行数据合并成一行
  • 请问大家用oracle数据库, 用import oracle.*;下的东西么? 还是用标准库?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,