Oracle RAC数据库在一台服务器上创建负载,客户端无法连接

时间:2017-02-28 06:10:40

标签: oracle jdbc oracle11g

几乎所有客户端连接都定向到一台服务器,并且应用程序在使用IOException一段时间后无法连接。似乎负载平衡无法正常工作。我们此时被迫重启监听器。

jdbc网址:jdbc:oracle:thin:@(DESCRIPTION=(FAILOVER=ON)(LOAD_BALANCE=yes)(ADDRESS=(PROTOCOL=TCP)(HOST=scan-ip)(PORT=1538))(CONNECT_DATA=(service_name=production)(SERVER=DEDICATED)))

例外:

Caused by: org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Io exception: Connection reset)
        at org.apache.commons.dbcp.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:1549)
        at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1388)
        at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044)
        at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:111)
        at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:77)
        ... 60 more
Caused by: java.sql.SQLException: Io exception: Connection reset
        at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
        at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146)
        at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:255)
        at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:387)
        at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:414)
        at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:165)
        at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:35)
        at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:801)
        at org.apache.commons.dbcp.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:38)
        at org.apache.commons.dbcp.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:582)
        at org.apache.commons.dbcp.BasicDataSource.validateConnectionFactory(BasicDataSource.java:1556)
        at org.apache.commons.dbcp.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:1545)
        ... 64 more

版本:

11.2.0.4.0 - 64bit 

1 个答案:

答案 0 :(得分:0)

只是为了确保 - 当你说&#34;所有连接都指向一个节点&#34; - 你的意思是会话是在一个节点上创建的,还是只是在一个节点上使用了处理连接的扫描监听器?

检查并查看SCAN地址是否包含3个IP地址( nslookup scan-ip ),确保SCAN侦听器跨节点分布( srvctl status scan srvctl status scan_listener )。您还可以检查您正在尝试使用的数据库服务(生产)是否正在所有适当的侦听器上注册(检查数据库参数&#34; remote_listener&#34;以确保服务注册到的位置)。