java oracle thin 和 oci 连接方式实现多数据库的故障切换

一、thin方式

该种方式简便易用非经常见。

当中URL为

jdbc:oracle:thin:@(DESCRIPTION=(LOAD_BALANCE=on)

      (ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521))

      (ADDRESS=(PROTOCOL=TCP)(HOST=10.132.111.14)(PORT=1521))

      (CONNECT_DATA=(SERVICE_NAME=busi_db)))

当中LOAD_BALANCE=on表示负载开启,java以随机的方式创建会话连接;

LOAD_BANLANCE=off表示负载关闭,java以顺序的方式创建会话连接,仅仅有

当第一个数据库出现问题无法连接时才会选择第二个数据库进行会话连接。

二、oci方式

windows系统下

1. 详细程序部署的本机须要安装oracleclient:路径为ORALC_HOME;

2. 在系统环境变量PATH追加 ;%ORACLE_HOME%/bin

3. 在系统环境变量中加入NLS_LANG系统环境变量,其字符集与数据库及client一致如:NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK

4. 若系统环境变量中配置了CLASSPATH,则在该变量后追加;%ORACLE_HOME%/lib

5. oracleclient里自带的jdbc驱动(ORACLE_HOME/jdbc/lib/ojdbc*.jar)到自己的project项目。

unix or linux系统下:

1. 详细程序部署的本机须要安装oracleclient:路径为ORALC_HOME;

2. 系统环境变量PATH设置例如以下:

 PATH=$ORACLE_HOME/bin:$PATH

export PATH

3. 系统环境变量LD_LIBRARY_PATH设置例如以下:

LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH

export LD_LIBRARY_PATH

4. 在系统环境变量中设置NLS_LANG变量,其字符集与数据库及client一致如:

NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK"

export NLS_LANG

5. oracleclient里自带的jdbc驱动(ORACLE_HOME/jdbc/lib/ojdbc*.jar)考到自己的项目中从而保持与数据库的一致。否则easy出现无法连接本地方法的异常。

在此列举一个oracleclientTNSNAMES.ORA文件的配置例如以下:

HA_DB =

  (DESCRIPTION_LIST =

     (LOAD_BALANCE = on)

     (FAILOVER = on)    

       (DESCRIPTION =

           (ADDRESS_LIST =

              (LOAD_BALANCE=OFF)

              (FAILOVER=ON)

              (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))

           )

           (CONNECT_DATA =

              (SERVICE_NAME = db1)

              (INSTANCE_NAME = db1)

              (FAILOVER_MODE=(TYPE=session)(METHOD=basic)(RETRIES=4)(DELAY=1))

           )

        )

        (DESCRIPTION =

           (ADDRESS_LIST =

              (LOAD_BALANCE=OFF)

              (FAILOVER=ON)

              (ADDRESS = (PROTOCOL = TCP)(HOST = 10.132.111.14)(PORT = 1521))

           )

           (CONNECT_DATA =

             (SERVICE_NAME = db2)

             (INSTANCE_NAME = db2)

             (FAILOVER_MODE=(TYPE=session)(METHOD=basic)(RETRIES=4)(DELAY=1))

           )

        )

        (DESCRIPTION =

           (ADDRESS_LIST =

              (LOAD_BALANCE=OFF)

              (FAILOVER=ON)

              (ADDRESS = (PROTOCOL = TCP)(HOST = 10.112.11.161)(PORT = 1521))

           )

           (CONNECT_DATA =

              (SERVICE_NAME = db3)

              (INSTANCE_NAME = db3)

              (FAILOVER_MODE=(TYPE=session)(METHOD=basic)(RETRIES=4)(DELAY=1))

           )

        )

       

  )

 

关于当中的配置參数作用请查相关资料

然后Java程序jdbc oci连接时,url写成java:oracle:oci:@ha_db就可以。

java oracle thin 和 oci 连接方式实现多数据库的故障切换的更多相关文章

  1. JDBC-ODBC桥连接方式操纵SQL数据库

    /**  * 功能:演示使用JDBC-ODBC桥连接方式操纵SQL数据库  * 作者:徐守威  * 操作步骤:  * 1.配置数据源  * 2.在程序中连接数据源  * 3.操作数据  */ pack ...

  2. oracle连接方式、创建数据库用户、忘记数据库密码、用户锁定

    一.oracle六种连接方式 ①myEclipse中 打开myEclipse,window----show view----Other---输入DB点击DB browser 选中右键New.出现如下页 ...

  3. Oracle 表三种连接方式(sql优化)

    在查看sql执行计划时,我们会发现表的连接方式有多种,本文对表的连接方式进行介绍以便更好看懂执行计划和理解sql执行原理. 一.连接方式: 嵌套循环(Nested Loops (NL)) (散列)哈希 ...

  4. [Database]各数据库连接配置:Oracle:thin 数据库连接/MySQL 连接配置

    MySQL:          String Driver="com.mysql.jdbc.Driver";    //驱动程序      String URL="jdb ...

  5. Oracle的四种连接方式【转载】

    我们以Oracle自带的表来做例子 主要两张表:dept.emp 一个是部门,一个是员工表结构如下: emp name null? Type Empno not null number(4) enam ...

  6. oracle三种表连接方式

    1. 排序合并连接(Sort Merge Join) 排序合并连接的执行过程如下所示: * 将每个行源的行按连接谓词列排序 * 然后合并两个已排序的行源,并返回生成的行源 例如: select * f ...

  7. oracle的三种连接方式

    1.通过sid jdbc:oracle:thin:@host:port:SID Example: jdbc:oracle:thin:@localhost:1521:sid_test 2.通过servi ...

  8. oracle学习----特殊的连接方式

    1.笛卡儿积 merge join cartesion SQL> select ename,dname from emp,dept; 已选择56行. 执行计划------------------ ...

  9. 转:ORACLE的JDBC连接方式:OCI和THIN

    oracle的jdbc连接方式:oci和thin oci和thin是Oracle提供的两套Java访问Oracle数据库方式. thin是一种瘦客户端的连接方式,即采用这种连接方式不需要安装oracl ...

随机推荐

  1. 2 Spring4 之Bean的配置

    Spring4 之Bean的配置 1 IOC & DI 概述 IOC(Inversion of Control):其思想是反转资源获取的方向. 传统的资源查找方式要求组件向容器发起请求查找资源 ...

  2. web文件上传组件比较jQuery File Upload和Fine Uploader

    jQuery File Upload: https://blueimp.github.io/jQuery-File-Upload/ Fine Uploader: http://fineuploader ...

  3. C++之lambda理解

    简介 在C++ Primer中,是这样定义的-一个lambda表达式表示一个可调用的代码单元,可以将其理解为一个未命名的内联函数:与任何函数类似,一个lambda具有一个返回类型,一个参数列表和一个函 ...

  4. Linux-JDK+Tomcat的安装笔记

    Linux-JDK+Tomcat的安装 一.JDK的安装 1.  使用命令uname –a查看系统的版本确定系统的位数,然后去JDK官网下载相应位数的安装程序,进行安装. 2.  使用rz命令将下载的 ...

  5. GIT(5)----常用命令:新分支,切换,删除,远程推送,标签,日志

    常用命令 1.新分支 创建新分支:git branch <branch_name> 创建分支并切换到新的分支上:git checkout -b <branch_name> 2. ...

  6. Ajax-验证码

    function validateCode(){ var code=document.getElementById("code").value; var spanObj=docum ...

  7. Git_忽略特殊文件

    有些时候,你必须把某些文件放到Git工作目录中,但又不能提交它们,比如保存了数据库密码的配置文件啦,等等,每次git status都会显示“Untracked files ...”,有强迫症的童鞋心里 ...

  8. Struts2 JSONObject的使用

    一.jar包 使用之前必须引入所须要的jar包,这里包含Struts2和JSONObject各自所必须的 Struts2: commons-fileupload-1.2.1.jarcommons-io ...

  9. datagrid在MVC中的运用02-结合搜索

    本文接着上一篇,来体验给datagrid加上搜索功能.主要涉及到: ※ 把一个div与datagrid相关起来 ※ datagrid接收查询参数 ※ 查询参数的封装 效果图: 查询参数封装 分页相关的 ...

  10. HTTP 无状态啊无状态啊

    无状态的根本原因 根本原因是:因为,HTTP协议使用的是Socket套接字TCP连接的,每次监听到的套接字连接是不可能一个个保存起来的.(很消耗资源,假如一个人服务器只保存一个通信连接,一万个岂不是要 ...