|
Программирование >> Oracle
Вы не обязательно увидите все эти процессы сразу после запуска своего экземпляра, но большинство из них работает в каждом экземпляре. Процесс ARCn (архиватор) запускается только при работе в режиме архивирования журналов (Archive Log Mode) при включенном автоматическом архивировании. Процессы LMD0, LCKn, LMON и BSP (подробнее о них - ниже) запускаются только при работе с Oracle Parallel Server (конфигурация сервера Oracle, поддерживающая несколько экземпляров на различных машинах в кластерной среде), если открывается одна и та же база данных. Для простоты на схеме не показаны процессы диспетчеров MTS (Dnnn) и разделяемых серверов (Snnn). Поскольку мы только что детально их рассмотрели, они не показаны, чтобы упростить схему. Предыдущая схема показывает, что можно увидеть при запуске экземпляра Oracle, если база данных смонтирована и открыта. Например, в моей UNIX-системе сразу после запуска экземпляра имеются следующие процессы:
Они соответствуют процессам, представленным на схеме, за исключением процесса SNPn (о нем будет рассказано позже, т.к. он не является фоновым процессом, выпол- няющим конкретную задачу). Обратите внимание на соглашение по именованию этих процессов. Имя процесса начинается с префикса ога . Затем следуют четыре символа, представляющие фактическое имя процесса, а затем суффикс - ora8i. Дело в том, что у меня параметр инициализации ORACLE SID (идентификатор сайта) имеет значение ora8i. В ОС UNIX это существенно упрощает идентификацию фоновых процессов Oracle и их привязку к определенному экземпляру (в Windows простого способа для этого нет, поскольку фоновые процессы реализованы как потоки одного большого процесса). Но что самое интересное, хотя это и не очевидно по представленным результатам, - все эти процессы реализуются одним и тем же двоичн1м файлом. Вы не найдете на диске двоичн1й выполняемый файл arcO, точно так же, как не найдете файлов LGWR и DBW0. Все эти процессы реализуются файлом oracle (именно этот выполняемый двоичный файл запускается). Просто при запуске процессы получают такие псевдонимы, чтобы проще было идентифицировать их назначение. Это позволяет совместно использовать большую часть объектного кода на платформе UNIX. В среде Windows это вообще не имеет значения, поскольку процессы Oracle - всего лишь потоки в одном физическом процессе, поэтому все они - один большой двоичный файл. Давайте теперь рассмотрим функции каждого процесса. PMON - монитор процессов Этот процесс отвечает за очистку после нештатного прекращения подключений. Например, если выделенный сервер падает или, получив сигнал, прекращает работу, именно процесс PMON освобождает ресурсы. Процесс PMON откатит незафиксированные изменения, снимет блокировки и освободит ресурсы в области SGA, выделенные прекратившему работу процессу. Помимо очистки после прерванных подключений, процесс PMON контролирует другие фоновые процессы сервера Oracle и перезапускает их при необходимости (если это возможно). Если разделяемый сервер или диспетчер сбоит (прекращает работу), процесс PMON запускает новый процесс (после очистки структур сбойного процесса). Процесс PMON следит за всеми процессами Oracle и либо перезапускает их, либо прекращает работу экземпляра, в зависимости от ситуации. Например, в случае сбоя процесса записи журнала повторного выполнения (LGWR) экземпляр надо перезапускать. Это серьезная ошибка и самое безопасное - немедленно прекратить работу экземпляра, предоставив исправление данных штатному процессу восстановления. Это происходит очень редко, и о случившемся надо немедленно сообщить службе поддержки Oracle. Еще одна функция процесса PMON в экземпляре (версия Oracle 8i) - регистрировать экземпляр в процессе прослушивания протокола Net8. При запуске экземпляра процесс PMON опрашивает известный порт (если явно не указан другой), чтобы убедиться, запущен и работает ли процесс прослушивания. Известный/стандартный порт, используемый сервером Oracle, - порт 1521. А что произойдет, если процесс прослушивания запущен на другом порте? В этом случае используется тот же механизм, но адрес процесса прослушивания необходимо указать явно с помощью параметра инициализации LOCAL LISTENER. Если процесс прослушивания запущен, процесс PMON связывается с ним и передает соответствующие параметры, например имя службы. SMON - монитор системы SMON - это процесс, занимающийся всем тем, от чего отказываются остальные процессы. Это своего рода сборщик мусора для базы данных. Вот некоторые из решаемых им задач. Очистка временного пространства. С появлением по-настоящему временныхтаб-личных пространств эта задача упростилась, но она не снята с повестки дня полностью. Например, при построении индекса выделяемые ему в ходе создания экстенты помечаются как временные (TEMPORARY). Если выполнение оператора CREATE INDEX прекращено досрочно по какой-либо причине, процесс SMON должен эти экстенты освободить. Есть и другие операции, создающие временные экстенты, за очистку которых также отвечает процесс SMON. Восстановление после сбоев. Процесс SMON после сбоя восстанавливает экзем- пляр при перезапуске. Дефрагментация свободного пространства. При использовании табличных про- странств, управляемых по словарю, процесс SMON заменяет расположенные подряд свободные экстенты одним большим свободным экстентом. Это происходит только в табличном пространстве, управляемом по словарю и имеющем стандартную конструкцию хранения с ненулевым значением параметра PCTINCREASE. Восстановление транзакций, затрагивающих недостуннIе файлы. Эта задача аналогична той, которая возникает при запуске базы данных. Процесс SMON восстанавливает сбойные транзакции, пропущенные при восстановлении экземпляра после сбоя по причине недоступности файлов для восстановления. Например, файл мог быть на недоступном или на не смонтированном диске. Когда файл будет доступен, процесс SMON восстановит его. Восстановление сбойного экземпляра в OPS. В конфигурации Oracle Parallel Server, если одна из машин кластера останавливается (на ней происходит сбой), другая машина в экземпляре откроет файлы журнала повторного выполнения этой сбойной машины и восстановит все данные этой машины. Очистка таблиц! OBJ$. OBJ$ - низкоуровневая таблица словаря данных, содержащая записи практически для каждого объекта (таблицы, индекса, триггера, представления и т.д.) базы данных. Часто там встречаются записи, представляющие удаленные или отсутствующие объекты, используемые механизмом поддержки зависимостей Oracle. Процесс SMON удаляет эти ненужные строки. Сжатие сегментов отката. Процесс SMON автоматически сжимает сегмент отката до заданного размера. Отключение сегментов отката. Администратор базы данных может отключить или сделать недоступным сегмент отката с активными транзакциями. Активные транзакции могут продолжать использование такого отключенного сегмента отката. В этом случае сегмент отката фактически не отключается: он помечается для
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |