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))"
親トピック: サーバー上のI/Oバッファ・サイズの構成
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)))
親トピック: I/Oバッファ・スペースの構成