4

Oracle データベース サーバーへの jdbc 接続に奇妙な問題があります。

Tomcat サーバーでアプリケーションを実行しています。これらのアプリケーションは、Oracle データベースを使用します。すべてのアプリケーションが同じ資格情報を使用します。

アプリケーションは一日中正常に動作しています。夜は活動がありません。朝、アプリケーションがデータベースに再接続しようとすると、いくつか (2 つまたは 3 つ) ORA-01017 (無効なユーザー名/パスワード) エラーが発生します。

その後、再接続が機能し、アプリケーションは正常に動作します。

これは数日間 (約 5 日間) 機能し、その後 1 つまたは複数のアプリケーション ブロックが機能します。再接続の試行はすべて失敗します。

ネットワーク通信を追跡したORA-01017 NO CREDENTIALSところ、送信先で接続が失敗した場合に発生することがわかりました。

もちろん、夜は誰もシステムに触れません。

回避策の 1 つの試みは、毎朝 6 時に tomcat サーバーを再起動して、すべての接続キャッシュまたはプールをクリーンアップすることです。それは役に立ちません。

どうしたの?何か案は?

完全な閉塞のように見える継続的な 5 日間の間隔 (毎日繰り返しながら) は、私には非常に奇妙に見えます。

構成:

データベース Oracle 10.2、JDBC Driver 11.2 Thin、Tomcat 6.0.24、JDK 6、OS は Windows、一部のアプリケーションは Avaya Voice Portal 5.0 のダイアログです。

私たち自身の (非 VP) アプリケーションは、単純な接続 (プーリングなし) を使用します。


システムはもともと、apserver と tomcat サーバーの間に WAN を備えた Windows 2003 サーバー上にセットアップされていました。

システムは現在、データベース サーバーの近くにある Linux (CentOS) サーバーに移行され、正常に動作しています。もうORA-01017はありません。

4

3 に答える 3

0

Oracleリスナーとトレースログを確認します。Aaron Digulla が言ったように、リソースの枯渇のように聞こえます。

于 2012-02-10T00:42:21.500 に答える
0

奇数。いくつかのアイデア:

  1. ユーザー名とパスワードが正しいことを確認するために、数日間ログに記録します。コードのバグによって、予期しない値が上書きされる場合があります。

  2. Tomcat が提供する接続プールで JNDI を使用することを検討してください。DBCP には、接続がまだ生きているかどうか、および再接続する方法を確認するための非常に高度なオプションがいくつかあります。その後、ログに接続関連の問題は表示されなくなります。これにより、アプリが DB パスワードを知る必要がなくなるため、セキュリティも向上します。

  3. リソース リークの問題である可能性があります (アプリが接続を返さない場合に発生します) が、別のエラー メッセージが表示されることが予想されます。

  4. 一部のデータベース (DB2、H2) では、他のデータベースのリモート テーブルをローカル テーブルのように見えるようにするビューを作成できます。Oracle がこれをサポートしているかどうかはわかりませんが、サポートしている場合は、このリモート テーブルのユーザー名/パスワードが間違っている可能性があります。

このブログ投稿のポイントも考慮してください: Oracle ORA-01017 のヒント

一見したところ、問題の原因となる投稿は何もありませんが、何らかのスクリプトが操作している可能性がありますtnsnames.ora(たとえば、新しいコピーを配布するなど)。

または、DBA が日次バックアップの時間中、すべてのユーザーを無効にしました。

于 2011-12-19T16:07:56.137 に答える