четверг, 10 февраля 2011 г.

Основные фоновые процессы Oracle

Для того, чтобы комплекс задач, одновременно решаемых Oracle, был обеспечен стабильным сопровождением и задачи выполнялись без сбоев, работа Oracle делится между вспомогательными программами, называемыми фоновыми процессами. Эти процессы действуют независимо один от другого и позволяют более эффективно использовать память, доступную для системы. Фоновые процессы реализованы по-разному в операционных системах семейства Windows и *nix. В частности, Windows фоновые процессы реализованы как потоки сервиса Oracle.

Процессы мониторов базы данных - это два процесса: SMON (System MONitor), PMON (Process MONitor).

Системный монитор (SMON) - после запуска базы данных выполняет автоматические восстановление экземпляров, следит за сегментами базы данных, фиксирует освобождение пространства во временных сегментах, автоматически объединяет временные сегменты.

Монитор процессов (PMON) - осуществляет контроль над поключениями к базе данных, контролирует потерю контакта пользователя с базой данных. Выполняет автоматические уборку мусора (Garbage Collector) - уборка предусматривает удаление сеанса, закрепленного за завершимся процессом, удаление блокировок, установленных им, и удаление непринятых транзакций. Также в задаче PMON входит слежение за процессами сервера и диспетчеров, их перезапуск в случае остановки.

DataBase WRiter (DBWR) - фоновый процесс переноса данных. Отвечает за перенос обновленных блоков, и производит перезапись в таких случаях:

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

Фунционирование DBWR, в целом, происходит по такому алгоритму:

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

Резюмируем:
В целом, алгоритм работы DBWR преследует такие основные цели:
1) учитывать все обновления, необходимые для записи в таблицы баз данных;
2) уменьшить влияние скоростных характеристик жестких дисков на производительность системы в целом;
3) максимальное увеличение производительности системы за счет использования механизма создания контрольных точек и отката транзакций;
4) наиболее эффективное использование оперативной памяти;

LoG WRiter (LGWR) - фоновый процесс для перезаписи информации из буфера журнала транзакций в файлы оперативного журнала (проще говоря, ведение журнала).

Такая перезапись происходит при одном из следующих условий:
1) транзакция принимается;
2) буфер журнала транзакций заполняется на одну треть;
3) процесс DBWR завершает перезапись данных из кэш-буфера после обнаружения контрольной точки.

Отметим некоторые важные особенности алгоритма работы LGWR:

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

ChecKPoinT (CKPT) - необязательный фоновый процесс (может быть (не)активирован).

Комментариев нет:

Отправить комментарий