`

c3p0和jdbcTemplate配置oracle集群RAC记录【原】

阅读更多

领导给了一串连接串给我,如下:

PERAC =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 131.197.17.137)(PORT = 1521))
    (ADDRESS = (PROTOCOL = TCP)(HOST = 131.197.17.138)(PORT = 1521))
    (LOAD_BALANCE = yes)
    (FAILOVER = ON)
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = pe)
      (FAILOVER_MODE =
        (TYPE = SELECT)
        (METHOD = BASIC)
        (RETRIES=180)
        (DELAY=5)
      )
    )
  )

要我在程序配置好这一串连接,其实很简单。只需要把上面这一串放在以前只放置一条url连接的url标签就可以了。以前配置的时候只是一个地址。现在有两个,需要用上面那一串。

配置c3p0没问题,如下:

<property name="connection.url">jdbc:oracle:thin:@(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 131.197.17.137)(PORT = 1521))(ADDRESS = (PROTOCOL = TCP)(HOST = 131.197.17.138)(PORT = 1521))(LOAD_BALANCE = yes)(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = pe)))</property>

 

但有些操作用到的是Spring的jdbcTemplate来做的。如果我想c3p0一样把两个地址写在url标签里。会报错,如下:

 Connection refused(DESCRIPTION=(ERR=1153)(VSNNUM=169870336)(ERROR_STACK=(ERROR=(CODE=1153)(EMFI=4)(ARGS='(ADDRESS=(PROTOCOL=TCP)(HOST=131.197.17.138)(PORT=1521))'))(ERROR=(CODE=305)(EMFI=1))))

 

刚开始我以为是138这个机器连不上,因为它提示的是138,于是我只用了137的机器去连接,结果还是报这个错,最后换成了138去连,放而没问题了!不过不能同时写137和138,其实只用到了一个地址。哪怕写一个地址的时候。也要这样写:

 <value>jdbc:oracle:thin:@(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 131.197.17.138)(PORT = 1521))(LOAD_BALANCE = yes)(CONNECT_DATA = (SERVICE_NAME=pe)))</value>

不能简单的url+端口+sid,不然会报错:

 Could not get JDBC Connection; nested exception is java.sql.SQLException: Io 异常: Connection refused(DESCRIPTION=(TMP=)(VSNNUM=169870336)(ERR=12505)(ERROR_STACK=(ERROR=(CODE=12505)(EMFI=4))))

 

我还在尝试,如何才能在spring的jdbcTemplate配置双地址。难道是是因为org.springframework.jdbc.datasource.DriverManagerDataSource有关?要改成连接池?我尝试下吧!反正以上是可以用了。

 

最后问题解决了!其实直接把连接串写在url标签就可以了。只需要你的数据库驱动是最新的!这个很重要。我之前有的是class12.jar,用这个驱动的话很不稳定,时好时坏,于是换了ojdbc.jar,好家伙!怎么折腾都没事!问题解决!

 

以下是网上转载的,留档学习:

顺便记录下配置链接字符串的参数:

address后面就是连接的IP和端口号没什么说的。load_balance=yes;表示是否负载均衡。server = dedicated;表示专用服务器模式,感觉可以去掉。service_name=orcl;要操作数据库的服务名。TYPE = SESSION表示当一个连接好的会话的实例发生故障,系统会自动将会话切换到其他可用的实例,前台应用无须再度发起连接,但会话正在执行的SQL 需要重新执行。METHOD = BASIC表示初始连接就连接一个接点,他还有个选项是preconnect,表示初始连接所有的接点。RETRIES:重试次数。DELAY:重试的延迟(以秒为单位)。

并且集群中如果ORACLE服务器的LISTENER配置的是本机的机器名,则应用方面最好把winnt下的system32\drivers\etc\hosts文件更改一下。最后加上IP对应的机器名,比如:

10.37.27.111 linux1-vip

10.37.27.112 linux2-vip

1
1
分享到:
评论
1 楼 jiangshu 2011-08-25  
打扰了,请问你的rac集群是怎么配置的
一台数据库挂了可以里面连接到第二台数据库
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="driverClass" value="oracle.jdbc.driver.OracleDriver" />
<property name="jdbcUrl"
value="jdbc:oracle:thin:@(DESCRIPTION =(ADDRESS_LIST =(ADDRESS =(PROTOCOL = TCP)(HOST = 10.46.178.36)(PORT = 1521))(ADDRESS = (PROTOCOL = TCP)(HOST = 10.46.178.36)(PORT = 1521))(LOAD_BALANCE = yes))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = zxin)(FAILOVER_MODE =(TYPE = SESSION)(METHOD = BASIC)(RETRIES = 180)(DELAY = 5))))" />
<property name="user" value="zxdev" />
<property name="password" value="zxdev" />
<property name="acquireIncrement" value="10" />
<property name="acquireRetryAttempts" value="30" />
<property name="acquireRetryDelay" value="1000" />
<property name="autoCommitOnClose" value="false" />
<property name="breakAfterAcquireFailure" value="false" />
<property name="checkoutTimeout" value="5000" />
<property name="initialPoolSize" value="20" />
<property name="maxIdleTime" value="10000" />
<property name="maxPoolSize" value="50" />
<property name="maxStatements" value="0" />
<property name="maxStatementsPerConnection" value="0" />
<property name="numHelperThreads" value="3" />
<property name="propertyCycle" value="600" />
</bean>
这是我的配置,如何配置?
请指教

相关推荐

    使用Spring的JdbcTemplate调用Oracle的存储过程

    使用Spring的JdbcTemplate调用Oracle的存储过程

    数据库连接池druid,c3p0,jdbctemplate,jar包.rar

    数据库连接池jar包,包含c3p0、druidjar包和依赖jar包,c3p0通过配置文件xml或者properties读取连接对象 druid通过properties读取连接,使用springJDBC JdbcTempalte简化sql操作

    Spring JdbcTemplate调用Oracle存储过程实现CRUD

    使用 Spring JdbcTemplate 调用 Oracle 存储过程实现 CRUD 在本文中,我们将讨论如何使用 Spring JdbcTemplate 调用 Oracle 存储过程来实现 CRUD(Create、Read、Update、Delete)操作。我们将首先编写 Oracle 存储...

    SpringMvc+JdbcTemplate+oracle的小项目实例

    同时,还需要配置数据库连接池,如C3P0或Druid,以优化数据库资源的管理和复用。 在实际操作中,你需要配置SpringMVC的上下文配置文件,声明DispatcherServlet、视图解析器和其他必要的bean。对于JdbcTemplate,你...

    c3p0连接池jar包以及Spring对c3p0的依赖包

    C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。在Java应用程序中,数据库连接池扮演着重要的角色,它能有效地管理和复用数据库连接,提高系统性能,减少数据库资源的消耗...

    springMVC整合C3P0连接池

    总之,整合SpringMVC和C3P0连接池可以提升应用的数据库操作性能,通过合理配置C3P0参数,可以进一步优化连接池的使用,降低资源消耗。同时,结合Spring的其他组件,如JdbcTemplate,可以简化数据库操作,让代码更易...

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

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

    C3P0、Druid、JDBCTemplate需要的jar包.zip

    C3P0、Druid和JDBCTemplate都是Java中常用的数据库连接池管理工具,它们为开发者提供了高效、稳定的数据库连接管理解决方案。下面我们将分别介绍这三个组件,并探讨其特点和使用方法。 1. C3P0: C3P0是一个开源的...

    C3p0配置连接池及jar

    C3p0是一款开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。在Java应用程序中,C3p0可以帮助我们管理数据库连接,提高数据库访问效率,减少系统资源的消耗。下面我们将详细探讨C3p0的...

    java c3p0连接池实例

    总结,C3P0连接池是Java开发中一个重要的工具,它的高效管理和灵活配置使得在处理大量数据库操作时能大幅提升系统的性能和稳定性。正确理解和使用C3P0,可以有效优化数据库连接管理,从而提高整体应用程序的效率。

    【三个常用的连接池】-C3P0、Druid、JDBCTemplate

    本资源提供了三个常用的数据库连接池实现:C3P0、Druid和JdbcTemplate。下面将详细介绍这三个连接池以及它们的特点。 1. C3P0连接池: C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和...

    Spring Boot多数据源(JdbcTemplate)配置与使用

    在本教程中,我们将深入探讨如何在Spring Boot项目中配置和使用多数据源以及JdbcTemplate。 首先,让我们了解什么是`JdbcTemplate`。它是Spring提供的一种模板类,用于执行SQL语句,通过回调机制将结果转换为Java...

    数据库连接池 包含C3P0和Druid.7z

    综上所述,这个资源包提供了一套完整的数据库连接池解决方案,涵盖了C3P0和Druid两种流行的数据库连接池,以及JdbcTemplate工具类,对于Java开发人员来说是非常实用的。通过合理配置和使用这些工具,可以有效地提高...

    c3p0_java_

    4. **配置JdbcTemplate或JPA**:根据项目需求,可以选择使用Spring的JdbcTemplate或者JPA来操作数据库,这两者都可以与C3P0数据源无缝集成。 5. **测试与优化**:在实际运行中,可以通过监控和测试来调整C3P0的配置...

    MAVEN pom.xml 配置oracle driver jar

    为了提高性能和资源利用率,开发中通常会使用连接池如HikariCP、C3P0或Druid。在Maven中添加对应连接池的依赖,并在配置文件中设置相应的参数。 5. **测试连接**: 你可以编写一个测试类,使用JUnit或Spock等测试...

    Oracle + jdbcTemplate + Spring + Java + Flex 实现分页

    ### Oracle + jdbcTemplate + Spring + Java + Flex 实现分页 #### 一、Oracle存储过程分页 在Oracle数据库中,为了实现高效的分页查询,通常会采用存储过程的方式来完成。这种方式能够有效地减少网络传输的数据量...

    jdbc整合c3p0

    JDBC整合c3p0数据库连接池 解决Too many connections错误 连接池是创建和管理一个连接的缓冲池的技术,这些连接准备好被任何需要它们的线程使用。博客地址 ...

Global site tag (gtag.js) - Google Analytics