When enabled, buffering uses the LOB Buffering subsystem to minimize network round-trips by buffering changes until the
FlushBuffer method is called. This can be beneficial to applications that perform a series of repeated small reads and writes to specific areas of a LOB.
There are many caveats and restrictions for using LOB buffering. These are summarized here, but for complete information, see the Oracle Database SecureFiles and Large Objects Developer's Guide.
The following LOB methods cannot be used while buffering is enabled:
There is currently a 512 KB limit to the amount of a single read/write operation.
Error reporting for buffered operations is delayed until the next database access.
Transactional support is not guaranteed. Users must roll back changes manually if an error occurs.
Do not perform updates to a LOB column that bypasses the buffering system while in the same transaction as a buffer-enabled LOB. Performing an
INSERT statement can cause this.
Only one LOB object is allowed to perform buffered writes to a given LOB. Other LOB objects that point to the same LOB raise an error if they attempt a buffered write.
A LOB object taken from an
OraParameter object raises an error if it is buffer-enabled and bound to an
Clone method can raise an error for buffer enabled LOBs.
Appending directly to the end of the LOB is allowed, but any write operation whose offset extends beyond the end of the LOB and results in blank padding (for
CLOB) or zero padding (for
BLOB) raises an error.