В metalink они заявляют это как:
Ошибка ORA-04031 обычно возникает из-за фрагментации в кэше библиотеки или зарезервированного пространства общего пула.Прежде чем увеличивать размер общего пула, подумайте о настройке приложения для использования совместно используемого sql и настройки SHARED_POOL_SIZE, SHARED_POOL_RESERVED_SIZE и SHARED_POOL_RESERVED_MIN_ALLOC.Сначала определите, был ли ORA-04031 результатом фрагментации в кэше библиотеки или в зарезервированном пространстве общего пула, выполнив следующий запрос:
SELECT free_space, avg_free_size, used_space, avg_used_size, request_failures, last_failure_size FROM v $shared_pool_reserved;ORA-04031 является результатом отсутствия смежного пространства в зарезервированном пространстве общего пула, если: REQUEST_FAILURES равен> 0, а LAST_FAILURE_SIZE равен> SHARED_POOL_RESERVED_MIN_ALLOC.
Чтобы решить эту проблему, рассмотрите возможность уменьшения числа объектов SHARED_POOL_RESERVED_POOL_RESERVED_ дов зарезервированное пространство общего пула и увеличьте значения SHARED_POOL_RESERVED_SIZE и SHARED_POOL_SIZE, чтобы увеличить доступную память в зарезервированном пространстве общего пула.
ORA-04031 является результатом нехватки непрерывного пространства в кеше библиотеки, если:
REQUEST_FAILURES равно> 0, а LAST_FAILURE_SIZE равно
или
REQUEST_FAILURES равно 0, а LAST_FAILURE_SIZE равно