転載 : Oracleのネットワークパフォーマンスを最適化する

この章では、接続パフォーマンスを最適化する方法について説明します. この章には、次のトピックが含まれています:

セッション データ ユニットの設定

一般的なデータベース構成で, Oracle Net は、データを次のサイズのバッファにカプセル化します。 セッションデータユニット (SDU) ネットワーク経由でデータを送信する前に. Oracle Net は、バッファがいっぱいになると各バッファを送信します。, 紅潮した, またはアプリケーションがデータを読み取ろうとしたとき. 調整中 Oracle Net に提供されるデータ量に関連する SDU バッファのサイズを一度に送信することで、パフォーマンスを向上させることができます。, ネットワーク利用, とメモリ消費. 大量のデータを送信している場合, SDU サイズを増やすと、パフォーマンスとネットワーク スループットが向上します。.

一度に送信するためにOracle Netに提供されるデータの量は、メッセージ・サイズと呼ばれます. Oracle Net は、デフォルトで、メッセージ サイズが通常は次の間で異なると想定しています。 0 そして 8192 バイト, そしてまれに, より大きい 8192 バイト. この仮定が正しい場合, それからほとんどの場合, データは 1 つの SDU バッファを使用して送信されます。.

SDU サイズの範囲は次のとおりです。 512 バイト先 65535 バイト. クライアントと専用サーバーのデフォルトの SDU は 8192 バイト. 共有サーバーのデフォルトの SDU は 65535 バイト.

使用される実際の SDU サイズは、接続時にクライアントとサーバーの間でネゴシエートされ、クライアントとサーバーの値の小さい方です。. デフォルトとは異なる SDU サイズを構成するには、クライアント コンピューターとサーバー コンピューターの両方で SDU を構成する必要があります。, 共有サーバーを使用していない限り. 共有サーバーの場合, 共有サーバーはデフォルトで最大値に設定されているため、クライアント値のみを変更する必要があります.

主要なメッセージ サイズがこれよりも小さいか大きい場合は、SDU サイズの変更を検討する必要があります。 8192. SDU サイズは 70 主要なメッセージ サイズよりも大きいバイト. 優勢なメッセージ サイズに加えて 70 バイトが最大 SDU を超えています, 次に、メッセージ サイズが最小数の等しい部分に分割されるように SDU を設定する必要があります。 70 SDU サイズ未満のバイト. デフォルトを変更するには, 変更 DEFAULT_SDU_SIZE のパラメータ sqlnet.ora ファイル.

例えば, アプリケーションによって送受信されるメッセージの大部分が 8KB 未満の場合, を考慮に入れて 70 オーバーヘッドのバイト, SDU を 8KB に設定すると、良い結果が得られる可能性があります。. 十分なメモリがある場合, 次に、SDU に最大値を使用すると、Oracle Net Services のシステム コールの数とオーバーヘッドが最小限に抑えられます。.

注意:

Oracle データベースから始める 11g, コンポーネント用に最適化された Oracle Net Services のバルク データ転送, Oracle SecureFiles LOBやOracle Data GuardのREDO転送サービスなど. SDU サイズ制限, ネットワーク パラメータ ファイルで指定されているとおり, これらの一括データ転送には適用されません.

データベースの SDU サイズの設定

データベースサーバーの SDU サイズを設定するには, 次のファイルを構成します:

  • sqlnet.oraを構成します DEFAULT_SDU_SIZE のパラメータ sqlnet.ora ファイル, 次のように:
    DEFAULT_SDU_SIZE=8192
    
  • 初期化パラメータファイル共有サーバープロセスを使用する場合, 次に、SDU サイズを DISPATCHERS 初期化パラメータファイルのパラメータ, 次のように:
    ディスパッチャー="(説明=(住所=(プロトコル=tcp))(SDU=8192))"
    
  • listener.oraターゲットのリストを使用してリスナーを構成した場合 listener.ora ファイル, 次に、SDU の値 SID_LIST 要素は、現在の設定を上書きします sqlnet.ora 専用サーバー プロセスを使用する場合のファイル.
    SID_LIST_リスナー名=
      (SID_LIST= 
        (SID_DESC=
         (SDU=8192)
         (SID_NAME=売上)))
    

    SDU サイズの小さい値とクライアントに設定された値が優先されます.

クライアントの SDU サイズの設定

クライアントの SDU サイズを設定するには, 次のファイルを構成します:

  • sqlnet.oraクライアント側のグローバル構成の場合, を構成します DEFAULT_SDU_SIZE のパラメータ sqlnet.ora ファイル, 次のように:
    DEFAULT_SDU_SIZE=8192
    
  • tnsnames.ora特定の接続記述子の場合, を指定できます SDU のパラメータ DESCRIPTION パラメータ.
    sales.us.example.com=
    (説明= 
        (SDU=11280) 
          (住所=(プロトコル=tcp)(HOST=販売サーバー)(ポート=1521))
        (CONNECT_DATA=
         (SERVICE_NAME=sales.us.example.com))
    ) 
    

SDU サイズは、特定の接続記述子のすべての Oracle Net プロトコルに適用されます。.

帯域幅遅延積の決定

帯域幅遅延積は、ネットワーク帯域幅とネットワークを通過するデータの往復時間の積です。. 往復時間を決定する簡単な方法, のようなコマンドを使用することです ping あるホストから別のホストへの応答時間を使用して、 ping.

例えば, ネットワークの帯域幅が 100 Mbps および 5ms の往復時間, 送信バッファと受信バッファは少なくとも (100*10^6) * (5/10^3) ビットまたはおおよそ 62.5 キロバイト.

次の式は、関係する単位と要因の間の関係を示しています。:

100,000,000 ビット   1 バイト   5 秒
---------------- バツ ------ バツ --------- = 62,500 バイト
 1 秒          8 ビット     1000

の設定 SEND_BUF_SIZE そして RECV_BUF_SIZE 少なくとも帯域幅遅延製品により、大量のデータが送信されているときにネットワーク帯域幅が最適に使用されることが保証されます。.

前の式に基づく, このネットワーク リンクの帯域幅遅延積は約 64KB. プライマリ データベースとスタンバイ データベース間の REDO データの転送に使用される最大メッセージが 1MB の場合, の値 SEND_BUF_SIZE そして RECV_BUF_SIZE パラメータは 1MB になる可能性があります. しかしながら, 平均メッセージが少ない場合, 使用可能な帯域幅の使用を最適化するには、64KB の設定で十分です。.

関連項目:

メッセージ サイズの決定について, 参照する “統計の例”

ほとんどのネットワーク プロトコルの場合, 確実に RECV_BUF_SIZE ネットワーク接続の一端にあるパラメータ, 通常はクライアントで, の値に等しい SEND_BUF_SIZE反対側のパラメータ, 通常はサーバーで.

I/O バッファ スペースの設定

信頼できるネットワーク プロトコル, TCP/IPなど, 下位層プロトコルと上位層プロトコルとの間で送受信している間、データを送受信バッファーにバッファリングします。. これらのバッファのサイズは、フロー制御の決定に影響を与えることにより、ネットワーク パフォーマンスに影響を与えます。.

RECV_BUF_SIZE そして SEND_BUF_SIZE パラメータは、Oracle Net 接続に関連付けられたソケット バッファのサイズを指定します. データの継続的なフローとネットワーク帯域幅のより良い利用を確保するため, とのセッションの送受信操作に対する I/O バッファ スペースの制限を指定します。 RECV_BUF_SIZE そして SEND_BUF_SIZE パラメーター. は RECV_BUF_SIZE そして SEND_BUF_SIZE パラメータ値は一致する必要はありません, ただし、環境に応じて設定する必要があります.

最高のパフォーマンスのために, 送信バッファーと受信バッファーのサイズは、ネットワーク接続で同時に送信される可能性のあるすべてのデータを保持するのに十分な大きさに設定する必要があります。. 単純なデータベース接続の場合, これは通常、 OCI_PREFETCH_MEMORY サイズ.

これらのパラメータはネットワークとシステムのパフォーマンスに影響するため、注意して使用してください。. これらのパラメータのデフォルト値はオペレーティング システム固有です.

これらのパラメータは TCP でサポートされています。, SSL を使用した TCP/IP, および SDP. 追加のプロトコルは、特定のオペレーティング システムでこれらのパラメータをサポートする場合があります。. これらのパラメータの推奨値は、インストール ガイドに記載されています。. 追加情報については、Oracle Net のオペレーティング システム固有のドキュメントを参照してください。.

ノート:

  • の実際の値 SEND_BUF_SIZE そして RECV_BUF_SIZE パラメータは、ホスト オペレーティング システムの制限またはメモリの制約により、指定された値よりも小さい場合があります。.
  • システムがサポートする必要のある同時接続の合計数と使用可能なメモリ リソースを考慮することが重要です。. これらの接続によって消費されるメモリの合計量は、同時接続の数とそれぞれのバッファーのサイズによって異なります。.

関連項目:

Oracle Call Interface プログラマーズ ガイド に関する追加情報については、 OCI_PREFETCH_MEMORY パラメータ

クライアントでの I/O バッファ スペースの構成

クライアントを構成するには, 指定されたファイルの次の場所にバッファ領域のサイズを設定します:

  • のみを設定 RECV_BUF_SIZE パラメータは通常適切です. クライアントが大量のリクエストを送信している場合, 次に、 SEND_BUF_SIZE パラメータ. これらのパラメータは、クライアントの sqlnet.ora ファイル.
  • 特定の接続記述子の場合, クライアントの現在の設定を上書きできます sqlnet.ora ファイル. 特定のプロトコル アドレスまたは説明のバッファ スペース パラメータを指定できます。 tnsnames.ora 次のようなファイル:
    sales.us.example.com=
     (説明= 
       (ADDRESS_LIST=
         (住所=(プロトコル=tcp)(HOST=sales1-サーバー)(ポート=1521)
            (SEND_BUF_SIZE=11784)
            (RECV_BUF_SIZE=11784))
         (住所=(プロトコル=tcp)(HOST=sales2-サーバー)(ポート=1521)
            (SEND_BUF_SIZE=11784)
            (RECV_BUF_SIZE=11784))
       (CONNECT_DATA=
         (SERVICE_NAME=sales.us.example.com)))
    hr.us.example.com=
     (説明= 
       (SEND_BUF_SIZE=8192)
       (RECV_BUF_SIZE=8192)
         (住所=(プロトコル=tcp)(HOST=hr1-サーバー)(ポート=1521))
       (CONNECT_DATA=
         (SERVICE_NAME=hr.us.example.com)))
    

サーバーでの I/O バッファー サイズの構成

データベースサーバーはクライアントにデータを書き込むため, の設定 SEND_BUF_SIZE 通常、サーバー側のパラメータで十分です. データベースサーバーが大量のリクエストを受信して​​いる場合, 次に、 RECV_BUF_SIZE パラメータ。データベースサーバーを構成するには, でバッファ領域のサイズを設定します listener.ora そして sqlnet.ora ファイル.

の中に listener.ora ファイル, 特定のプロトコル アドレスまたは説明のバッファ スペース パラメータを指定します。. 以下は設定例です:

リスナー=
(説明=
(住所=(プロトコル=tcp)(HOST=販売サーバー)(ポート=1521)
(SEND_BUF_SIZE=11784)
(RECV_BUF_SIZE=11784))
(住所=(プロトコル=ipc)(KEY=extproc)
(SEND_BUF_SIZE=11784)
(RECV_BUF_SIZE=11784)))
リスナー2=
(説明=
(SEND_BUF_SIZE=8192)
(RECV_BUF_SIZE=16384)
(住所=(プロトコル=tcp)(HOST=販売サーバー)(ポート=1521)))

以下は、 sqlnet.ora ファイル:

RECV_BUF_SIZE=65536
SEND_BUF_SIZE=65536

共有サーバー プロセスのバッファ サイズ パラメータの設定

共有サーバー プロセスを使用している場合, 次に、サーバーから取得した現在の設定を上書きできます sqlnet.ora ファイルのバッファ スペース パラメータを設定して、 DISPATCHERS次のような初期化パラメータ:

ディスパッチャー="(住所=(プロトコル=tcp)(SEND_BUF_SIZE=65536))"

InfiniBand 接続の SDP サポートの構成

Oracle Net Services は、Sockets Direct Protocol のサポートを提供します。 (SDP) InfiniBand 高速ネットワーク用.

SDP は、クラスタ化されたサーバー環境の標準通信プロトコルです。. SDP は、ネットワーク インターフェイス カードとアプリケーション間のインターフェイスです。. SDPを利用して, アプリケーションは、メッセージングの負荷の大部分をネットワーク インターフェイス カードに課します。, 他のタスクのために CPU を解放する. 結果として, SDP はネットワークを減少させます レイテンシー およびCPU使用率.

SDP は、システム エリア ネットワーク専用に設計されています。 (なし). SAN は短距離という特徴があります。, 複数のサーバー システム間の高性能通信, Oracle Application Server や、1 つのスイッチにクラスタ化されたその他のサードパーティの中間層クライアントおよびデータベース サーバーなど.

注意:

Oracle Database とのバージョン互換性については、個々のベンダーに確認してください。 11g.SDP サポートの詳細については、次の Oracle Technology Network にアクセスしてください。

http://otn.oracle.com/membership

次のセクションでは、中間層とデータベース サーバーの通信用に SDP の Oracle Net サポートを設定する方法について説明します。. 次のトピックが含まれています:

関連項目:

“パフォーマンスを理解する” サポートされている展開の概要

SDP を使用するための前提条件

SDP のサポートを構成する前に, 必要なハードウェアをインストールする, OpenFabrics Enterprise Distribution と互換性のある InfiniBand ハードウェアとソフトウェアをセットアップします。 (OFED) 1.4 アプリケーション Web サーバーとデータベース サーバーの両方で指定されたベンダーから.

InfiniBand ソフトウェアのインストール中, システムの SDP またはアドレス ファミリを定義する定数を識別します。. これは、オペレーティング システムまたは OFED のドキュメントから入手できます。.

関連項目:

インストール情報に関するベンダーのドキュメント.

サーバーでの SDP の構成

データベースサーバーを構成するには, で SDP アドレスを構成します。 listener.ora データベースサーバー上のファイル.

注意:

SDP またはアドレス プロトコル ファミリの定数が 27, Oracle Net Services のデフォルト値, 次に、定数を定義します SDP.PF_INET_SDP のパラメータ sqlnet.ora ファイル.

次の例は、ポート番号を使用する SDP エンドポイントを示しています 1521 コンピューターで sales-server.

リスナー=
  (説明=
    (ADDRESS_LIST=
      (住所=(プロトコル=sdp)(HOST=販売サーバー)(ポート=1521))
      (住所=(プロトコル=tcp)(HOST=販売サーバー)(ポート=1521))
      (住所=(プロトコル=ipc)(KEY=extproc))))

クライアントでの SDP の構成

注意:

SDP またはアドレス プロトコル ファミリの定数が 27, Oracle Net Services のデフォルト値, 次に、定数を定義します SDP.PF_INET_SDP のパラメータ sqlnet.ora ファイル.

次の手順では、Oracle Application Server サーバーまたはサードパーティの中間層クライアントを構成する方法について説明します。:

  1. サードパーティの中間層クライアントを構成する場合, 次に、Oracle Databaseを使用するようにクライアントをアップグレードします 11g クライアントソフトウェア, 次のように:
    1. Oracle Universal Installer の実行.
    2. 選択する オラクルデータベース 11g クライアント 利用可能な製品ページから.
  2. Oracle Application Server サーバーとサードパーティの中間層クライアントの両方の場合, データベース サーバーに接続するためのネット サービス名を作成します。:
    • Oracle Application Server サーバーの場合, で構成されているのと同じ TCP/IP プロトコル アドレスを使用するネット サービス名を指定します。 tnsnames.ora ファイル. 例えば:
      販売=
       (説明=
         (住所=(プロトコル=tcp)(HOST=販売サーバー)))
         (CONNECT_DATA=
           (SERVICE_NAME=sales.us.example.com)))
      
    • サードパーティの中間層クライアントの場合, で構成された同じ SDP アドレスを使用するネット サービス名を指定します。 tnsnames.ora ファイル.例えば:
      販売=
       (説明=
         (住所=(プロトコル=sdp)(HOST=販売サーバー)))
         (CONNECT_DATA=
           (SERVICE_NAME=sales.us.example.com)))
      

      関連項目:

      章 8, “命名方法の構成” 接続記述子の作成に関する追加情報

無許可によるリソース消費の制限 ユーザー

リスナーまたはデータベース サーバーへの不正アクセスは、 サービス拒否攻撃, 許可されていないクライアントが許可されたユーザーをブロックしようとすること’ 必要なときにシステムにアクセスして使用する機能. 悪意のあるクライアントは、リソースを消費することのみを目的とした接続要求で、リスナーまたはデータベース サーバーをフラッディングしようとする可能性があります。, 接続など, プロセス, またはスレッド. これらのタイプの攻撃を軽減するには, 認証前にリソースを保持できる時間を制限する制限を構成する. クライアントが構成された制限を超えようとすると、接続が終了し、ログに記録されているクライアントの IP アドレスを含む監査証跡が生成されます。.

権限のないユーザーによるリソースの消費を制限し、監査証跡を有効にするには, で説明されているパラメータの時間制限値を設定します。 テーブル 14-1.

テーブル 14-1 接続タイムアウト パラメータ

パラメータ ファイル 説明
INBOUND_CONNECT_TIMEOUT_リスナー名 listener.ora 時間, すぐに, ネットワーク接続が確立された後、クライアントがリスナーへの接続要求を完了するため。リスナーが指定された時間内にクライアント要求を受信しない場合, その後、接続を終了します. 加えて, リスナーはクライアントの IP アドレスを記録し、 ORA-12525: TNS:リスナーは許可された時間内にクライアントのリクエストを受信しませんでした へのエラー メッセージ listener.logファイル.
SQLNET.INBOUND_CONNECT_TIMEOUT データベースサーバー上の sqlnet.ora 時間, すぐに, クライアントがデータベースサーバーに接続し、必要な認証情報を提供するため。指定された時間内にクライアントが接続の確立と認証の完了に失敗した場合, その後、データベースサーバーは接続を終了します. 加えて, データベースサーバーはクライアントの IP アドレスを記録し、 ORA-12170: TNS:接続タイムアウトが発生しました へのエラー メッセージ sqlnet.logファイル. クライアントは次のいずれかを受け取ります。 ORA-12547: TNS:lost contact または ORA-12637: パケット受信失敗エラーメッセージ.

これらのパラメータの値を指定する場合, 次の推奨事項を考慮してください:

  • 両方のパラメータを初期の低い値に設定します.
  • の値を設定します INBOUND_CONNECT_TIMEOUT_listener_name パラメータを SQLNET.INBOUND_CONNECT_TIMEOUT パラメータ.

例えば, 設定できます INBOUND_CONNECT_TIMEOUT_listener_name に 10 秒と SQLNET.INBOUND_CONNECT_TIMEOUT へのパラメータ 50 秒. 特定の環境で通常のシステムまたはネットワークの遅延が原因で、クライアントが指定された時間内に接続を完了できない場合, その後、必要に応じて時間を増やします.

関連項目:

 

元のURL: https://docs.oracle.com/cd/E18283_01/network.112/e10836/performance.htm

返信を残します