2017-02-28 7 views
0

ほとんどすべてのクライアント接続が1つのサーバーに送られ、アプリケーションがIOExceptionでしばらくして接続に失敗します。ロードバランシングが正しく機能していないようです。この時点で、リスナーを強制的に再起動する必要があります。Oracle RACデータベースが1つのサーバーに負荷を生成し、クライアントが接続に失敗する

JDBC URL: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 
+0

'production'サービスのための負荷分散が壊れていませんか? – JSapkota

+0

[ロード・バランシング・アドバイザ](https://docs.oracle.com/cd/B28359_01/rac.111/b28252/configwlm.htm#TDPRC067) – JSapkota

答えて

0

念のために - あなたは "すべての接続は、一つのノードに向けられている" と言うとき - あなたを行いますセッションが1つのノードで作成されたこと、または接続を処理するスキャンリスナーが1つのノードでのみ使用されていることを意味しますか?

チェックして、アドレスをスキャンする場合参照は3つのIPアドレスを(nslookupコマンドは、スキャン-IP)を含有し、(SRVCTLのステータススキャンSRVCTLステータスscan_listenerを)あなたのSCANリスナーは、ノードに分散されていることを確認してください。また、使用しようとしているデータベースサービス(プロダクション)がすべての適切なリスナーに登録されていることを確認することもできます(データベースパラメータ "remote_listener"をチェックして、サービスの登録先を確認してください)。

+0

を使用できます。1.セッションは1つのノードで作成されます。2.提案された提案、すべて正しく設定されています。 – Ranjith

+0

は「正しく設定されました」を定義していますか?複数のスキャンリスナーがありますか?彼らは正しいポート(1538)でリッスンしていますか? 私が推測しなければならないのは、スキャンリスナーに接続するのではなく、ノードの1つのローカルリスナーに接続しているように見えるからです(スキャンリスナーによってセッションリダイレクトは行われません) –

関連する問題