Установка workarea_size_policy на ручной или автоматический - PullRequest
2 голосов
/ 12 мая 2011

Я работаю над системой хранилища данных, которая была обновлена ​​около года назад до Oracle 10g (сейчас 10.2.0.5).

База данных настроена на workarea_size_policy=auto и pga_aggregate_target=1G.Большая часть процесса ETL написана на PL / SQL, и этот код обычно устанавливает workarea_size_policy=manual и устанавливает SORT_AREA_SIZE и HASH_AREA_SIZE для определенных сеансов при построении определенных частей хранилища.

Значения, выбранные для SORT_AREA_SIZE и HASH_AREA_SIZE, различны для разных частей сборки.Эти размеры, вероятно, основаны на ожидаемом количестве данных, которые будут обрабатываться в каждой области.

Проблема, с которой я сталкиваюсь, заключается в том, что этот код начинает вызывать ряд ошибок ORA-600.Это заставляет меня задуматься, стоит ли вообще отменять автоматические настройки.

Код, который устанавливает ручные настройки, был написан много лет назад разработчиком, которого здесь больше нет.Вероятно, изначально он был написан для Oracle 8 с поправкой на Oracle 9, чтобы установить для workarea_size_policy значение manual.Никто на самом деле не знает, как были найдены значения, используемые для HASH_AREA_SIZE и SORT_AREA_SIZE.Они могут быть совершенно неприемлемыми для всего, что я знаю.

После этой длинной преамбулы у меня есть несколько вопросов.

  1. Как узнать, когда (если вообще) мне следует бытьпереопределение ручных настроек с помощью workarea_size_policy = manual?
  2. Как мне найти подходящие значения для HASH_AREA_SIZE, SORT_AREA_SIZE и т. д.1025 *

Я знаю, что это довольно широкий вопрос, но помощь была бы признательна.

1 Ответ

1 голос
/ 09 июня 2011

Я предлагаю вам закомментировать ручные настройки и выполнить тестовый запуск только с автоматическими (динамическими) настройками, такими как PGA_AGGREGATE_TARGET. Управление областями Sort и Hash памяти значительно улучшилось с момента появления Oracle 8!

Трудно предопределить требования к памяти для ваших процедур, поэтому лучше всего протестировать их с представительными объемами данных и посмотреть, как это происходит.
Затем вы можете создать отчет AWR , охватывающий сроки выполнения процедур. В отчете есть раздел под названием PGA Memory Advisory . Это скажет вам, если вам нужно больше памяти, назначенной на PGA_AGGREGATE_TARGET, исходя из ваших текущих объемов данных.

См. образец здесь :

PGA Memory Advisory sample

В этом случае вы можете ясно видеть, что нет необходимости переходить к текущим выделенным 103 МБ, и вы можете фактически остаться на 52 МБ, не влияя на приложение.

В зависимости от томов, о которых мы говорим, если вы не можете выделить больше памяти, некоторые операции сортировки или хеширования могут перекинуться в табличное пространство TEMPORARY, поэтому убедитесь, что у вас правильный размер и, возможно, он распределен по максимально возможное количество дисков / томов (см. конфигурацию ЖЕ , а также здесь ).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...