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. 页面置换算法-LRU(Least Recently Used)c++实现

    最近最久未使用(LRU)置换算法 #include <iostream> #include <cstdio> #include <cstring> #include ...

  2. 301 Remove Invalid Parentheses 删除无效的括号

    删除最小数目的无效括号,使输入的字符串有效,返回所有可能的结果.注意: 输入可能包含了除 ( 和 ) 以外的元素.示例 :"()())()" -> ["()()() ...

  3. 在计算机视觉与人工智能领域,顶级会议比SCI更重要(内容转)

    很多领域,SCI是王道,尤其在中国,在教师科研职称评审和学生毕业条件中都对SCI极为重视,而会议则充当了补充者的身份.但是在计算机领域,尤其是人工智能与机器学习领域里,往往研究者们更加青睐于会议 我无 ...

  4. Unity笔记(2)自学第一天

    学习记录: 界面使用:

  5. npm换淘宝源 yarn换淘宝源

    查询初始的源 npm get registry > https://registry.npmjs.org/ 设置淘宝源 npm config set registry http://regist ...

  6. HDU_1875_畅通工程再续

    畅通工程再续 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Subm ...

  7. facade模式-服务-配置----系统生成与配置

    facade模式对外提供一组相关服务: 对内整合子系统: facade模式的创建过程需要依赖外部的配置. 配置完成以后才能使用服务. 推广开来,所有系统都需要生成与配置,然后才能对外提供服务.

  8. Microsoft Access Engine

    在64位Win7操作系统中安装Microsoft Access Engine的解决方案 原创 2014年01月06日 19:33:56 44847 现在的Win7系统中安装的一般都是32位的Offic ...

  9. Python常用的内建模块

    PS:Python之所以自称“batteries included”,就是因为内置了许多非常有用的模块,无需额外安装和配置,即可直接使用.下面就来看看一些常用的内建模块. 参考原文 廖雪峰常用的内建模 ...

  10. moongoTemplate使用

          添加依赖   <dependency> <groupId>org.springframework.boot</groupId> <artifact ...