|
|
|
ORA-04030: out of process memory when trying
|
|||
|---|---|---|---|
|
#18+
Большое спасибо за ссылку на доку - к сожалению все на металинке. Сейчас у меня к нему доступа нет. Так что смог только урывками по инету прочитать. Но, насколько я понял из отрывков - The policy is to give 60% to the SGA and 40% to the PGA at startup. То есть, параметр динамичный. Эти значения плавающие. Что, кстати, автор блога и хочет сказать и что на моей 12ГБ БД и видно. (На самом деле я свой комент компилировал с автором блога. У него действительно в примере стоит 1Гб общей памяти, у меня на БД 12ГБ. Поэтому тут как бы все смешалось. Сорри.) Вячеслав, смотрите, у меня 12Гб БД (LINUX RH 6) стоит AMM, паратеры следующие (снял замер только что): select name, value, display_value from v$parameter v where v.name like '%target%' sga_target 0 0 memory_target 12884901888 12G memory_max_target 12884901888 12G pga_aggregate_target 0 0 То есть на бд жестко задан режим AMM Теперь: show sga Total System Global Area 7695769600 bytes Fixed Size 2323360 bytes Variable Size 1182796896 bytes Database Buffers 6505365504 bytes Redo Buffers 5283840 bytes а теперь самое интересное: select name , value from v$pgastat where name = 'aggregate PGA target parameter' aggregate PGA target parameter 5154799616 И как бы да - создается впечатление, что имеет место быть соотношение 40 на 60, но: select name , value from v$pgastat total PGA allocated 344553472 maximum PGA allocated 500199424 total freeable PGA memory 44236800 PGA memory freed back to OS 9774432256 То есть реально PGA занимает 328Мб. А если по сути, я хотел донести: Никакого жесткого соотношения 40 на 60 не существует. Как в примере на моей БД - реальный объем PGA = 328МБ. Безусловно, если интенсивность возрастет, динамически возрастет и PGA. Но, если будет нужно больше памяти для SGA - соответственно вырастет и он. Насчет использованием под линуксом - Есть несколько баз с AMM (6-12 Гб оперативы). Работает сносно уже несколько лет. Главное как я писал выше, за границы физической памяти не выходить, когда мемори_таргеты выставляешь (отсавляю приблизительно 2-4 гб) Ну, а есть очень большие (до 100гб оперативы), тоже под линуксом - там действительно PGA и SGA настроены раздельно (так сложилось исторически). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2018, 12:32 |
|
||
|
ORA-04030: out of process memory when trying
|
|||
|---|---|---|---|
|
#18+
A KНикакого жесткого соотношения 40 на 60 не существует. Как в примере на моей БД - реальный объем PGA = 328МБ. Безусловно, если интенсивность возрастет, динамически возрастет и PGA. Но, если будет нужно больше памяти для SGA - соответственно вырастет и он.Про жесткое соотношение и реальный объем это ты сам придумал Есть конкретный алгоритм -- если задано только MEMORY_TARGET, то НАЧАЛЬНОЕ соотношение будет 60/40 Естественно, в процессе работы оно будет меняться в зависимости от нагрузки (более того -- будут меняться размеры компонентов внутри SGA) -- на то это и автоматическое управление памятью. Вот тебе еще и на Бурлесона ссылочка , он, как обычно перепощивает металинковские ноты своими словами Дальше, про PGA -- можно вспомнить, что PGA_AGGREGATE_TARGET это желаемое ограничение для всех workarea всех процессов. По умолчанию, размер одной workarea (область для сортировки/хэширования) будет не превышать 5% от PGA_AGGREGATE_TARGET для обычных запросов и 20% для параллельных. Это насчет разницы между TARGET и ALLOCATED И вот еще -- можно ведь выставить нижние пределы (например DB_CACHE_SIZE, SHARED_POOL_SIZE) -- вот есть подозрение, что при этом неявно выставляется нижний предел SGA_TARGET и SHOW SGA (V$SGA) начинает казать как при выставленном SGA_TARGET. У тебя они точно не установлены ? (show parameter size, только,ради бога, в тегах SRC или хотя бы FIX) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2018, 14:21 |
|
||
|
ORA-04030: out of process memory when trying
|
|||
|---|---|---|---|
|
#18+
Вячеслав Любомудров Про жесткое соотношение и реальный объем это ты сам придумал На самом деле понял из этой цитаты : nata44845 помню, у оракла есть особенность, когда задана memory_target он делит ее в соотношении 60/40. И поэтому, я и начал объяснять, что это не так (в плане жесткости) и что пугаться 40 на 60 нет никакого смысла. (Не имеет никакого значения то, что возникает при старте, если дальше оно начинает динамически меняться ): причем координальным образом) В противном случае, не стал бы тратить свое время. И тем более советовать использовать именно этот режим работы, как это и рекомендует оракл, при условии, что нет противопоказаний и человек не очень разбираеться что и на что выделять. Вячеслав Любомудров Естественно, в процессе работы оно будет меняться в зависимости от нагрузки (более того -- будут меняться размеры компонентов внутри SGA) -- на то это и автоматическое управление памятью. Именно этому объяснению я и посвятил предыдущие свои комменты !!! Вячеслав Любомудров Вот тебе еще и на Бурлесона ссылочка, он, как обычно перепощивает металинковские ноты своими словами Благодарю. Я им тоже достаточно часто пользуюсь. Вячеслав Любомудров И вот еще -- можно ведь выставить нижние пределы (например DB_CACHE_SIZE, SHARED_POOL_SIZE) -- вот есть подозрение, что при этом неявно выставляется нижний предел SGA_TARGET и SHOW SGA (V$SGA) начинает казать как при выставленном SGA_TARGET. У тебя они точно не установлены ? (show parameter size, только,ради бога, в тегах SRC или хотя бы FIX) Ну если интересно, то: SQL> show parameter size; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ bitmap_merge_area_size integer 1048576 client_result_cache_size big integer 0 create_bitmap_area_size integer 8388608 db_16k_cache_size big integer 0 db_2k_cache_size big integer 0 db_32k_cache_size big integer 0 db_4k_cache_size big integer 0 db_8k_cache_size big integer 0 db_block_size integer 8192 db_cache_size big integer 0 db_flash_cache_size big integer 0 db_keep_cache_size big integer 0 db_recovery_file_dest_size big integer 50000M db_recycle_cache_size big integer 0 dnfs_batch_size integer 4096 global_context_pool_size string hash_area_size integer 131072 java_max_sessionspace_size integer 0 java_pool_size big integer 0 large_pool_size big integer 0 max_dump_file_size string unlimited object_cache_max_size_percent integer 10 object_cache_optimal_size integer 102400 olap_page_pool_size big integer 0 parallel_execution_message_size integer 16384 result_cache_max_size big integer 0 sga_max_size big integer 7372M shared_pool_reserved_size big integer 60188262 shared_pool_size big integer 0 sort_area_retained_size integer 0 sort_area_size integer 65536 streams_pool_size big integer 0 workarea_size_policy string AUTO Сразу оговорюсь, что в spfile у меня стоит: *.sga_max_size=0 *.sga_target=0 прочие перечисленные DB_CACHE_SIZE, SHARED_POOL_SIZE не использую ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2018, 16:26 |
|
||
|
ORA-04030: out of process memory when trying
|
|||
|---|---|---|---|
|
#18+
Версия до 11.2.0.3 ? Вот там вроде как если SGA_ MAX _SIZE не задан, то он выставляется как 60% MEMORY_TARGET. Начиная с 11.2.0.3 он выставляется равным MEMORY_TARGET (за исключением 32-битной винды). Это вне контекста о изначальном 60/40 для динамических SGA_TARGET/PAT. Это жесткий лимит именно SGA. Баг или не баг -- хрен знает. Сам не сталкивался. см. https://community.oracle.com/thread/2410066 Поэтому у тебя в выводе V$SGA "Total System Global Area" и не равно MEMORY_TARGET (как раз и равно SGA_MAX_SIZE) Это, кстати, означает, что SGA_TARGET у тебя никогда не превысит твоих 7.5 гигов, поэтому лучше выставить явно SGA_MAX_SIZE=MEMORY_TARGET ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.09.2018, 07:21 |
|
||
|
ORA-04030: out of process memory when trying
|
|||
|---|---|---|---|
|
#18+
Вячеслав Любомудров, Было такое на 11.2.0.1, очень бесило, что вот она память есть, а оракл SGA не увеличивает, поэтому стала задавать SGA_TARGET вручную. Ну и SGA_MAX_SIZE соответственно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.09.2018, 07:30 |
|
||
|
ORA-04030: out of process memory when trying
|
|||
|---|---|---|---|
|
#18+
стоит 11.2.0.4.0 - 64bit. Но не суть. Проблем с этой БД вроде нет. Может быть и баг, а раз баг, то выйдет ли SGA за пределы своего MAX в пределах всего выделенного ему MEMORY - тоже вопрос. В коде ведь никто не копался, как оно реализовано на уровне С/C++ - знает, наверное только тот, кто это писал. Прочему бы и нет :) все эти 40 на 60 - они ведь в официальной доке отсутствуют - нычкуют по металинкам по нотам. nata44845 Было такое на 11.2.0.1, очень бесило, что вот она память есть, а оракл SGA не увеличивает, поэтому стала задавать SGA_TARGET вручную. Ну и SGA_MAX_SIZE соответственно. А вы под нагрузкой пробовали на memory_target-е? Может быть под нагрузкой он преодалеет свой макс - "баг ведь :)" - я и такое допускаю, хотя и признаю, что не логично. Понимаете, если SGA_MAX_SIZE выставлять при выставленном memory_target, тогда зачем вообще нужен memory_target ? Ведь, memory_target везде в доках превозносится как лучшее решение. В принципе на маленьких БД меня устраивает, ну а на больших я использую раздельное управление SGA_TARGET и SGA_MAX_SIZE, PGA_TARGET, но тогда memory_target соответственно в 0. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.09.2018, 12:12 |
|
||
|
ORA-04030: out of process memory when trying
|
|||
|---|---|---|---|
|
#18+
По поводу VSS под виндой, чтоб не искать, действительно утечка памяти https://blog.zeddba.com/tag/ora-04030/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2018, 06:27 |
|
||
|
ORA-04030: out of process memory when trying
|
|||
|---|---|---|---|
|
#18+
Убедитесь в корректности установки soft and hard limit of stacksize, проверьте в соответствии с installation guide для вашей ОС, версии RDBMS. Используйте HCVE script from RDA - Health Check / Validation Engine Guide ( Doc ID 250262.1 ). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2018, 02:20 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39697783&tid=1883087]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
164ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
| others: | 203ms |
| total: | 459ms |

| 0 / 0 |
