14.4 I/Oバッファ・スペースの構成

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

RECV_BUF_SIZEおよびSEND_BUF_SIZEパラメータでは、Oracle Net接続に関連付けられるソケット・バッファのサイズを指定します。連続的なデータの流れを確保し、ネットワーク帯域幅の利用率を改善するには、RECV_BUF_SIZEおよびSEND_BUF_SIZEパラメータで、セッションの送受信操作に使用するI/Oバッファ・スペースの制限値を指定します。RECV_BUF_SIZEおよびSEND_BUF_SIZEパラメータの値は一致する必要はありませんが、環境に従って設定する必要があります。

最適なパフォーマンスを確保するには、ネットワーク接続で同時に送信されるすべてのデータを格納するのに十分な送受信バッファ・サイズを設定する必要があります。ネットワーク・パフォーマンスを最適にするには、これらのバッファを少なくとも帯域遅延積に設定してください。

これらの値は、ネットワークおよびシステムの性能に大きな影響を与えるので、慎重に使用してください。これらのパラメータのデフォルト値は、オペレーティング・システムによって異なります。Linuxオペレーティング・システムのデフォルトのデフォルト値は、次のとおりです。

  • SEND_BUF_SIZE: 131,072バイト(128k)

  • RECV_BUF_SIZE: 174,700バイト

これらのパラメータは、TCP、TLS付きTCP/IP、およびSDPでサポートされています。オペレーティング・システムによっては、これ以外のプロトコルがこれらのパラメータをサポートしていることがあります。これらのパラメータの推奨値は、インストレーション・ガイドで指定されています。詳細は、オペレーティング・システムに関するドキュメントを参照してください。

ノート:

  • SEND_BUF_SIZEおよびRECV_BUF_SIZEパラメータの実際の値は、ホストのオペレーティング・システム上の制限やメモリーの制約によって、設定した値より小さくなる場合があります。

  • システムでサポートする必要がある同時接続の総数と、利用可能なメモリー・リソースを検討することが重要です。これらの接続によって消費される総メモリー容量は、同時接続数と各接続のバッファ・サイズに依存します。

14.4.1 サーバー上のI/Oバッファ・サイズの構成

データベース・サーバーはデータをクライアントに書き込むため、通常はサーバー側でSEND_BUF_SIZEパラメータを設定してください。データベース・サーバーが大量の要求を受信する場合、RECV_BUF_SIZEパラメータも設定します。データベース・サーバーを構成するには、listener.oraおよびsqlnet.oraファイルでバッファ・スペースのサイズを設定します。

listener.oraファイルには、特定のプロトコル・アドレスまたは記述子のバッファ・スペース・パラメータを指定します。設定の例を次に示します。

LISTENER=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=tcp)(HOST=sales-server)(PORT=1521)
(SEND_BUF_SIZE=11784)
(RECV_BUF_SIZE=11784))
(ADDRESS=(PROTOCOL=ipc)(KEY=extproc)
(SEND_BUF_SIZE=11784)
(RECV_BUF_SIZE=11784)))
LISTENER2=
(DESCRIPTION=
(SEND_BUF_SIZE=8192)
(RECV_BUF_SIZE=16384)
(ADDRESS=(PROTOCOL=tcp)(HOST=sales-server)(PORT=1521)))

前述の例には複数のアドレスが含まれていますが、ADDRESS_LISTパラメータは使用されていません。これは、ADDRESS_LISTパラメータは必須ではないためです。

sqlnet.oraファイルでの設定の例を次に示します。

RECV_BUF_SIZE=65536
SEND_BUF_SIZE=65536

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

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

DISPATCHERS="(ADDRESS=(PROTOCOL=tcp)(SEND_BUF_SIZE=65536))"

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

クライアントを構成するには、指定されているファイル内の次の場所にバッファ・スペース・サイズを設定してください。

  • 通常は、RECV_BUF_SIZEパラメータを設定すれば十分機能します。しかし、クライアントが大きなサイズの要求を送信する場合は、SEND_BUF_SIZEパラメータも設定します。これらのパラメータは、クライアントのsqlnet.oraファイルで設定します。

  • 特定の接続記述子では、クライアントのsqlnet.oraファイルの現在の設定値を上書きできます。tnsnames.oraファイルでは、次のようにして、特定のプロトコル・アドレスまたは記述子のバッファ・スペース・パラメータを指定できます。

    sales.us.example.com=
     (DESCRIPTION= 
       (ADDRESS_LIST=
         (ADDRESS=(PROTOCOL=tcp)(HOST=sales1-server)(PORT=1521)
            (SEND_BUF_SIZE=11784)
            (RECV_BUF_SIZE=11784))
         (ADDRESS=(PROTOCOL=tcp)(HOST=sales2-server)(PORT=1521)
            (SEND_BUF_SIZE=11784)
            (RECV_BUF_SIZE=11784))
       (CONNECT_DATA=
         (SERVICE_NAME=sales.us.example.com)))
    hr.us.example.com=
     (DESCRIPTION= 
       (SEND_BUF_SIZE=8192)
       (RECV_BUF_SIZE=8192)
         (ADDRESS=(PROTOCOL=tcp)(HOST=hr1-server)(PORT=1521))
       (CONNECT_DATA=
         (SERVICE_NAME=hr.us.example.com)))