VARRAYs 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
VARRAYs into the database. In many cases, SQL*Loader requires two to three times that amount of memory to successfully construct and load a
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
VARRAYs or a large number of smaller
VARRAYs could cause you to run out of memory during the load. If this happens, then specify a smaller value for
ROWS and retry the load.