Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2]      все
 Re: ORA-04030: out of process memory when trying  [new]
A K
Member

Откуда:
Сообщений: 352
Большое спасибо за ссылку на доку - к сожалению все на металинке. Сейчас у меня к нему доступа нет. Так что смог только урывками по инету прочитать. Но, насколько я понял из отрывков - 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 настроены раздельно (так сложилось исторически).
4 сен 18, 12:32    [21663778]     Ответить | Цитировать Сообщить модератору
 Re: ORA-04030: out of process memory when trying  [new]
Вячеслав Любомудров
Member

Откуда: Владивосток
Сообщений: 17930
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)
4 сен 18, 14:21    [21664045]     Ответить | Цитировать Сообщить модератору
 Re: ORA-04030: out of process memory when trying  [new]
A K
Member

Откуда:
Сообщений: 352
Вячеслав Любомудров
Про жесткое соотношение и реальный объем это ты сам придумал

На самом деле понял из этой цитаты :
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 не использую
4 сен 18, 16:26    [21664346]     Ответить | Цитировать Сообщить модератору
 Re: ORA-04030: out of process memory when trying  [new]
Вячеслав Любомудров
Member

Откуда: Владивосток
Сообщений: 17930
Версия до 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
5 сен 18, 07:21    [21664971]     Ответить | Цитировать Сообщить модератору
 Re: ORA-04030: out of process memory when trying  [new]
nata44845
Member

Откуда: Красноярск
Сообщений: 355
Вячеслав Любомудров,

Было такое на 11.2.0.1, очень бесило, что вот она память есть, а оракл SGA не увеличивает, поэтому стала задавать SGA_TARGET вручную. Ну и SGA_MAX_SIZE соответственно.
5 сен 18, 07:30    [21664976]     Ответить | Цитировать Сообщить модератору
 Re: ORA-04030: out of process memory when trying  [new]
A K
Member

Откуда:
Сообщений: 352
стоит 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.
5 сен 18, 12:12    [21665388]     Ответить | Цитировать Сообщить модератору
 Re: ORA-04030: out of process memory when trying  [new]
nata44845
Member

Откуда: Красноярск
Сообщений: 355
По поводу VSS под виндой, чтоб не искать, действительно утечка памяти

https://blog.zeddba.com/tag/ora-04030/
3 дек 18, 06:27    [21751726]     Ответить | Цитировать Сообщить модератору
 Re: ORA-04030: out of process memory when trying  [new]
Vivat!San
Member

Откуда: Отсюда не возвращаются
Сообщений: 503
Убедитесь в корректности установки soft and hard limit of stacksize,
проверьте в соответствии с installation guide для вашей ОС, версии RDBMS.
Используйте HCVE script from RDA - Health Check / Validation Engine Guide ( Doc ID 250262.1 ).
4 дек 18, 02:20    [21752507]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2]      все
Все форумы / Oracle Ответить