| Lesson 6 | The protocol.ora file, part 2 |
| Objective | Describe the use of the TCP.NODELAY option. |
The TCP.NODELAY option controls how Oracle Network Services handles small TCP packets on the network.
Its purpose is to manage latency-sensitive communication between Oracle clients and servers by determining whether
to use or disable Nagle’s algorithm.
Nagle’s algorithm attempts to reduce the number of small packets by buffering data briefly before transmitting it. This can reduce network overhead, but it introduces delay, especially noticeable in OLTP systems, chatty client tools, and custom applications that send many small messages.
Setting TCP.NODELAY=YES disables Nagle’s algorithm and instructs Oracle Net to send packets immediately,
improving responsiveness at the cost of increasing packet volume.
Yes—TCP.NODELAY remains relevant in Oracle 23c and Oracle 23ai, especially in environments where low latency is critical. Although Oracle Cloud Infrastructure (OCI) abstracts much of the underlying network behavior, traffic between client applications and database services still uses TCP-based Oracle Net.
In modern Oracle deployments—including Autonomous Database, Exadata Cloud Service, and on-prem hybrid architectures— TCP.NODELAY continues to influence small-packet performance for:
While large SQL fetches and bulk operations benefit from buffering, many Oracle operations involve back-and-forth exchange of relatively small packets. In these cases, disabling buffering provides immediate performance improvement.
With the deprecation of the protocol.ora file, the parameters once defined there now belong in
sqlnet.ora. A modern configuration example is shown below:
# sqlnet.ora – modern configuration example for Oracle 23c/23ai
SQLNET.SEND_BUF_SIZE = 65536
SQLNET.RECV_BUF_SIZE = 65536
TCP.NODELAY = YES
You may also use protocol-specific settings in listener.ora or tnsnames.ora,
but Oracle recommends centralizing most tuning parameters in sqlnet.ora to simplify management.
The following diagram compares the behavior of sending small packets with Nagle’s algorithm enabled (default)
versus disabled using the TCP.NODELAY option.
|
TCP.NODELAY = NO (Nagle’s algorithm enabled) |
TCP.NODELAY = YES (Disabled algorithm) |
|---|---|
|
Data ↓ Buffered ↙︎ ↘︎ Segment Segment ↓ Segment ↓ Server |
Data ↓ Segment ↓ Segment ↓ Segment ↓ Server |
Oracle Network Services transmits data using packets that may be buffered briefly before sending. Nagle’s algorithm delays transmission to accumulate more data and reduce packet count. This works well for large fetches but can slow down applications that perform rapid, small exchanges.
When TCP.NODELAY=YES is set, Oracle sends packets immediately,
reducing latency and improving responsiveness for OLTP and interactive workloads.
sqlnet.ora including: