目前接手的几个项目中,默认使用的oracle RAC数据库服务,均不能实现自动的会话转移,尤其是对于应用的长连接,一旦发生数据库故障,需要重启应用。
实际11G具备会话迁移机制,为此做了如下配置测试,供参考使用。
◆创建一个测试用户test
[oracle@hencrnopdb1 ~]$sqlplus / as sysdba
SQL> create user test identified by test;
User created.
SQL> grant dba to test;
Grant succeeded.
SQL> exit

◆原数据库服务henorcdb,没有针对会话的故障转移功能
[oracle@hencrnopdb1 ~]$sqlplus test/test@137.32.78.106:1521/henorcdb
SQL> select failover_type,failover_method,failed_over from v$session where username=’TEST’;
FAILOVER_TYPE FAILOVER_M FAI
————- ———- —
NONE NONE NO
SQL> exit

◆创建一个新的TAF服务
[oracle@hencrnopdb1 ~]$srvctl add service -d henorcdb -s henorcdb_TAF -r henorcdb1,henorcdb2
[oracle@hencrnopdb1 ~]$srvctl start service -d henorcdb -s henorcdb_TAF
[oracle@hencrnopdb1 ~]$srvctl modify service -d henorcdb -s henorcdb_TAF -q TRUE -P BASIC -e SELECT

◆用新服务henorcdb_TAF连接数据库,本次链接到了节点1
[oracle@hencrnopdb1 ~]$sqlplus test/test@137.32.78.106:1521/henorcdb_TAF
SQL> select instance_number,instance_name,host_name,status from v$instance;
INSTANCE_NUMBER INSTANCE_NAME
————— —————-
HOST_NAME STATUS
—————————————————————- ————
1 henorcdb1
hencrnopdb1 OPEN
SQL> exit

◆用新服务henorcdb_TAF连接数据库,本次链接到了节点2
[oracle@hencrnopdb1 ~]$sqlplus test/test@137.32.78.106:1521/henorcdb_TAF
SQL> select instance_number,instance_name,host_name,status from v$instance;
INSTANCE_NUMBER INSTANCE_NAME
————— —————-
HOST_NAME STATUS
—————————————————————- ————
2 henorcdb2
hencrnopdb2 OPEN

◆新数据库服务henorcdb_TAF,有针对会话的故障转移功能
SQL> select failover_type,failover_method,failed_over from v$session where username=’TEST’;
FAILOVER_TYPE FAILOVER_M FAI
————- ———- —
SELECT BASIC NO

◆保留已有会话,临时退出sqlplus
SQL> !

◆关闭会话所连接的数据库节点2
[oracle@hencrnopdb1 ~]$srvctl stop instance -d henorcdb -n hencrnopdb2
[oracle@hencrnopdb1 ~]$exit
exit

◆返回已有的会话,查看此时会话是否还能正常连接数据库,连到了哪个节点上,发现自动连接到了节点1上!
SQL> /
INSTANCE_NUMBER INSTANCE_NAME
————— —————-
HOST_NAME STATUS
—————————————————————- ————
1 henorcdb1
hencrnopdb1 OPEN

SQL> select failover_type,failover_method,failed_over from v$session where username=’TEST’;
FAILOVER_TYPE FAILOVER_M FAI
————- ———- —
SELECT BASIC YES

◆恢复现场,启动节点2
SQL> !
[oracle@hencrnopdb1 ~]$srvctl start instance -d henorcdb -n hencrnopdb2
[oracle@hencrnopdb1 ~]$exit
exit

◆会话并不会自动切换回节点2
SQL> /
FAILOVER_TYPE FAILOVER_M FAI
————- ———- —
SELECT BASIC YES
SQL> select instance_number,instance_name,host_name,status from v$instance;
INSTANCE_NUMBER INSTANCE_NAME
————— —————-
HOST_NAME STATUS
—————————————————————- ————
1 henorcdb1
hencrnopdb1 OPEN

◆◆结论
oralce 11G的RAC具备对已有session的自动故障保护机制,当前连接的节点down掉的话,可以将已有连接自动迁移到另外的节点。
对于正在执行的事务,是不是可以无缝迁移,尚待验证。
只是遗憾的是,默认的数据库服务并不具备TAF功能,需要另外的配置,具体如上所述。

最新文章

  1. 如何数据库表数据导出到excel中
  2. 使用intellij的svn时提示出错: Can't use Subversion command line client: svn.Errors found while svn working copies detection.
  3. ZOJ 3481. Expand Tab
  4. webservice入门(2)开发ws程序
  5. MVC – 6.控制器 Action方法参数与返回值
  6. 四则运算(2)之软件单元测试:Right-BICEP
  7. 浅析nginx的负载均衡
  8. 000webhost找不到文件自定义错误
  9. Js-Html 前端系列--全选,反选
  10. vue 2.0 路由切换以及组件缓存源代码重点难点分析
  11. python静态属性的理解
  12. VUE之图表操作
  13. mysql 报错 Packets larger than max_allowed_packet are not allowed
  14. linux上面是否有安装redis,redis启动
  15. How to disable SSL certificate checking with Spring RestTemplate?(使用resttemplate访问https时禁用证书检查)
  16. 异步FIFO格雷码与空满
  17. Mysql 断电数据损毁恢复
  18. 用尾递归和普通递归实现n!算法,二者比较
  19. 51NOD1965:奇怪的式子
  20. HTML5 选择前置摄像头,选择后置摄像头

热门文章

  1. redhat7 常用命令
  2. java 自动备份MySQL 数据库(转载)
  3. mysql show命令
  4. (中等) HDU 3265 Posters , 扫描线。
  5. Xcode6之后创建Pch预编译文件
  6. Codeforces 242E:XOR on Segment(位上的线段树)
  7. 360路由器设置网段ip
  8. linux  指令 备注
  9. pyv8安装
  10. Reactive 网络状态 Activity indicator view