In our project, we have 300 fields/columns with 15 tables on that around 15 columns are with varchar2(4000)
as data type.
As far as I known,
On disk, a VARCHAR2
only consumes the number of bytes required to store the actual data. A 4-byte string in a VARCHAR2(4000)
column will only consume 4 bytes
of space on disk.
For retrieving, we are using oracle VIEW from the database. But we are getting heap memory issue frequently. If more number of requests are coming at the same time. Is there any way to solve this problem ? we are using web logic server.
Below links I referred so far:
Impact of defining VARCHAR2 column with greater length https://community.oracle.com/thread/776726?start=0
Heap Dump
The maximum amount of data, in bytes and rounded down to the nearest power of 2, mapped into the JVM's address space per paging store file. Applies only when a native <code>wlfileio</code> library is loaded.</p> <p>A window buffer does not consume Java heap memory, but does consume off-heap (native) memory. If the paging store is unable to allocate the requested buffer size, it allocates smaller and smaller buffers until it reaches <code>PagingMinWindowBufferSize</code>, and then fails if it cannot honor <code>PagingMinWindowBufferSize</code>.</p> <p>Oracle recommends setting the max window buffer size to more than double the size of the largest write (multiple concurrently updated records may be combined into a single write), and greater than or equal to the file size, unless there are other constraints. 32-bit JVMs may impose a total limit of between 2 and 4GB for combined Java heap plus off-heap (native) memory usage.</p> <ul> <li>See the JMS server runtime MBean attribute <code>PagingAllocatedWindowBufferBytes</code> to find out the actual allocated Window Buffer Size.