Oracle RAC JDBC connection string - multitude - 博客园

标签: | 发表时间:2022-04-17 21:44 | 作者:
出处:https://www.cnblogs.com

完全正确

https://stackoverflow.com/questions/1646630/what-is-the-correct-jdbc-url-to-connect-to-a-rac-database

jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(LOAD_BALANCE=OFF)(FAILOVER=ON)
(ADDRESS=(PROTOCOL=TCP)(HOST=tst-db1.myco.com)(PORT=1604))
(ADDRESS=(PROTOCOL=TCP)(HOST=tst-db2.myco.com)(PORT=1604)))
(CONNECT_DATA=(SERVICE_NAME=mydb1.myco.com)(SERVER=DEDICATED)))

 

官方文档, 一如既往地冗长, 可靠

https://docs.oracle.com/database/121/HABPT/config_fcf.htm#HABPT5381

 

 

PoolDataSource pds = PoolDataSourceFactory.getPoolDataSource();
pds.setConnectionFactoryClassName("oracle.jdbc.pool.OracleDataSource"); pds.setUser("system"); 
 pds.setPassword("oracle"); 
 String dbURL = 
 "jdbc:oracle:thin:@" + 
 "(DESCRIPTION=" + 
"(FAILOVER=on)" + 
 "(ADDRESS_LIST=" + 
 "(LOAD_BALANCE=on)" + 
 "(CONNECT_TIMEOUT=3)(RETRY_COUNT=3)" +
 "(ADDRESS=(PROTOCOL=TCP)(HOST=prmy-scan)(PORT=1521))"+     "(ADDRESS=(PROTOCOL=TCP)(HOST= stby-scan)(PORT=1521)))" + 
 "(CONNECT_DATA=(SERVICE_NAME=oltpworkload)))" 
 System.out.println("Url=" + dbURL); 
 pds.setURL(dbURL); 

 

 

 

 

"jdbc:oracle:thin:@" + 
 "(DESCRIPTION=" + 
"(FAILOVER=on)" + 
 "(ADDRESS_LIST=" + 
 "(LOAD_BALANCE=on)" + 
 "(CONNECT_TIMEOUT=3)(RETRY_COUNT=3)" +
 "(ADDRESS=(PROTOCOL=TCP)(HOST=prmy-scan)(PORT=1521))"+     "(ADDRESS=(PROTOCOL=TCP)(HOST= stby-scan)(PORT=1521)))" + 
 "(CONNECT_DATA=(SERVICE_NAME=oltpworkload)))" 

 

PoolDataSource pds = PoolDataSourceFactory.getPoolDataSource();
pds.setConnectionFactoryClassName("oracle.jdbc.pool.OracleDataSource"); pds.setUser("system"); 
 pds.setPassword("oracle"); 
 String dbURL = 
 "jdbc:oracle:thin:@" + 
 "(DESCRIPTION_LIST=" + 
 "(LOAD_BALANCE=off)" + 
 "(FAILOVER=on)" + 
 "(DESCRIPTION=" +
 "(CONNECT_TIMEOUT=3)(RETRY_COUNT=3)" +
 "(ADDRESS_LIST=" + 
 "(LOAD_BALANCE=on)" + 
 "(ADDRESS=(PROTOCOL=TCP)(HOST=prmy-scan)(PORT=1521)))" + 
 "(CONNECT_DATA=(SERVICE_NAME=oltpworkload)))" + 
 "(DESCRIPTION=" + 
 "(ADDRESS_LIST=" + 
 "(LOAD_BALANCE=on)" + 
 "(ADDRESS=(PROTOCOL=TCP)(HOST= stby-scan)(PORT=1521)))" + 
 "(CONNECT_DATA=(SERVICE_NAME=oltpworkload))))"; 
 System.out.println("Url=" + dbURL); 
 pds.setURL(dbURL); 

 

这个第三方总结很简单, 看样子是第三方驱动厂商

https://support.tibco.com/s/article/JDBC-dbURL-when-using-failover-servers-with-Oracle

Resolution
 When creating the bootstrap use the following formats for the JDBC connection string.

Case 1: When using tibcosoftwareinc.jdbc.oracle.OracleDriver driver (Oracle (DataDirect)), JDBC URL field should contain:
jdbc:tibcosoftwareinc:oracle://<myhost1>:<myport1>SID=<myservice1>AlternateServers=(<myhost2>:<myport2>SID=<myservice2>)
Example URL:
jdbc:tibcosoftwareinc:oracle://host1:1521;ServiceName=orcl;AlternateServers=(host2:1521)
Case 2: When using oracle.jdbc.driver.OracleDriver (the native driver form Oracle), the JDBC URL field should contain:
jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=<myhost1>)(PORT=<myport1>))(SERVICE_NAME=<myservice1>))(ADDRESS=(PROTOCOL=TCP)(HOST=<myhost2>)(PORT=<myport2>))(LOAD_BALANCE=yes)(CONNECT_DATA=(SERVICE_NAME=<myservice2>)(FAILOVER_MODE=(TYPE=SELECT)(METHOD=BASIC)(RETRIES=180))))
Example URL:
jdbc:oracle:thin:@(DESCRIPTION=(LOAD_BALANCE=on)(ADDRESS=(PROTOCOL=TCP)(HOST=host1) (PORT=1521))(ADDRESS=(PROTOCOL=TCP)(HOST=host2) (PORT=1521))(CONNECT_DATA=(SERVICE_NAME=orcl)))
See more information in  Oracle's documentation.
Reference

相关 [oracle rac jdbc] 推荐:

Oracle RAC JDBC connection string - multitude - 博客园

- -
官方文档, 一如既往地冗长, 可靠. 这个第三方总结很简单, 看样子是第三方驱动厂商.

Oracle RAC Failover 详解

- - CSDN博客数据库推荐文章
Oracle  RAC 同时具备HA(High Availiablity) 和LB(LoadBalance). 而其高可用性的基础就是 Failover(故障转移). 它指集群中任何一个节点的故障都不会影响用户的使用,连接到故障节点的用户会被自动转移到健康节点,从用户感受而言, 是感觉不到这种切换.

oracle的jdbc驱动

- - Oracle - 数据库 - ITeye博客
oracle的jdbc驱动主要有下面三类:.   1、JDBC OCI: oci是oracle call interface的缩写,此驱动类似于传统的ODBC 驱动. 因为它需要Oracle Call Interface and Net8,所以它需要在运行使用此驱动的JAVA程序的机器上安装客户端软件,其实主要是用到orcale客户端里以dll方式提供的oci和服务器配置.

Oracle 双机/RAC/Dataguard的区别

- - 数据库 - ITeye博客
  Data Guard 是Oracle的远程复制技术,它有物理和逻辑之分,但是总的来说,它需要在异地有一套独立的系统,这是两套硬件配置可以不同的系统,但是这两套系统的软件结构保持一致,包括软件的版本,目录存储结构,以及数据的同步(其实也不是实时同步的),这两套系统之间只要网络是通的就可以了,是一种异地容灾的解决方案.

Oracle RAC的VIP和SCAN IP - 学海无涯2020 - 博客园

- -
    我们都知道Oracle RAC中每个节点都有一个虚拟IP,简称VIP,与公网IP在同一个网段.     没有VIP时,Oracle客户端是靠“TCP/IP协议栈超时”来判断服务器故障. 而TCP/IP协议栈是作为OS Kernel的一部分来实现,不同的OS有不同的阀值,用户获悉数据库异常的时间完全取决于OS Kernel的实现,虽然有些OS允许修改这个阀值,但是会对其它程序产生未知影响.

(转)Oracle JDBC Memory Management中的客户端缓存

- - jackyrong
  对于oracle jdbc中,一个容易忽略的参数是:prepared-statement-cache-size,这次转来. http://xulingbo.net/?p=109这篇好文,详细讲解了这个参数用法. 从Oracle10g开始在JDBC驱动中,增加了对执行每个Statement的缓存.

oracle jdbc fetchsize取值对性能的影响

- - CSDN博客编程语言推荐文章
       通过JDBC取数据时,默认是10条数据取一次,即fetch size为10,如果增大这个数字可以减少客户端与oracle的往返,减少响应时间,网上有建议这个数字不要超过100,要不然对中间件内存消耗大(没有做过实验). String query_string = "SELECT * FROM test";//test有5万条记录.

JDBC操纵Oracle数据库中的BLOB字段

- - Oracle - 数据库 - ITeye博客
                                                                        BLOB字段的写入. 方法一:(JDBC2.0 规范). 2.插入一个空的blob. 3.使用行级锁定blob字段.                                                                        BLOB字段的读取.

HA-JDBC -

- -
The state manager component is responsible for storing the active status of each database in the cluster, as well as any durability state.

Java Jdbc减少与Oracle之间交互提升批量处理性能,到底该如何优化才好?

- - CSDN博客推荐文章
不拾掇Java有好几年了(N>3吧),之所以写这篇文章其实是纯粹是为了给开发人员一些好的使用jdbc真正去减少交互和提升批量处理batch update性能的例子;  如果你是DBA,那么工作之余你可以把这篇文章推荐给开发看一下, 也许这些例子他已经知道了, 倘若他不知道,那么也算一种福利了. 能考虑到在应用程序client和 数据库服务器DB server间减少交互时间,批量更新处理的绝对是有助于重构和优化代码的好同志;  但这种优化一定要注意方法,如果是自行去重新发明一种轮子的话, 效果往往是不如人意的.