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

连接恢复

最新文章

  1. python学习1
  2. Eclipse配置tomcat后,启动tomcat,访问tomcat报404错误
  3. [Bundling and Minification ] 二、绑定的作用
  4. javascript之简单的选择排序法
  5. direction:rtl demo
  6. 转:在MyEclipse+Hibernate
  7. oracle索引,索引的建立、修改、删除
  8. 静态页面中如何传json数据
  9. C学习笔记之预处理指令
  10. 如何实现SQL事务的提交,又不对外进行污染
  11. 几个学习Maven不错的网址
  12. XRouter-像Retrofit一样使用阿里开源路由中间件
  13. C++学习-3
  14. 配置plsql远程连接oracle数据库
  15. Linux下的crontab定时执行任务命令详解(参考:https://www.cnblogs.com/longjshz/p/5779215.html)
  16. 机器学习之支持向量机(SVM)学习笔记
  17. eclipse设置字体_字符编码_快捷键
  18. JoyOI1935 导弹防御塔
  19. require.js 最佳实践【转】
  20. maven(视频学习)

热门文章

  1. RHEL5.6更新yum源
  2. Linux重启和关机命令
  3. 237 Delete Node in a Linked List 删除链表的结点
  4. 网站开发综合技术 第一部分HTML 1.3.2表单
  5. duilib入门问题集
  6. Hacker News的热门排名算法(转)
  7. 梦想CAD控件图层COM接口知识点
  8. js一般用法
  9. 搜索--P1605 迷宫
  10. C++输入输出重载