jsp/サーブレットを使用してデータベース アプリケーションを作成しましたが、これは現在運用サーバーでホストされています。しかし、アプリケーションでいくつかのタスクを実行すると、データベース セッションの数が 150 を超えて接続が失われます。データベース サーバーを再起動しないと、アプリケーションを操作できません。ORACLE 11g を使用しています。
質問する
147 次
2 に答える
0
問題は、適切なデータベース接続が閉じられていないことでした。各反復でデータベース接続を閉じずに、いくつかの繰り返しアクティビティを実行する場合。これにより、データベースとの接続数が増加し、定義された最大接続数に到達します。この問題を回避するために、次の 2 つのことを行うことができます。
- 最大セッション数を増やすことができます。また、セッション パラメータを増やす場合は、プロセスとトランザクション パラメータも増やすことを検討する必要があります。これらの値を決定するために使用できる式を次に示します。
プロセス=x
セッション=x*1.1+5
トランザクション=セッション*1.1
これを行うには、次の SQL スクリプトを使用します。
sql> alter system set processes=500 scope=both sid=' ';
sql> alter system set sessions=555 scope=both sid=' ';
sql> alter system set transactions=610 scope=both sid='*';
- もう 1 つの方法は、以前に定義したデータベース接続数を一度に超えないようにアプリケーションを設計することです。Oracle は、現在使用されていない接続を定期的に自動的に削除します。しかし、これには時間がかかります。
于 2013-03-20T03:49:40.253 に答える
0
この問題では、次の 2 つのことを行うことができます。
次のコマンドを使用して、データベースが処理できるプロセスの数を超えることができます。
alter system set sessions = 300 scope = spfile;
これを行うには、システム ユーザーとしてデータベースにログインする必要があります。
開いているすべてのデータベース接続が閉じられているかどうかを確認できます。
于 2012-12-04T08:32:52.327 に答える