由于项目中使用了oracle v-ip做了oracle数据库集群,现在需要把项目中程序进行升级。
原来的程序中直接使用的是JDBC然后配置的kettle.properties配置文件,如下图:
根据项目需要,查看了相关资料oracle官网说明如下:
大体意思就是:
·设置为native(JDBC)链接方式
·将hostname跟port设置为空(port或设置为-1)
·然后将database name设置为以下三种方式中的一种
(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = host1-vip)(PORT = 1521))(ADDRESS = (PROTOCOL = TCP)(HOST = host2-vip)(PORT = 1521))(LOAD_BALANCE = yes)(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = db-service)(FAILOVER_MODE =(TYPE = SELECT)(METHOD = BASIC)(RETRIES = 180)(DELAY = 5))))
or
(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=xxxx)(PORT=1521))(ADDRESS=(PROTOCOL=TCP)(HOST=xxxx)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=sid)))
or
(DESCRIPTION=(FAILOVER=ON)(ADDRESS_LIST=(LOAD_BALANCE=ON)(ADDRESS=(PROTOCOL=TCP)(HOST=xxxxx)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=sid)))
看了资料,现在开始修改程序配置,刚开始,想直接修改kettle.properties配置文件,将hostname port database name修改,然后程序不用做修改,也就是如下的配置:
这样是改动最小的,但是,经过验证这种方式行不通,程序报错。。。
后来做了修改,如下:
配置文件中需要只修改database name,但是需要修改程序中的数据库连接。
验证结果:
注:如果修改配置后连接数据库失败,查看下kettle版本。
估计只有kettle4.x及以上版本才支持rac模式,我生产原来用的是kettle3.0,升级程序及配置文件后连接失败,升级kettle3.0到kettle4.2之后连接成功。