Я получаю эту ошибку в базе данных разработки. Это происходит по некоторым конкретным запросам (простые вставки и удаления через приложение .NET). База данных используется одним пользователем, и ошибка происходит независимо от того, как долго база данных была запущена.
Единственный установленный параметр, связанный с памятью: MEMORY_TARGET = 1.2G
Oracle 11.2 x64 Standard Edition One Windows Server 2008 R2
Ответ выше немного стар.
Может решить проблему сразу, но не устранит первопричину. Параметр cursor_sharing теперь принимает 2 значения:
СИЛА или ТОЧНОСТЬ. С EXACT ваш запрос должен точно совпадать с курсором (sql с планом выполнения) для повторного использования, с «FORCE» все значения в ваших запросах изменяются на переменные связывания. Это действительно удобно, когда ваше приложение не использует переменные связывания. База данных сделает это за вас.
Если вы уже используете cursor_sharing = FORCE. Затем вам нужно начать рассматривать настройку распределения памяти, и в зависимости от параметров памяти, используемых вашей системой, вы можете получить представление о том, где вы должны установить это значение, с помощью следующих запросов:
Когда используются SGA_TARGET и SGA_MAX__SIZE / PGA_TARGET и PGA_MAX_SIZE (они должны совпадать): выберите * из v $ sga_target_advice; выберите * из v $ pga_target_advice;
Это выглядело бы так: в моем случае это система pre prod, она не будет хорошо выглядеть долго:
Это SGA_TARGET_ADVICE:
Строка, где SGA_SIZE_FACTOR равен 1, является текущей настройкой. В системе, где объем памяти меньше, увеличение SGA_SIZE и SGA_SIZE_FACTOR должно показать резкое уменьшение ESTD_DB_TIME и ESTD_DB_TIME_FACTOR. Увеличьте объем памяти до такой степени, что увеличение снова не будет таким большим изменением для времени estd_db_time.
В моем случае здесь, с моей текущей нагрузкой, я мог легко уменьшить размер SGA_TARGET до 80G, не получив большого успеха. Однако снижение его до 57G и менее вызовет все более серьезные проблемы с производительностью.
Когда используется MEMORY_TARGET:
источник
В дополнение к предыдущему ответу выясняется, что
ALTER SESSION SET NLS_COMP=LINGUISTIC;ALTER SESSION SET NLS_SORT=GENERIC_M_CI;
по какой-то причине быстро истощается память. Проблема исчезает при использовании другого NLS_SORT.источник