The following list describes some issues to keep in mind when you load VARRAY
columns:
VARRAY
s are created in the client's memory before they are loaded into the database. Each element of a VARRAY
requires 4 bytes of client memory before it can be loaded into the database. Therefore, when you load a VARRAY
with a thousand elements, you will require at least 4000 bytes of client memory for each VARRAY
instance before you can load the VARRAY
s into the database. In many cases, SQL*Loader requires two to three times that amount of memory to successfully construct and load a VARRAY
.
The BINDSIZE
parameter specifies the amount of memory allocated by SQL*Loader for loading records. Given the value specified for BINDSIZE
, SQL*Loader takes into consideration the size of each field being loaded, and determines the number of rows it can load in one transaction. The larger the number of rows, the fewer transactions, resulting in better performance. But if the amount of memory on your system is limited, then at the expense of performance, you can specify a lower value for ROWS
than SQL*Loader calculated.
Loading very large VARRAY
s or a large number of smaller VARRAY
s could cause you to run out of memory during the load. If this happens, then specify a smaller value for BINDSIZE
or ROWS
and retry the load.