0

SQL Developerは、データベースインスタンスに接続するための複数のメソッドを提供します。

Basicを提供する方法を選択し、hostname入力ボックスに個別に入力するportSID、データベース接続は問題なく実行されます。

ただし、Advanced全体として次のJDBC URLを提供するメソッドを選択した場合:</ p>

jdbc:oracle:thin:@hostname:port:SID

Testボタンを押すと、ステータスが表示さSuccessれる場合がありますが、次のようなエラーメッセージが表示される場合があります。

Status : Failure -Test failed: Listener refused the connection with the following error:
ORA-12519, TNS:no appropriate service handler found

では、なぜ、そしてどのように両方の方法でそのような違いがあるのでしょうか?SQL開発者からのバグですか?

更新1

同じデータベースインスタンスへのJNDI接続でJavaEEアプリケーションを実行すると、問題が正確に発生することがわかりました。そのため、データベースインスタンスリスナーは、そのうちの1つがJNDIである場合、複数のアクセスを許容できませんか?私はそれを作るだけだと思います...

4

1 に答える 1

0

問題を見つけてください。要するに、問題は2つの選択肢のいずれかで解決できます。

  1. Oracleが許可する接続のサイズを増やす
  2. JNDIで許可される接続のサイズを減らす

最初のソリューションはDBAによって操作されますが、2番目のソリューションは開発者が実装できます。私のアプリケーションのJNDI設定(TomcatでJNDIをテストします)では、プールに許可される最大接続数が多すぎて、現在のOracleサービスでは処理できません。

<Resource name="jdbc/schema_A" auth="Container" type="javax.sql.DataSource"
    driverClassName="oracle.jdbc.driver.OracleDriver" url="jdbc:oracle:thin:@hostname:1521:orcl"
    username="app_A" password="app_A" maxActive="20" maxIdle="10" maxWait="-1" />

maxActive="20" maxIdle="10"が多すぎるため、エラーメッセージが表示されるので、次のように変更します。

<Resource name="jdbc/schema_A" auth="Container" type="javax.sql.DataSource"
    driverClassName="oracle.jdbc.driver.OracleDriver" url="jdbc:oracle:thin:@hostname:1521:orcl"
    username="app_A" password="app_A" maxActive="1" maxIdle="1" maxWait="-1" />

今、すべてが問題なく機能しています...乾杯..

于 2013-02-04T16:40:10.907 に答える