СУБД Oracle. ТЕМА 6. Архитектура экземпляра Oracle.

Спасибо господину Илюшечкину Владимиру Михайловичу.

Статья содержит краткий обзор по следующим темам: архитектура экземпляра Oracle, глобальная системная область, т.е. разделяемый пул, кэш-буфер данных, отложенную процедуру записи на диск, буфер журнала транзакций.

ТЕМА 6

Архитектура экземпляра Oracle.

Экземпляр (сервер) базы данных — набор структур памяти и фоновых процессов, обращающихся к группе файлов базы данных.
Глобальная системная область (ГСО) — доступная для всех процессов область. Освобождается область только после полного выключения (завершения работы) экземпляра.

Разделяемый пул + кэш-буфер данных + буфер журнала транзакций + структуры сервера MTS
Разделяемый пул содержит:

  • кэш библиотеки — текст операторов SQL, форматы лекс. анализатора, план выполнения операторов SQL, заголовки пакетов PL/SQL и процедур
    • разделяемые области SQL (зависит от текущего сеанса работы)
    • локальные области SQL (формируется для каждой инициируемой транзакции и закрывается после того, как закрывается соответствующий курсор)
      • постоянная область (содержит информацию, которая сохраняет свои значения)
      • область времени выполнения (область, содержащая информацию только для того выражения, которое выполняется в данный момент)
  • кэш словаря данных
    • хранит строки словаря данных (для синтаксического анализа строк)
  • управляющие структуры сервера

Разделяемый пул:
Параметр SHARED_POOL_SIZE в файле init.ora. Необходимо задавать объем пула достаточный для загрузки и сохранения блоков, написанных на языке PL/SQL и выражений на SQL.
Команда ALTER SYSTEM FLUSH SHARED_POOL — осуществит сжатие информации в разделяемом пуле, с целью, чтобы объекты могли быть размещены в нем.
Кэш буфер данных:
Основная часть в ГСО. От нее во многом зависит производительность системы. Доступ к кэш-буферу происходит во много раз быстрее, чем доступ к дискам.

Желательно, чтобы большая часть транзакций происходила над данными, хранящихся в оперативной памяти компьютера.

  • влияет на производительность
  • содержит обрабатываемые данные
  • содержит обновляемые данные

СУБД переносит данные из кэш-буфера на диск в соответствии с порядком их размещения в специальном списке LRU (List Recently Used), который отслеживает обращение к блокам данных и учитывает частоту обращений.

Dirty-список

  • содержит блоки, в которых произошли изменения (грязные (dirty) блоки);
  • отслеживает все изменения блоков данных, выполненные за время их нахождения в кэш-буфере данных и не зафиксированные на диске.

Отложенная процедура записи на диск
Обновление данных, выполненое СУБД, не фиксируется немедленно в дисковой памяти. СУБД ждет, когда:

  1. будут внесены изменения в некоторое число блоков данных
  2. потребуется освободить место в кэш-буфере для загрузки новых блоков данных
  3. обнаружена контрольная точка
  4. истекло время, заданное процессом DBWR.

Буфер журнала транзакций
— хранит все данные о завершившихся транзакциях до тех пор, пока эти данные не будут переписаны в файл оперативного журнала транзакций. Если размер буфера невелик, то процесс LGWR очень часто будет переписывать информацию из буфера в файл и тем самым замедлять работу системы.
Процесс записи в журнал можно оперативно контролировать при помощи представления V$SYSSTAT (можно получить время ожидания процессом доступа к БЖТ).

Защелка (latch)
— представляет собой блокировку некоторой структуры в памяти процессом. Процесс блокирует посторонние обращения.

Параметр TRANSACTIONS
— ограничивает количество транзакций, данные о которых заносятся в журнал одновременно.
Параметр _LOG_SIMULTANEOUS_COPIES
По умолчанию значение параметра равно количеству процессоров в системе. Используя защелки копий журнала транзакций, несколько процессов могут одновременно записывать информацию в буфер журнала транзакций.
Представление V$LATCH содержит информацию о каждом типе защелки.

В следующей статье подробно рассмотрим фоновые процессы Oracle, в том числе процессы, предназначенные для управления другими процессами и восстановления БД при ее открытии, процесс, который обеспечивает запись измененных блоков данных из оперативной памяти в файлы данных, другие фоновые процессы, процессы сервера и пользователя, глобальную область процессов, процессы-диспетчеры.

Awayka из страны Notavailable =]

  • Леонид

    Спасибо за выложенные лекции! Жаль, что они таки не все выложены.

    • awayka

      Всегда пожалуйста. Рада, что кому-то они пригодились :)
      Возможно, когда-нибудь таки дойдут руки выложить оставшееся, но я бы на это не надеялась..