Home  |  Administration  |  SQL  |  Tuning  |  Miscellaneous  |

Как узнать размер SGA

Самый простой способ узнать размер SGA конкретного экземпляра Oracle - выполнить запрос следующего вида:
SQL> select sum(value) "Total System Global Area" from v$sga;
Total System Global Area
------------------------
                 3694540

SQL>
Ту же информацию можно получить при старте базы из server manager ( или sqlplus для Oracle8i):
Connected to an idle instance.

SQL> startup
ORACLE instance started.

Total System Global Area    3694540 bytes
Fixed Size                    65484 bytes
Variable Size               3043328 bytes
Database Buffers             512000 bytes
Redo Buffers                  73728 bytes
Database mounted.
Database opened.
SQL>
Как видно из предыдущего листинга, память, занимаемая SGA, состоит из четырех частей:
  • Область SGA фиксированного размера
  • Область SGA переменного размера
  • DB cache
  • Log Buffer
Область SGA фиксированного размера.

Размер фиксированной части SGA зависит только от конкретной версии сервера и не может быть изменен через настройки в init<SID>.ora. Фиксированная часть SGA содержит вспомогательные переменные и структуры данных фиксированного размера.

Область SGA переменного размера

Размер данной порции SGA зависит от ряда параметров в файле инициализации init<SID>.ora. К сожалению точной формулы для вычисления размера данной области не существует. Упрощенно ее можно оценивать как сумму shared pool + large pool. Кроме того, нужно помнить, что параметр SHARED_POOL_SIZE задает приблизительный но не точный размер разделяемого пула

DB Cache

Буферный кэш содержит копии блоков данных. Размер этой области определяестя как произведение числа буферов данных, отведенных под кэш, на размер одного буфера (равен размеру блока данных): DB_BLOCK_BUFFERS * DB_BLOCK_SIZE

Log Buffer

Область памяти, используемая серверными процессами при записи redo информации в журналы транзакций. Размер буфера контролируется параметром LOG_BUFFER и обычно не превышает нескольких сотен килобайт.

Для баз данных под Oracle 8i необходимо упомянуть параметр JAVA_POOL_SIZE, который задает размер пула памяти, используемый встроенной JVM. Значение по умолчанию - 20М. Если ваши приложения не используют java, этот параметр нужно уменьшить до 1-2 мегабайт.

Таким образом размер SGA можно упрощенно оценить по формуле:
sga_size = fixed_portion_size +
           shared_pool_size +
           large_pool_size +
           db_block_buffers*db_block_size +
           log_buffer +
           java_pool_size
Last Update: October 11, 2007 18:33:32