`
shuai1234
  • 浏览: 971864 次
  • 性别: Icon_minigender_1
  • 来自: 山西
社区版块
存档分类
最新评论

【Oracle RAC】JDBC连接oracle RAC数据库配置

 
阅读更多

问题描述

生产上线系统,未能及时识别到Oracle数据库是RAC环境,上线时,Druid数据源配置按照单实例数据库配置,导致系统无法建立数据库连接,系统无法启动。

补充说明:数据连接池使用的是Alibaba的Druid

临时解决方案

将原有数据库整库导出,在备机上创建单实例数据库,将生产库导入备机,之后启动系统,正常运行。
一个原则:保证业务能够正常实施!

最终解决方案

按照真实环境部署一套Rac测试环境,修改jdbc.url进行测试!

普通配置:

jdbc.url=jdbc\:oracle\:thin\:@127.0.0.1\:1521\:svr_name

RAC下的url配置:

jdbc.url=jdbc\:oracle\:thin\:@(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = host_ip1)(PORT = 1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = host_ip2)(PORT = 1521)) (LOAD_BALANCE = yes)(failover=on)(connect_data= (service_name = oratest)))

其中:

host_ip1host_ip2为你的rac数据库的两个甚至多个节点的ip地址(据说配置到/etc/hosts下也可以为服务id)

service_name 为你的数据库实例名

RAC特性

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

Oracle 10g RAC 的Failover 可以分为3种:

  1. Client-Side Connect time Failover
  2. TAF
  3. Service-Side TAF
Client-Side Connect time Failover

第一种Client-Side Connect time Failover的特点:只在建立连接那一时刻起作用。也就是说,这种Failover方式只在发起连接时才会去感知节点故障,如果节点没有反应,则自动尝试地址列表中的下一个地址。一旦连接建立之后,节点出现故障都不会做处理,从客户端的表现就是会话断开了,用户程序必须重新建立连接。启用这种Failover的方法就是在客户端的tnsnames.ora中添加FAILOVER=ON 条目,这个参数默认就是ON,所以即使不添加这个条目,客户端也会获得这种Failover能力。

TAF

第二种TAF的特点:建立连接以后,应用系统运行过程中,如果某个实例发生故障,连接到这个实例上的用户会被自动迁移到其他的健康实例上。对于应用程序而言,这个迁移过程是透明的,不需要用户的介入,当然,这种透明要是有引导的,因为用户的未提交事务会回滚。 相对于Client-Side Connect Time Failover的用户程序中断,抛出连接错误,用户必须重启应用程序,TAF 这种方式在提高HA上有了很大的进步。

启用方式
只需要在客户端的tnsnames.ora中添加FAILOVER_MODE配置项。
1. METHOD: 用户定义何时创建到其实例的连接,有BASIC 和 PRECONNECT 两种可选值。

BASIC: 是指在感知到节点故障时才创建到其他实例的连接。
PRECONNECT: 是在最初建立连接时就同时建立到所有实例的连接,当发生故障时,立刻就可以切换到其他链路上。

两种方法比较: BASIC方式在Failover时会有时间延迟,PRECONNECT方式虽然没有时间延迟,但是建立多个冗余连接会消耗更多资源,两者就是是用时间换资源和用资源换时间的区别。
2. TYPE: 用于定义发生故障时对完成的SQL 语句如何处理,其中有2种类型:sessionselect.

这2种方式对于未提交的事务都会自动回滚,区别之处在于对select 语句的处理

对于select,用户正在执行的select语句会被转移到新的实例上,在新的节点上继续返回后续结果集,而已经返回的记录集则抛弃。假设用户正在节点1上执行查询,整个结果集共有100条记录,现在已从节点1上返回10条记录,这时节点1宕机,用户连接被转移到节点2上,继续返回剩下的90条记录,而已经从节点1返回的10条记录不会重复返回给用户,对于用户而言,感受不到这种切换。

=====

如果是session模式,则需要重新执行查询语句。

显然为了实现select 方式,Oracle 必须为每个session保存更多的内容,包括游标,用户上下文等,需要更多的资源也是用资源换时间的方案。

3. DELAY 和 RETRIES: 这2个参数分别代表重试间隔时间和重试次数。
示例:

(
    FAILOVER_MODE=
        (TYPE=session)
        (METHOD=basic)
        (RETRIES=180)
        (DELAY=5)
 )
Service-SideTAF

Service-SideTAF可以看作是TAF的一种变种,首先Service-SideTAF也是TAF,所有TAF的特点它都有,其次这种TAF是在服务器上配置的,而不像TAF是在客户端配置的。

引用

Oracle RAC Failover 详解

--------------------- 作者:光阴迷客 来源:CSDN 原文:https://blog.csdn.net/changqing5818/article/details/80867962?utm_source=copy 版权声明:本文为博主原创文章,转载请附上博文链接!

分享到:
评论

相关推荐

    Spring boot连接oracle数据库JDBC配置步骤

    Spring Boot 连接 Oracle 数据库 JDBC 配置步骤 在本文中,我们将详细介绍如何使用 Spring Boot 连接 Oracle 数据库,配置 JDBC 驱动程序,并实现数据库的基本操作。 Step 1: 添加依赖项 在 Spring Boot 项目中,...

    weblogic连接oracle RAC数据源配置

    总结来说,配置WebLogic连接Oracle RAC数据源是一个涉及多个层面的过程,包括JDBC驱动的管理、数据源的创建和配置、高可用性策略的设定,以及部署后的监控。正确执行这些步骤,可以确保WebLogic应用在Oracle RAC环境...

    配置Oracle RAC集群数据源

    配置 Oracle RAC 集群数据源需要考虑多个方面,包括数据源 URL 的配置、连接池的配置、负载均衡和故障转移、服务器配置和集群配置等。正确地配置 Oracle RAC 集群数据源可以提高系统的性能和可用性。

    可用于oracle19c的jdbc驱动

    "ojdbc8"通常代表的就是这种驱动,它不依赖于Oracle客户端,适合分布式环境,适用于远程数据库连接。ojdbc8.jar文件包含了所有必要的类和资源,可以与Java 8及更高版本一起使用。 2. ** JDBC OCI Driver(类型二)*...

    Oracle SOA 套件和 RAC 数据库事务一致性配置指南

    - **OWSM 数据库连接**:Oracle Web Services Manager (OWSM) 是 Oracle SOA 套件的一部分,用于管理 Web 服务的安全性和策略。OWSM 使用独立的连接池,因此需要专门针对 OWSM 配置数据库连接。 - **OC4J 事务管理...

    构建最高可用Oracle数据库系统 Oracle 11gR2 RAC管理、维护与性能优化

    2.7.4创建RAC数据库 2.8测试RAC 2.8.1连接方式测试 2.8.2异常情况测试 2.9虚拟机搭建RAC 2.9.1虚拟机Xen简介 2.9.2启动主机Xen内核 2.9.3 Xen虚拟机创建网络环境 2.9.4创建Xen存储服务器 2.9.5创建Xen...

    Oracle RAC中的几个IP

    SCAN是Oracle RAC提供的一种客户端访问机制,它提供了一个单一的、公共的DNS域名,客户端(如JDBC或PL/SQL)可以通过SCAN来访问数据库,而无需知道具体的节点IP。SCAN由多个IP地址(通常为三个)组成,当客户端发起...

    rac java jdbc配置.txt

    综上所述,RAC Oracle JDBC配置涉及到多个关键参数,它们共同确保了客户端能够高效且可靠地与RAC数据库集群进行交互。正确配置这些参数不仅能够提升应用程序的性能,还能增强其容错能力。理解并掌握这些参数的含义及...

    Oracle JDBC Driver

    Oracle JDBC Driver是Oracle公司提供的Java数据库连接(JDBC)驱动程序,用于在Java应用程序中与Oracle数据库进行交互。Oracle JDBC驱动分为多个版本,其中ojdbc5和ojdbc6是两个重要的版本,尤其针对Oracle数据库11g...

    oracle12c-jdbc全量包

    Oracle 12c JDBC全量包是针对Oracle Database 12c版本的Java数据库连接(JDBC)驱动程序集合,提供了全面的驱动支持,适用于Java开发者进行与Oracle数据库的交互。这个包包含了针对不同Java Development Kit (JDK) ...

    oracle各个版本的驱动包

    - ojdbc是Oracle提供的Java数据库连接(JDBC)驱动程序,用于在Java应用程序中与Oracle数据库进行通信。ojdbc的不同版本对应于Oracle数据库的不同版本,确保了兼容性和最佳性能。 - ojdbc5适用于Java 5和Oracle 10...

    Oracle RAC

    不过,Java开发者可以使用JDBC(Java Database Connectivity)API来连接和操作Oracle RAC数据库。JDBC驱动程序提供了对RAC集群的透明访问,使应用能够利用RAC的高可用性和负载均衡特性。 五、Oracle RAC的部署和...

    BEA WebLogic Enterprise Platform和ORACLE RAC解决方案

    Oracle Real Application Clusters (RAC),作为推荐的数据库软件Oracle Database 10g Enterprise Edition的一部分,是另一种关键组件,提供了24x7的数据库应用程序支持。RAC能够在低成本服务器集群上创建高可用性...

    Oracle 11g RAC 基本概念

    #### 四、Failover 连接配置 为了确保高可用性,Oracle 11g RAC 提供了两种连接失败转移机制:TAF (Transparent Application Failover) 和 FCF (Fast Connect Failover)。 ##### 1. TAF (透明应用程序故障转移) ...

    Oracle数据库使用指南

    客户端安装主要用于连接到Oracle数据库服务器进行数据操作。客户端软件包括Oracle SQL Developer、ODBC驱动、JDBC驱动等,安装后可以使用SQL语句进行查询、插入、更新和删除操作。 在学习Oracle数据库的过程中,...

    Oracle 19c RAC on Linux安装手册.zip

    在Java环境下,如果你的应用需要与Oracle 19c RAC交互,确保安装了JDBC驱动(如ojdbc8.jar),并在应用程序中配置正确的连接字符串和负载均衡策略。Oracle JDBC驱动支持连接池和RAC的负载均衡,使得应用能够透明地...

    Oracle RAC ASM Datagurad 项目实施

    在Java环境下,Oracle RAC、ASM和DataGuard的实施可能涉及JDBC驱动的配置,以确保Java应用程序能够正确连接到RAC集群中的实例。此外,Java开发者可能需要了解Oracle的高级特性,如分布式事务处理,以便在多实例环境...

    jdbc_oracle

    Oracle数据库是世界上最流行的商业关系型数据库...总之,Oracle 11g JDBC连接涉及到Java编程、数据库连接、SQL执行等多个方面。理解并熟练掌握这些知识点,能够帮助开发者高效地在Java应用中与Oracle数据库进行交互。

Global site tag (gtag.js) - Google Analytics