Процессы сервера Oracle Database делятся на три типа:
- Фоновые процессы – выполняют служебные функции, стартуют вместе со стартом экземпляра Oracle.
- Пользовательские процессы – предназначены для взаимодействия пользователей и Oracle, управляют входным и выходным потоком.
- Серверные процессы – запускаются на сервере после подключения клиента, выполняют обработку запросов пользователей.
Фоновые процессы обеспечивают взаимодействие между диском и структурами памяти, между другими экземплярами, занимаются самовосстановлением после сбоя, Эти задачи варьируются от взаимодействия с другими экземплярами Oracle до поддержки работоспособности системы, самовосстановления после сбоя и записи грязных блоков на жесткий диск. Основные обязательные фоновые процессы - DBWR, LGWR, CKPT, PMON, SMON. Необязательные ARCn, LMON, Snnn, QMNn, LMDn, RECO ,CJQ0, Pnnn , LCKn, Dnnn и т.д.
Взаимодействие серверных процессов с пользовательскими вероятно в двух вариантах:
- Каждому пользовательскому процессу выделяется один серверный процесс. Это выделенный режим - dedicated server configuration. Пользовательский процесс передает серверному процессу требование, который он и выполняет. Чтобы выяснить в каком режиме вы работаете, довольно посмотреть на строку коннекта. Что у вас в tnsnames.ora? SERVER = DEDICATED?
- Нескольким пользовательским процессам выделяется один серверный процесс. Это разделяемый режим - shared server configuration. Этот режим реализован с помощью дисперчеров, поддерживающих очереди запросов. В этом режиме важно поддерживать достаточный размер разделяемого пула (shared pool). Преимущество этого режима в том, что уменьшается количество серверных процессов, которых необходима память и процессор. Однако для длительных пакетных заданий лучше использовать выделенный режим. Shared-режим предпочтительнее, когда в системе присутствуем большое количество пользователей, так как каждому серверному процессу для рабочие мероприятия нужен определенный объем системных ресурсов.