Структуры памяти Oracle

Стас Белков

Стас Белков

Автор статьи. Известный специалист в мире IT. Консультант по продуктам и решениям Oracle. Практикующий программист и администратор баз данных. Подробнее.

Основных структур памяти на сервере Oracle три: глобальная область системы (SGA, или System Global Area), глобальная область процесса (PGA, или Process Global Area) и глобальная область пользователя (UGA, или User Global Area). Рассмотрим более подробно SGA, так как это наиболее важная область памяти, к которой обращаются все процессы Oracle.

В ОС UNIX область SGA реализована как сегмент разделяемой памяти – отдельный фрагмент памяти, к которому могут подключаться процессы. В ОС Windows экземпляр Oracle – это единый процесс с одним адресным пространством и область SGA выделяется как приватная память процесса ORACLE.EXE.

Область SGA разбита на несколько пулов, знания о которых нам пригодятся в дальнейшем, – это Java-pool, shared-pool, large-pool и null-pool.

  • Java-пул (Java-pool) представляет собой фиксированный пул памяти, выделенный виртуальной машине JVM для запуска Java-процедур. В случае если на Java-пул выделено недостаточно памяти, мы не сможем выполнять Java-процедуры (об этом будет рассказано позже).
  • Разделяемый пул (shared-pool). В разделяемом пуле сервер Oracle кеширует различные результаты разбора запроса, в которых присутствуют разделяемые курсоры, хранимые процедуры, объекты состояния и пр. Перед повторным разбором запроса сервер Oracle просматривает разделяемый пул в поисках готового результата.
  • Большой пул (large-pool). Большой пул назван так потому, что используется для выделения фрагментов памяти больших объемов, чем те, для управления которыми создавался разделяемый пул.
  • Неопределенный пул (null-pool). Сюда относится память, выделенная под буферы блоков, буфер журнала повторного выполнения и под «фиксированную область SGA».

Значения размера пулов определяются в файле init.ora такими параметрами, как: JAVA_POOL_SIZE, SHARED_POOL_SIZE, LARGE_POOL_SIZE, DB_BLOCK_BUFFERS и пр. Вот вкратце основная информация о структурах памяти СУБД Oracle, которая понадобится для понимания материала.

На заметку: область SGA хранит в себе множество важных данных, с которыми напрямую работает СУБД. В случае возможности модификации данных в SGA можно реализовать руткит, обнаружить который будет достаточно сложно.

Вас заинтересует / Intresting for you:

Java-пул (JAVA POOL) и JAVA_PO...
Java-пул (JAVA POOL) и JAVA_PO... 5196 просмотров Antoniy Tue, 21 Nov 2017, 13:32:12
Структуры памяти СУБД Oracle (...
Структуры памяти СУБД Oracle (... 2958 просмотров Андрей Волков Tue, 21 Nov 2017, 13:28:01
ALTER TABLE: команда изменения...
ALTER TABLE: команда изменения... 15155 просмотров Ирина Глебова Sat, 02 Nov 2019, 15:59:16
Область разделяемого пула Orac...
Область разделяемого пула Orac... 8588 просмотров Дэн Tue, 21 Nov 2017, 13:32:50
Войдите чтобы комментировать

apv аватар
apv ответил в теме #8066 7 года 2 мес. назад
я тоже сталкивался с руткитом, который был внедрен в sga через пользователский сеанс. Чуть не подломили серьезную кис - вовремя заметили.