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