Архитектура сервера базы данных. Структуры памяти. Системная глобальная область. Кэш буферов базы данных (Database Buffer Cache). Буфер оперативного журнала (Redo Log Buffer), страница 3

§  Процесс записи в базу данных DBWR. В зависимости от платформы и операционной системы одновременно может работать несколько процессов DBWR. Использование нескольких процессов помогает свести к минимуму конкуренцию за DBWR во время выполнения больших запросов к базе данных. На однопроцессорной системе дополнительные процессы DBWR не используются. Процесс записи в базу данных отвечает за управление содержимым кэша буферов:

§  Записывает все измененные буфера в файлы данных.

§  С помощью алгоритма LRU (Least Recently Used – список буферов, упорядоченных по времени последнего обращения) оставляет наиболее часто используемые буфера в оперативной памяти.

§  Откладывает запись на диск для оптимизации операций ввода – вывода.

§  Процесс записи в журнал LGWR. Процесс записи в журнал отвечает за управление содержимым буфера журнала. LGWR записывает содержимое буфера журнала в журнальный файл. Буфер журнала – циклический буфер. Когда LGWR копирует записи журнала из буфера журнала в файл журнала на диске, серверные процессы могут помещать в этот буфер новые журнальные записи.

§  Процесс CKPT отвечает за обработку контрольных точек. Контрольные точки (checkpoints) помогают ускорить процесс восстановления экземпляра. При выполнении контрольной точки процесс DBWR записывает все блоки, которые были изменены с момента последней контрольной точки, в файлы данных, а процесс LGWR обновляет заголовки файлов данных и управляющие файлы, регистрируя контрольную точку. Если необходимо снизить нагрузку на процесс LGWR, можно запустить процесс CKPT, который возьмет на себя обновление заголовков файлов данных и управляющих файлов.

§  Процесс архивации ARCn. Процесс архивации отвечает за копирование полностью заполненного журнального файла в архивные файлы журналов транзакций. Во время записи в архив ни один процесс не может получить доступ к журнальным файлам.

§  Процессы-диспетчеры Dnnn. Если сервер Oracle сконфигурирован, как многопоточный сервер (Multi-Threaded Server), одному серверному процессу может соответствовать несколько процессов пользователя. В этом случае серверные процессы называются разделяемыми процессами или серверами. При использовании разделяемых процессов в системе должен существовать хотя бы один процесс-диспетчер, который

§  Передает запросы пользователей в очередь SGA,

§  Возвращает ответы сервера соответствующему процессу пользователя.

§  Процесс RECO отвечает за восстановление незавершенных транзакций в распределенных базах данных. Процесс RECO пытается обратиться к базам данных, которые задействованы в распределенных транзакциях, находящихся в неопределенном состоянии, и устранить эту неопределенность.

§  Процесс регенерации моментальных снимков SNPm выполняет автоматическое обновление снимков базы данных.

§  Процесс LCKn используется в режиме параллельного сервера. На этот процесс возлагается ответственность за координацию блокировок, устанавливаемых разными экземплярами.

§  Процессы параллельных запросов Pnnn принимают участие в формировании индексов, таблиц и запросов.

Экземпляр Oracle, в зависимости от конфигурации, может использовать различный набор фоновых процессов. Однако существует обязательный набор фоновых процессов, который от конфигурации не зависит. Обязательными фоновыми процессами являются SMON, PMON, DBWR, LGWR.

Серверные процессы

Чтобы данные стали доступны пользователям, которые одновременно подключены к базе данных, серверный процесс должен положить их в кэш буферов данных. Oracle создает серверные процессы для обработки запросов процессов пользователей, соединенных с экземпляром (Рисунок 4). Серверные процессы:

§  Разбирают и выполняют команды SQL, вызываемые приложением.

§  Читают данные с диска в кэш буферов данных, если нужных блоков данных нет в кэше буферов данных.

§  Возвращают процессам пользователя результат выполнения команд SQL.

Процессы пользователей

Процессы пользователя создаются при запуске пользователем приложений. Каждый процесс пользователя подключается к серверному процессу, который может быть либо связан только с одним пользовательским процессом, либо распределиться между несколькими (Рисунок 4). Пользовательский процесс:

§  Может выполняться на стороне клиента.

§  Передает серверному процессу команды SQL и получает результат.

Рисунок 4 Процессы

Системная глобальная область и фоновые процессы составляют экземпляр Oracle. Серверные процессы и процессы пользователей не являются частью экземпляра Oracle (Рисунок 4).

Файлы

Файлы базы данных

База данных Oracle состоит из следующих файлов (Рисунок 5):

§  Файлов данных (Datafiles).

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

§  Журнальных файлов (Redo Log Files).

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

§  Управляющих файлов (Control Files).

Бинарный файл, который формируется одновременно с базой данных и содержит информацию о физической структуре базы данных и управляющую информацию. Имя базы данных, также, хранится в управляющем файле. Если управляющий файл отсутствует, база данных не сможет запуститься, а данные, которые в ней хранятся, будут недоступны. Поэтому предусмотрен специальный механизм размножения управляющих файлов, который поддерживается сервером Oracle. Управляющий файл требуется при монтировании, открытии и модификации структуры базы данных.

Файл параметров (Parameter File)

Файл параметров – это текстовый файл, который содержит список параметров, определяющих конфигурацию экземпляра (Рисунок 5). Файл параметров определяет экземпляр. Oracle должен прочитать файл параметров, чтобы запустить экземпляр. По умолчанию файлу параметров присваивается имя initSID.ora, где SID – системный идентификатор базы данных, параметры которой содержит этот файл.

Файлы трассировки (Trace Files) и файл протокола (Alert File)

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