Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 размер LOG_BUFFER  [new]
пдржзгл
Member

Откуда:
Сообщений: 41
Добрый день,
init.ora
автор
sga_target=192G
pga_aggregate_target=48G
use_large_pages=only


запускаем БД,
select value from v$parameter where name = 'log_buffer';
515358720

Кто-нибудь знает зачем оракл выставил такой большой буфер, и как он его рассчитывает?
В доках вообще не идет речь о таких размерах
Оракл 12.1
5 мар 19, 03:37    [21824986]     Ответить | Цитировать Сообщить модератору
 Re: размер LOG_BUFFER  [new]
х.з.
Member

Откуда:
Сообщений: 702
пдржзгл,

support
log_buffer = max(2M, 128K * ncpus) * max(2, ncpus/16);
The default min log buffer size = 4M;


похоже?
5 мар 19, 03:52    [21824988]     Ответить | Цитировать Сообщить модератору
 Re: размер LOG_BUFFER  [new]
wurdu
Member

Откуда: Владивосток
Сообщений: 4441
Это размер гранулы.
select bytes from v$sgainfo where name like 'Granule Size';
5 мар 19, 04:10    [21824990]     Ответить | Цитировать Сообщить модератору
 Re: размер LOG_BUFFER  [new]
-2-
Member

Откуда:
Сообщений: 14420
пдржзгл
init.ora
Чтобы экземпляр использовал init.ora, нужно это указывать при старте.
wurdu
Это размер гранулы.
log_buffer не является компонентой с автоматическим управлением памятью. Да и размер для гранулы странный.
5 мар 19, 06:52    [21824999]     Ответить | Цитировать Сообщить модератору
 Re: размер LOG_BUFFER  [new]
Вячеслав Любомудров
Member

Откуда: Владивосток
Сообщений: 17969
Но выравнивается (вместе с FIXED SGA) по размеру гранулы (для SGA>128G он именно 512M)
5 мар 19, 07:04    [21825001]     Ответить | Цитировать Сообщить модератору
 Re: размер LOG_BUFFER  [new]
-2-
Member

Откуда:
Сообщений: 14420
Вячеслав Любомудров
Но выравнивается (вместе с FIXED SGA) по размеру гранулы (для SGA>128G он именно 512M)
Сошлось с точностью до нескольких копеек.
> select name, bytes/1048576 mb, resizeable
from v$sgainfo t
where name in ('Granule Size', 'Redo Buffers', 'Maximum SGA Size', 'Fixed SGA Size')
model dimension by (name) measures(bytes, resizeable, 0 diff)
(bytes['fixed+log buffer']=bytes['Fixed SGA Size']+bytes['Redo Buffers'], 
 bytes['diff']=1048576*(
    ceil((bytes['Fixed SGA Size']+bytes['Redo Buffers'])/bytes['Granule Size'])*bytes['Granule Size']
        -(bytes['Fixed SGA Size']+bytes['Redo Buffers']))
);

NAME                              MB    RES
------------------------- ------.------ ---
Maximum SGA Size          393216        No 
Granule Size                 512        No 
Fixed SGA Size                25.127693 No 
Redo Buffers                 998.871094 No 
fixed+log buffer            1023.998787    
granule count                         2    
diff                               1272    

параметр референс 19
When the log buffer size is not specified, any remaining memory in the redo granules is given to the log buffer.
В базе задано
> select display_value, isdefault from v$parameter where name = 'log_buffer';

DISPLAY_VA ISDEFAULT 
---------- ----------
512M       FALSE     
Выходит, что, хоть оно и specified 512M, но все равно выравнивается. 512 не влезло в одну гранулу вслед за fixed sga, поэтому заняло чуть-чуть плюс any remaining memory следующей гранулы и получилось 998.87МБ.
5 мар 19, 08:23    [21825022]     Ответить | Цитировать Сообщить модератору
 Re: размер LOG_BUFFER  [new]
Вячеслав Любомудров
Member

Откуда: Владивосток
Сообщений: 17969
-2-
Сошлось с точностью до нескольких копеек.
У меня на всех БД 11-12 расхождения десяток процентов
По-хорошему, можно попытаться проанализировать дампы, адреса областей памяти из x$, но честно говоря, лениво да и не вижу большого смысла
У меня есть одно предположение: Private Redo Strands. По идее, им выделяется память в SGA, но где-то в статейках проскакивала информация, что для них память выделяется в той же грануле, что и LOG_BUFFER, а затем, если PRS не используется по какой-то причине (SUPPLIMENTAL LOGGING, FLASHBACK DATABASE, GUARANTEED RESTORE POINT, это только навскидку) то про эту память забывается и она становится просто "потерянной".
Звучит не очень красиво, но объясняет расхождение (а у меня везде SUPPLIMENTAL LOGGING включен)
10 мар 19, 09:40    [21828650]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить