14.2 セッション・データ・ユニットの構成

通常のデータベースの構成では、Oracle Netはデータをネットワークへ送出する前にカプセル化して、セッション・データ・ユニット(SDU)のサイズでバッファに格納します。

Oracle Netがそれぞれのバッファを送信するのは、バッファがいっぱいになったとき、フラッシュされたとき、またはアプリケーションがデータの読取りを試行したときです。任意のある時点で送信するためにOracle Netに送られるデータ量を基準にSDUバッファのサイズを調整すると、パフォーマンス、ネットワーク使用率およびメモリー消費を改善できます。大量のデータを転送するときは、SDUのサイズを大きくすることによって、パフォーマンスおよびネットワークのスループットを改善できます。特定のデプロイメントで高いスループットを達成できるようにSDUを調整できます。

任意のある時点で送信するためにOracle Netに送られるデータの量は、メッセージ・サイズとも呼ばれます。

設定できるSDUサイズの範囲は、512バイトから2 MBまでです。サイズの範囲が広いため、ネットワーク管理者は、特定のデプロイメントで最適なネットワーク・パフォーマンスを発揮できるように、SDUのサイズをチューニングできます。SDUサイズの値を大きくすると、多くのメモリーが必要になります。

クライアントのデフォルトのSDUサイズは8192バイトであり、サーバーは65536バイトです。

使用される実際のSDUサイズは、接続時にクライアントとサーバー間でネゴシエートされ、クライアントとサーバーの各SDU値より小さい値になります。デフォルト以外のSDUサイズを構成する場合は、共有サーバーを使用している場合を除き、クライアントとサーバーの両方のコンピュータでSDUを構成する必要があります。

大半のメッセージ・サイズが8192バイトより小さい場合または大きい場合は、SDUサイズの変更を検討する必要があります。SDUサイズは、大半のメッセージ・サイズより70バイト大きい値にします。大半のメッセージ・サイズに70バイトを加えると最大SDUを超える場合は、そのメッセージ・サイズを最小限の数に等分割し各分割がSDUサイズより70バイト少なくなるように、SDUを設定します。デフォルトを変更するには、sqlnet.oraファイル内でDEFAULT_SDU_SIZEパラメータを変更します。

たとえば、アプリケーションで送受信されるメッセージの大半が8 KB未満の場合は、オーバーヘッドのために70バイトを考慮してから、SDUを8 KBに設定すれば適切になります。利用可能なメモリーが十分にある場合は、SDUの最大値を使用すると、システム・コール数やOracle Net Servicesのオーバーヘッドを最小限に抑えることができます。

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

データベース・サーバーのSDUサイズを構成するには、次のファイルを構成します。

  • sqlnet.ora

    次のように、sqlnet.oraファイルでDEFAULT_SDU_SIZEパラメータを構成します。

    DEFAULT_SDU_SIZE=32767
    
  • 初期化パラメータ・ファイル

    共有サーバー・プロセスを使用している場合、SDUのサイズを初期化パラメータ・ファイルのDISPATCHERSパラメータで次のように設定します。

    DISPATCHERS="(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp))(SDU=8192))"
    
  • listener.ora

    listener.oraファイルのターゲットのリストを使用してリスナーを構成した場合は、専用サーバー・プロセスを使用する際に、sqlnet.oraファイルの現在の設定がSID_LISTパラメータのSDUの値で上書きされます。

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

クラインとのSDUサイズを構成するには、次のファイルを構成します。

  • sqlnet.ora

    クライアント側のグローバル構成用に、次のように、sqlnet.oraファイルでDEFAULT_SDU_SIZEパラメータを構成します。

    DEFAULT_SDU_SIZE=32767
    
  • tnsnames.ora

    特定の接続記述子では、DESCRIPTIONパラメータでSDUパラメータを指定できます。

    sales.us.example.com=
    (DESCRIPTION= 
        (SDU=11280) 
          (ADDRESS=(PROTOCOL=tcp)(HOST=sales-server)(PORT=1521))
        (CONNECT_DATA=
         (SERVICE_NAME=sales.us.example.com))
    ) 

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