Ошибка "ORA-04030: out of process memory" говорит нам о том, что СУБД Oracle не хватило объема оперативной памяти, установленной на сервере. Чтобы решить проблему нехватки памяти в экземпляре Oracle, сначала нужно узнать потребности Оракла в этой памяти.
В общем можно сказать, что потребность памяти - это память, занимаемая пользовательскими процессами, и память, занимаемая серверными процессами.
Размер памяти, используемой текущими пользовательскими процессами, мы можем узнать из запроса:
select name, sum(value)
from
(select a.name, b.value from v$statname a, v$SESSTAT b WHERE A.STATISTIC#=B.STATISTIC#
AND A.NAME LIKE 'session %memory%')
group by name
Размер памяти, занимаемый серверными процессами можно подсчитать таким образом:
log_buffer
+ db_block_size
*db_block_buffers
+ shared_pool_size
+ large_pool_size
+ java_pool_size
Так вот, если общий размер памяти, занимаемый серверными и пользовательскими процессами, приближается к размеру физической памяти сервера, то вам безотлагательно нужно подумать об уменьшении памяти, занимаемой Oracle.