Oracle11g TAF 实例测试
来源:互联网 发布:淘宝 种子种球许可证 编辑:程序博客网 时间:2024/05/21 08:46
TAF(Transparent Application Failover):是指在用户正常连接后,1个节点断掉时,会话不会中断,会自动连接到另外1个节点上。
TAF和failover有一定区别,failover只会在连接时,发现1个节点断掉后,会尝试另1个节点。而连接后的故障转移是TAF。
本文主要测试TAF功能,所用的环境是部署在rhel6.5上的11.2.0.4.0的RAC,客户端连接大多是通过scan+DNS的方式。部分测试是通过VIP进行连接。
一。无TAF功能测试
1. 使用集群默认service连接
在客户端如下配置时:
vmpera =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = racn-cluster-scan.pera.com)(PORT =1521))
)
(CONNECT_DATA =
(SERVICE_NAME = pera)
)
)
SQL> SELECTSID,SERIAL#,FAILOVER_TYPE,failover_method,failed_over
from V$session where username ='SYSTEM';
SID SERIAL# FAILOVER_TYPE FAILOVER_METHOD FAILED
---------- ------------------------------------ -------------------- ------
18 13 NONE NONE NO
连接1个会话进行查询中。。关闭该会话连接的实例后,该会话会断开。并报如下错误:
ERROR:
ORA-03113: 通信通道的文件结尾
进程 ID: 17306
会话 ID: 27 序列号: 45
或者在连接上后,关掉连接到的实例,然后再进行查询时,也会报同样的错误。
2.使用自己创建的service连接
增加service :
[oracle@racn2 ~]$srvctl add service -d pera -s peras1 -r pera1,pera2
启动该service:
[oracle@racn2 ~]$ srvctlstart service -d pera -s peras1
关于srvctl 更多的命令:
http://docs.oracle.com/cd/E11882_01/server.112/e25494/restart.htm#ADMIN12748
修改连接:
vmpera =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = racn-cluster-scan.pera.com)(PORT =1521))
)
(CONNECT_DATA =
(SERVICE_NAME = peras1)
)
)
SQL> SELECTSID,SERIAL#,FAILOVER_TYPE,failover_method,failed_over
2 from V$session where username='SYSTEM';
SID SERIAL# FAILOVER_TYPE FAILOVER_METHOD FAILED
---------- ------------------------------------ -------------------- ------
18 23 NONE NONE NO
就在这样的情况下去连接和上面第一个无TAF测试一样,还是不会故障转移。
二。session级服务器端的TAF
修改service
[oracle@racn2 ~]$ srvctl modify service -dpera -s peras1 -P basic -e session
还是连接到上面的service :peras1
测试session是否会TAF
连接到1个会话
SQL> select instance_name fromV$instance;
INSTANCE_NAME
--------------------------------
pera1
关闭连接到的实例:shutdown abort
立即去查询会报下面的错误:
SQL> select instance_name fromV$instance;
select instance_name from V$instance
*
第 1 行出现错误:
ORA-25408: 无法安全重放调用
秒等几秒后再查询:
SQL> select instance_name fromV$instance;
INSTANCE_NAME
--------------------------------
pera2
测试select是否会TAF
在这种情况发起1个查询:select * from dba_objects,并且在查询未完成进行时,关掉相应实例,此时不会发生select的故障转移,同样会报错:
ERROR:
ORA-03113: 通信通道的文件结尾
进程 ID: 24829
会话 ID: 224 序列号: 7
而且会断开连接:
SQL> select instance_name fromV$instance;
ERROR:
ORA-03114: 未连接到 ORACLE
三。select级服务器端的TAF
将faile_overtype 修改为select
[oracle@racn2 ~]$ srvctl modify service -dpera -s peras1 -P basic -e select
同样使用这样的连接:
vmpera =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = racn-cluster-scan.pera.com)(PORT =1521))
)
(CONNECT_DATA =
(SERVICE_NAME = peras1)
)
)
先测试session能否正常转移
SQL> select instance_name from V$instance;
INSTANCE_NAME
--------------------------------
pera1
关闭相应实例:SQL> startup abort
SQL> select instance_name fromV$instance;
INSTANCE_NAME
--------------------------------
pera2
经测试能够完成session级别的TAF
再测试select能否TAF
SQL> select instance_name fromV$instance;
INSTANCE_NAME
--------------------------------
pera1
SQL> SELECTSID,SERIAL#,FAILOVER_TYPE,failover_method,failed_over
from V$session where username ='SYSTEM';
SID SERIAL# FAILOVER_TYPE FAILOVER_METHOD FAILED
---------- ------------------------------------ -------------------- ------
21 7 SELECT BASIC NO
发起查询select * from dba_objects;
关掉实例1:
查询暂停2、3秒,然后会继续
再次查询,可以看到已经发生了failover
SQL> SELECT SID,SERIAL#,FAILOVER_TYPE,failover_method,failed_over
2 from V$session where username='SYSTEM';
SID SERIAL# FAILOVER_TYPE FAILOVER_METHOD FAILED
---------- ------------------------------------ -------------------- ------
15 13 SELECT BASIC YES
四。客户端配置select级的TAF
客户端连接如下:
vmpera =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = racn-cluster-scan.pera.com)(PORT =1521))
)
(CONNECT_DATA =
(SERVICE_NAME = pera)
(FAILOVER_MODE=(TYPE=select)(METHOD=basic))
)
)
此时连接的服务端不具备TAF功能
SQL> select instance_name fromV$instance;
INSTANCE_NAME
--------------------------------
pera2
SQL> SELECTSID,SERIAL#,FAILOVER_TYPE,failover_method,failed_over
from V$session where username ='SYSTEM';
SID SERIAL# FAILOVER_TYPE FAILOVER_METHOD FAILED
---------- ------------------------------------ -------------------- ------
200 17 SELECT BASIC NO
同上面方法一样,经测得能够完成select 的TAF(故障转移)
五。不能loadbalance下的TAF
以上测试均是在可以load balance的情况下测试的,下面测试不能LOAD balance下可否TAF
如下连接:
vmpera =
(DESCRIPTION =
(ADDRESS_LIST =
(load_balance=off)
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.114.143)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.114.144)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = peras1)
)
)
以上的连接经测试未能实现load balance,连接了5个会话,均连接到了pera1,
SQL> SELECTSID,SERIAL#,FAILOVER_TYPE,failover_method,failed_over
from V$session where username ='SYSTEM';
SID SERIAL# FAILOVER_TYPE FAILOVER_METHOD FAILED
---------- ------------------------------------ -------------------- ------
25 19 SELECT BASIC NO
SQL> select instance_name from
2 V$instance;
INSTANCE_NAME
--------------------------------
pera1
经测试关掉实例1后连接能够正常转移
SQL> select instance_name fromV$instance;
INSTANCE_NAME
--------------------------------
pera2
SQL> SELECTSID,SERIAL#,FAILOVER_TYPE,failover_method,failed_over
2 from V$session where username='SYSTEM';
SID SERIAL# FAILOVER_TYPE FAILOVER_METHOD FAILED
---------- ------------------------------------ -------------------- ------
229 37 SELECT BASIC YES
当然,只连接1个VIP时,虽然service:peras1是具有faile over能力,但是无法实现TAF的。因为1个节点停掉,连正常的连接都无法保证。
vmpera =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.114.143)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = peras1)
)
)
但是会话查询到的信息却是具有faile over能力的
SQL> SELECTSID,SERIAL#,FAILOVER_TYPE,failover_method,failed_over
2 from V$session where username='SYSTEM';
SID SERIAL# FAILOVER_TYPE FAILOVER_METHOD FAILED
---------- ------------------------------------ -------------------- ------
21 3 SELECT BASIC NO
经实际测,在查询时,关掉相应实例后,会断开,而且再也连不上
SQL> conn system/oracle@vmpera
ERROR:
ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务
六。客户端写明fail_over=on下的TAF
客户端连接
vmpera =
(DESCRIPTION =
(ADDRESS_LIST =
(load_balance=off)
(fail_over=off)
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.114.143)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.114.144)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = peras1)
)
)
此时连接的service 是具有TAF功能的peras1,经实际测试,此时也能顺利的进行TAF
SQL> SELECTSID,SERIAL#,FAILOVER_TYPE,failover_method,failed_over
2 from V$session whereusername ='SYSTEM';
SID SERIAL# FAILOVER_TYPE FAILOVER_METHOD FAILED
---------- ------------------------------------ -------------------- ------
15 13 SELECT BASIC NO
进行查询,关实例,发现查询仍在继续,发生了TAF
SQL> SELECTSID,SERIAL#,FAILOVER_TYPE,failover_method,failed_over
2 from V$session whereusername ='SYSTEM';
SID SERIAL# FAILOVER_TYPE FAILOVER_METHOD FAILED
---------- ---------- ---------------------------------------------- ------
21 77 SELECT BASIC YES
- Oracle11g TAF 实例测试
- ORACLE11G RAC 应用分开到不同的实例上.TAF
- Oracle11g RAC 服务器端TAF功能配置
- RAC的TAF简单测试
- RAC的TAF简单测试
- oracle rac 客户端taf测试
- Oracle RAC failover 测试(TAF方式)
- Oracle RAC failover 测试(Server TAF方式)
- Oracle 10g RAC TAF测试
- oracle11g创建数据库实例
- oracle11g 创建ASM实例
- Oracle11g Direct NFS 测试
- ORACLE 11G RAC R2 TAF 测试脚本
- RAC 配置server端TAF, 测试失败, 查不出什么原因
- ORACLE 10g R2 RAC TAF配置与测试
- ORACLE 11G RAC R2 TAF 测试脚本
- oracle11g rac服务切换测试
- oracle11g scanip 负载均衡测试
- javascript高级程序设计笔记(三)
- mini2440编译x86-qtopia(x86-qtopia)(友善之臂)
- 我在Github上的flare-spark项目
- ios中SQLite3的基本操作
- 向shell脚本传参方法
- Oracle11g TAF 实例测试
- Android入门:广播发送者与广播接收者
- delphi关键字break,continue,exit,abort,halt,runerror的区别
- ios 开发中经常用到的 栏控件(bar) 有哪些呢?
- TLD源码理解 run_tld.cpp
- UIButton 同时添加图片和文字 防止图片变形
- 百度正式开放大数据引擎
- ios controller之间传递参数
- UML图和C#