oracle rac 11gr2中提供了多种 failover方式,这里只测试 server side TAF. 也就是说在server端配置的failover。这种配置方式的好处就是,如果有什么改动可以在server端改动,不必去多个client端改。OK 实验步骤如下:

首先,创建service

[oracle@racnode1 ~]$ srvctl add service -d orcl -s my_service -r "orcl1" -a "orcl2" -P basic

然后,启动service并查看状态。 可以看到service启动在了orcl1上。因为我们指定的preferred instance 就是orcl1.

[oracle@racnode1 ~]$ srvctl start service -d orcl -s my_service
[oracle@racnode1 ~]$ srvctl status service -d orcl -s my_service
Service my_service is running on instance(s) orcl1

我们也可以进入两个instance来看一下service 启动在了哪。

SQL> select instance_name from v$instance;

INSTANCE_NAME
----------------
orcl1 SQL> show parameter service_name NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
service_names string my_service SQL> select instance_name from v$instance; INSTANCE_NAME
----------------
orcl2 SQL> show parameter service_name NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
service_names string orcl

  

现在我们进入orcl DB运行下列代码来配置service 的TAF属性

begin
dbms_service.modify_service(
service_name=>'my_service',
failover_method=>dbms_service.failover_method_basic,
failover_type=>dbms_service.failover_type_select,
failover_retries=>2,
failover_delay=>5);
end;

运行完上面的dbms_service包来修改service的TAF配置后可以运行下面的SQL查看更改是否生效。

SQL> select name,failover_method,failover_type from dba_services where  name='my_service';

NAME                         FAILOVER_METHOD              FAILOVER_TYPE
---------------------------- ---------------------------- ----------------------------
my_service BASIC SELECT

OK. 现在service已经运行起来了,运行在了orcl1上并且配置好了TAF。 我们尝试从客户端发起连接并且,手动的模拟故障,看看该连接是不是会failover到其它Instance。

发起连接。

[oracle@racnode2 ~]$ sqlplus scott/passw0rd@192.168.3.165/my_service

SQL*Plus: Release 11.2.0.3.0 Production on Tue Jul 2 17:14:37 2013

Copyright (c) 1982, 2011, Oracle.  All rights reserved.

Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options SQL> select instance_name from v$instance; INSTANCE_NAME
----------------
orcl1

可见该连接connect到了orcl1上。因为我们用service name来连 当然会连到orcl1上。

通过下面的几个命令,找出该连接的 os pid

SQL> select sid from v$mystat where rownum<2;

       SID
----------
61 SQL> select spid from gv$process where addr in ( select paddr from gv$session where inst_id=1 and sid=61); SPID
------------------------
24845

去instance 1 所在机器kill -9 24845。 这样就可以实现模拟故障。

这时在该session再次运行下面的SQL会出现如下结果。

SQL> select sid from v$mystat where rownum<2;
select sid from v$mystat where rownum<2
*
ERROR at line 1:
ORA-03113: end-of-file on communication channel
Process ID: 25024
Session ID: 59 Serial number: 18071

这说明这时候的 session有故障了。

但是过几秒钟我们再试一下。

SQL> select instance_name from v$instance;

INSTANCE_NAME
----------------
orcl1

连接恢复

RAC fail over 测试的更多相关文章

  1. Oracle RAC 负载均衡测试(结合服务器端与客户端)

    Oracle RAC 负载均衡使得从客户端发起的连接能够有效地分配到监听器负载较小的实例上.有两种方式实现客户端负载均衡,一是通过配置客户端的load_balance,一是通过配置服务器端的remot ...

  2. 【Oracle 集群】Linux下Oracle RAC集群搭建之基本测试与使用(九)

    Oracle 11G RAC数据库安装(九) 概述:写下本文档的初衷和动力,来源于上篇的<oracle基本操作手册>.oracle基本操作手册是作者研一假期对oracle基础知识学习的汇总 ...

  3. 转载:【Oracle 集群】RAC知识图文详细教程(九)--RAC基本测试与使用

    文章导航 集群概念介绍(一) ORACLE集群概念和原理(二) RAC 工作原理和相关组件(三) 缓存融合技术(四) RAC 特殊问题和实战经验(五) ORACLE 11 G版本2 RAC在LINUX ...

  4. RAC集群节点故障模拟测试

    RAC节点故障模拟测试 重启单个RAC 节点模拟测试模拟操作步骤使用shutdown –Fr的方式重启节点,查看系统反应和数据库重新启动的时间.预期测试结果重启单个节点,vip将会切换到另外一个节点. ...

  5. 【转】【Oracle 集群】Linux下Oracle RAC集群搭建之基本测试与使用(九)

    原文地址:http://www.cnblogs.com/baiboy/p/orc9.html   阅读目录 目录 检查RAC状态 检查创建的数据库 全部参考文献 相关文章 Oracle 11G RAC ...

  6. RAC的QA

    RAC: Frequently Asked Questions [ID 220970.1]   修改时间 13-JAN-2011     类型 FAQ     状态 PUBLISHED   Appli ...

  7. Junit 测试断言说明

    Assert.assertEquals("发生错误时报告消息","预期值","生产值"); Assert.assertEquals(&quo ...

  8. Oracle 11g RAC 环境下单实例非缺省监听及端口配置

    如果在Oracle 11g RAC环境下使用dbca创建单实例数据库后,Oracle会自动将其注册到缺省的1521端口及监听器.大多数情况下我们使用的为非缺省监听器以及非缺省的监听端口.而且在Orac ...

  9. Django 测试驱动开发

    第一章 1.编写functional_tests.py from selenium import webdriver browser = webdriver.Firefox() browser.get ...

随机推荐

  1. Using 10053 Trace Events and get outline

    When it comes to performance tuning, we can spend time on one or both ends of the problem. On the &q ...

  2. JavaScript 正则表达式(转自 mozilla)

    正则表达式是被用来匹配字符串中的字符组合的模式.在JavaScript中,正则表达式也是对象. 这种模式可以被用于 RegExp 的 exec 和 test 方法以及 String 的 match.r ...

  3. 01-Entity FrameWork如何控制数据的变化

    在Entity Framework所有操作数据就是更新EF容器中的实体状态 public enum EntityState { Added = , Deleted = , Detached = , M ...

  4. firefox浏览器中 bootstrap 静态弹出框中select下拉框不能弹出(解决方案)

    问题出现场景1: 在firefox浏览器中在bootstrap弹出的modal静态框中再次弹出一个静态框时 select下拉框不能弹出选项 解决方案:去掉最外层静态框的 tabindex=" ...

  5. 简单的css缩放动画,仿腾讯新闻的分享按钮和美团app底部的图标样式

    最近看到一些好看的hover的图形缩放效果.然后自己就写了下,发现这2种效果都不错.如果伙伴们更好的实现方式可以在下面留言哦~ 还有美团的效果,我就不展示了,喜欢的可以去app应用上看看. 这两种效果 ...

  6. angular6 NG-ZORRO 的使用

    1:关于 NG-ZORRO中使用它自己组件改变样式时得使用样式穿透 “class” :: ng-deep "class"

  7. Selenium基于Python web自动化基础一 -- 基础汇总及简单操作

    Selenium是UI层WEB端的自动化测试框架,也是目前市面上比较流行的自动化测试框架. ui层自动化测试本质是什么?模拟用户的真实操作行为. 基础汇总: 导入所需要的模块 from seleniu ...

  8. NodeJS —— 自定义流的实现

    概述 常见的自定义流有四种,Readable(可读流).Writable(可写流).Duplex(双工流)和 Transform(转换流),常见的自定义流应用有 HTTP 请求.响应,crypto 加 ...

  9. VS2015 安装包缺失(联网安装失败)问题解决

    Win7 x86 测试可行 *  如果前面有尝试过安装不成功, 一定要用卸载程序删除已安装的部分,否则会出乱子. 1. 或者是用虚拟光驱加载ISO, 或者是解压到硬盘上, 都没有关系. 2. 用管理员 ...

  10. Objective-C中copy 、retain以及ARC中新加入的strong、weak关键字的含义

    copy: 创建一个引用计数为1的对象,然后释放旧的对象 retain:释放旧的对象,将旧对象的值赋予输入对象,再提高输入对象的引用计数为 1 Copy其实是建立了一个相同的对象,而retain不是: ...