ホームページ  >  記事  >  データベース  >  Oracleデータベースでタイムアウトを設定する方法

Oracleデータベースでタイムアウトを設定する方法

PHPz
PHPzオリジナル
2023-04-04 09:11:444726ブラウズ

Oracle データベースは非常に人気のあるリレーショナル データベースですが、使用中にデータベース接続のタイムアウトが発生し、データ転送の中断やパフォーマンスの低下などの一連のトラブルが発生することがあります。では、Oracle データベースでタイムアウトを設定するにはどうすればよいでしょうか?この記事ではその具体的な方法を紹介します。

1. タイムアウト設定の原則

Oracle では、タイムアウト期間は SQLnet の読み取りおよび書き込みタイムアウト パラメーターを通じて実装されます。 SQLnetは、クライアントとサーバー間の通信のサポートを提供するOracle Databaseのネットワーク・コンポーネントです。タイムアウトを実行すると、クライアントはリクエストを発行し、サーバーが応答しない場合、クライアントは指定された時間待機し、待機時間が指定したタイムアウトを超えると接続が切断されます。

通常、Oracle タイムアウト設定には 2 種類があります:

1. セッション レベルのタイムアウト

セッション レベルのタイムアウトは、ALTER SESSION を介して単一セッションに対して有効です。設定するコマンド。

2.SQLNET レベルのタイムアウト

SQLNET レベルのタイムアウトは、SQLNET 接続全体のすべてのセッションに対して有効であり、SQLNET.ORA ファイルを変更することで設定されます。 SQLNET.ORA は Oracle のネットワーク構成ファイルであり、SQLNET レベルのパラメータを定義できます。

実際の状況に応じて、適切なタイムアウト設定方法を選択できます。

2. セッション レベルのタイムアウト設定

Oracle では、ALTER SESSION コマンドを使用してセッション レベルのタイムアウトを設定できます。構文は次のとおりです:

ALTER SESSION SET SQL_TRACE = TRUE | FALSE;

このうち、SQL_TRACE = TRUE は追跡モードを有効にすることを意味します。このモードでは、Oracle データベースはすべての実行を記録します。 SQL ステートメント。

ALTER SESSION SET SQL_TRACE = FALSE;

SQL_TRACE = FALSE は、トレース モードを無効にすることを意味します。

以下に示すように、SQL_TRACE = TRUE の場合に TIMED_STATISTICS パラメータを true に設定すると、追跡モードでの統計情報の出力が有効になります。

ALTER SESSION SET TIMED_STATISTICS = TRUE;

セッションレベルのタイムアウトの場合、これは SQLNET.ALLOWED_LOGON_VERSION パラメータを 10 以上に設定することで実現できます。

SQLNET.ALLOWED_LOGON_VERSION は、認証できる Oracle データベースのバージョンを定義する SQLNET.ORA パラメータです。たとえば、Oracle 10g の認証を許可する場合、次のパラメータを設定できます:

SQLNET.ALLOWED_LOGON_VERSION_CLIENT = 10

これにより、Oracle 10g データベースに接続しているクライアントが接続できるようになります。

3. SQLNET レベルのタイムアウト設定

SQLNET レベルのタイムアウトは、SQLNET.ORA ファイルのパラメータ設定に基づきます。 SQLNET.ORA ファイルは通常、Oracle クライアントまたはサーバーの特定のディレクトリにあります。

SQLNET.ORA ファイルでは、SQLNET.INBOUND_CONNECT_TIMEOUT と SQLNET.OUTBOUND_CONNECT_TIMEOUT という 2 つのパラメータを設定することで、SQLNET レベルのタイムアウトを制御できます。

SQLNET.INBOUND_CONNECT_TIMEOUT はサーバー側のパラメーターで、サーバーがクライアント セッションを受け入れる時間を制御するために使用されます。

SQLNET.OUTBOUND_CONNECT_TIMEOUT はクライアントのパラメータで、クライアントがサーバーに接続する時間を制御するために使用されます。

これら 2 つのパラメータを設定すると、クライアントとサーバー間の長時間の接続を防止でき、接続に多くの時間とリソースが浪費されるのを回避できます。

SQLNET.ORA ファイルに次のパラメータを追加して、SQLNET.INBOUND_CONNECT_TIMEOUT を設定します。

INBOUND_CONNECT_TIMEOUT_LISTENER = 120

サーバーがクライアント セッションを受け入れるためのタイムアウトを 120 秒に設定します。 。

SQLNET.ORA ファイルに次のパラメータを追加して、SQLNET.OUTBOUND_CONNECT_TIMEOUT を設定します。

SQLNET.OUTBOUND_CONNECT_TIMEOUT=10

クライアントが Oracle に接続するためのタイムアウトを設定します。サーバーに10秒まで接続します。

SQLNET.ORA ファイルを変更してパラメータを変更する場合、パラメータを有効にするために Oracle データベースまたは Oracle リスナーを再起動する必要があることに注意してください。

4. タイムアウト設定が有効かどうかを確認する方法

Oracle タイムアウト時間の設定が完了した後、それが有効になっているかどうかを確認するにはどうすればよいですか?これは、Oracle の v$session 動的ビューを通じて、または SQL ステートメントをトレースすることによって検証できます。

  1. v$session ビューによる検証

次の SQL ステートメントを使用してユーザーの現在のセッションを表示できます:

SELECT * FROM v$ session WHERE sid = '&sid';

ここでの &sid は現在のユーザーの SID であり、次の SQL ステートメントを通じて取得できます:

SELECT sid,serial# FROM v$session WHERE username = '&username' ;

指定された SESSION を見つけたら、SESSION の CONNECT_TIME および IDLE_TIME パラメータをクエリして、それが有効かどうかを判断できます。

  1. SQL ステートメントのトレース

Oracle データベースの SQL ステートメントをトレースする必要がある場合は、SESSION の TRACEFILE_IDENTIFIER パラメータを設定し、Oracle Trace ツールを使用してトレースできます。 SQL ステートメント。ここで、追跡操作を実行するには SYSDBA または SYSOPER 権限が必要であることに注意してください。

Oracle タイムアウト設定が有効かどうかは、上記の 2 つの方法で確認できます。設定が無効であることが判明した場合は、SQLNET.ORA ファイルが完全かつ正しく構成されているかどうかを確認することでトラブルシューティングを行うことができます。

要約

Oracle データベースでは、長時間の接続はシステムのパフォーマンスなどに影響を与えるため、接続を制御する必要があります。この記事で紹介した ALTER SESSION コマンドと SQLNET.ORA ファイルの設定を使用して、Oracle データベースのタイムアウトを設定できます。もちろん、実際の使用においては、さまざまな環境や実際のニーズに応じて、適切なタイムアウト設定方法を選択する必要があります。

注: この記事は多くの優れた素材を参照しています。侵害がある場合は、削除するためにご連絡ください。

以上がOracleデータベースでタイムアウトを設定する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。