17июн
Каков размер SGA? X$KSMFSV,X$KSMMEM
Основная структура памяти Oracle – System Global Area (SGA, системная глобальная область). Размер SGA вычисляется по определенным параметрам инициализации.
SGA разбивается на четыре раздела:
- фиксированный раздел,
- переменный раздел,
- журнальный буфер,
- пул буферов блоков базы данных.
Размер SGA – сумма размеров этих четырех разделов.
Все это Вы видите, когда стартует екземпляр:
SQL> startup nomount
ORACLE instance started.
Total System Global Area 1050224444 bytes
Fixed Size 456508 bytes
Variable Size 520093696 bytes
Database Buffers 528482304 bytes
Redo Buffers 1191936 bytes
Fixed Size (фиксированный размер) – размер фиксированного во время компиляции базы данных компонента SGA . Эта часть SGA cодержит вспомогательные переменные и структуры данных фиксированного размера, предназначена для указания на другие части SGA (см. таблицы X$KSMFSV+X$KSMMEM). Изменить размер этой части SGA невозможно. Размер зависит только от конкретной версии сервера.
Variable Size (переменный размер) – это когда выделяются участки памяти переменного размера. Здесь находится разделяемый пул shared pool, большой пул large pool, Java-пул, область курсоров и много других структур. Large pool - динамически распределяемая память. Shared pool состоит из динамически управляемой памяти и постоянной памяти. Постоянная shared pool память содержит перечень структур таких как the buffer headers, the process, session, and transaction arrays, the enqueue resources and locks, the online rollback segment array, and various arrays for recording statistics. Размер variable area SGA зависит от параметров инициализации. Упрощенно размер этой области можно оценивать как сумму shared pool + large pool+ java_pool_size. В тоже время, вы знаете, что параметр SHARED_POOL_SIZE задает только приблизительный размер разделяемого пула.
Database Buffers - Буферный кэш содержит копии блоков данных. Размер этой области определяется как произведение числа буферов данных, отведенных под кэш, на размер одного буфера (равен размеру блока данных): DB_BLOCK_BUFFERS * DB_BLOCK_SIZE
Redo Buffers -Область памяти, используемая серверными процессами при записи redo информации в журналы транзакций. Размер буфера контролируется параметром LOG_BUFFER.
Таким образом, размер SGA можно очень упрощенно оценить по формуле:
sga_size = fixed_portion_size + shared_pool_size + large_pool_size + java_pool_size + log_buffer + db_block_buffers*db_block_size .