Мне нужно несколько советов о том, как диагностировать и исправить эту проблему. Я не знаю, является ли это простой проблемой настройки сервера или проблемой дизайна приложения (или и тем, и другим).
Один или два раза в несколько месяцев эта база данных Oracle XE сообщает об ошибках ORA-4031. Это не указывает на какую-либо конкретную часть сга последовательно. Недавний пример:
ORA-04031: unable to allocate 8208 bytes of shared memory ("large pool","unknown object","sort subheap","sort key")
Когда появляется эта ошибка, если пользователь продолжает обновлять, нажимая на разные ссылки, он, как правило, получает больше ошибок такого рода в разное время, а затем он получает сообщение об ошибке «404 not found».
Перезапуск базы данных обычно решает проблему на некоторое время, затем примерно через месяц она появляется снова, но редко в том же месте в программе (то есть она не связана с какой-либо конкретной частью кода) ( приведенный выше пример ошибки возник на странице Apex, которая сортировала более 5000 строк из таблицы).
Я пытался увеличить sga_max_size
со 140М до 256М и надеюсь, что это поможет. Конечно, я не буду знать, помогло ли это, так как мне пришлось перезапустить базу данных, чтобы изменить настройку:)
Я использую Oracle XE 10.2.0.1.0 на компьютере Oracle Enterprise Linux 5 с 512 МБ ОЗУ. На сервере работает только база данных, Oracle Apex (v3.1.2) и веб-сервер Apache. Я установил его практически со всеми параметрами по умолчанию, и он работал довольно хорошо в течение года или около того. Большинство проблем, которые я смог решить самостоятельно, настроив код приложения; она не используется интенсивно и не является критически важной для бизнеса системой.
Вот некоторые текущие настройки, которые, я думаю, могут иметь значение:
pga_aggregate_target 41,943,040
sga_max_size 268,435,456
sga_target 146,800,640
shared_pool_reserved_size 5,452,595
shared_pool_size 104,857,600
Если вам нужна помощь, вот текущие размеры SGA:
Total System Global Area 268435456 bytes
Fixed Size 1258392 bytes
Variable Size 251661416 bytes
Database Buffers 12582912 bytes
Redo Buffers 2932736 bytes