-- 本文出自sleest (感谢yangjj ^_^)
场景分析:
某天系统的数据库维护方要求进行DG备库容灾演练,要把生产用RAC库模拟宕机并转移至DG备库上,由于是failover而不是switchover演练,于是期间不对外开放apache访问,要求服务启动时间较紧.
数据库的切换导致IP的变更,这样导致ap上正在跑的系统不得不重新配置数据库连接,基于目前的机制需要执行以下步骤:
a).停止服务群组
b).移除服务包
c).源服务包替换配置文件(这样还要求服务包的当前版本备份完好)
d).重新上传服务包
e).分发至群组,最后启动群组
f).当源库恢复正常时又得来一遍T T
这样处理显然比DG库改IP花费更高,虽然DG要改相应监听等操作,但据了解可以通过命令行即批处理减少每次的工作量.
于是引申如何在DB出现异常时服务快速恢复的问题
分析:
1.时间花费主要用在了重新部署服务包上,如何省略这个步骤,简单想有两个方案
a).重写使用数据源初始化连接池的方案
b).使用容器托管数据源,服务包通过JNDI进行请求
其中a方案否决,一不通用,二重写的话后面出问题又要重写人负责= =
因此使用容器托管数据源的方案.
环境:
JBOSS EAP 6 domain集群
服务使用spring管理
数据库oracle 11g
解决方案:
1.暂定使用ojdbc作为驱动,因此首先要有个ojdbc6.jar,传说其他版本可能会有部分问题,如14不兼容jdk1.6,_gz不支持11g等
2.让jboss加载该驱动:
建立如下图所示的目录结构: