- •Структуры программных средств Oracle
- •Серверы и экземпляры баз данных
- •Запуск и остановка сервера
- •Авария сервера
- •Параллельный сервер и высокая степень доступности
- •Соединения сервера
- •Процессы Oracle8
- •Серверные фоновые процессы
- •Процесс записи в базу данных (dbwr)
- •Процесс записи в журнал (lgwr)
- •Процесс архивации (arch)
- •Процесс контрольной точки (ckpt)
- •Процесс системного монитора (smon)
- •Процесс монитора процессов (pmon)
- •Отдельные и многопоточные фоновые процессы
- •Различные архитектуры для поддержки соединений пользователей
- •Архитектура клиент/сервер
- •Архитектура процессов, специфичная для Oracle Выделенные серверы
- •Многопоточные серверы
- •Архитектура процесса однозадачного сервера
- •Области памяти и кэширование данных
- •Кэш-попадания, кэш-промахи и кэш-перезагрузки
- •Области памяти Oracle8
- •Буферный кэш
- •Размер буферного кэша
- •Разделяемый пул
- •Библиотечный кэш и разделяемые sql-операторы
- •Словарный кэш
- •Организация сети Oracle8 и Net8
- •Transparent Network Substrate (tns) и другие уровни Net8
- •Соединения, инициаторы и адресаты tns
- •Пулинг соединений
- •Мультиплексирование
- •Прослушивающий tns-процесс
- •Прослушивающие web-процессы
- •Tns-адресация
- •127.0.0.1 Localhost
- •128.126.50.100 Alitest1.Animatedlearning.Com alitest1
- •128.126.50.101 Client1.Animatedlearning.Com client1
- •128.126.50.100 Alitest1.Animatedlearning.Com oranamesrvr0
- •Имена Oracle
- •Средство многопротокольного обмена
- •Навигатор
- •Менеджер соединений
- •Линии перекачки данных
- •Конфигурация Net8
Архитектура процессов, специфичная для Oracle Выделенные серверы
Простейшей архитектурой процессов, применяемой в Oracleдля поддержки соединений клиентов, является архитектура выделенных серверов(dedicated server architecture).Она представлена на рис. 4.
В конфигурации выделенных серверов Oracleзапускает выделенный серверный процесс переднего плана(foreground server process)для каждого клиента, соединяющегося с экземпляром. Серверный процесс переднего плана некоторого клиента выполняет операции с базой данных только для этого клиента. Например, когда пользователь направляет серверу операторUPDATE, серверный процесс переднего плана этого пользователя просматривает память сервера в поисках нужных блоков данных; если в памяти их нет, серверный процесс считывает блоки с диска в память сервера, а затем обновляет их в памяти.
Конфигурация выделенных серверов не очень эффективна при большом числе пользователей. Дело в том, что каждый процесс выделенного сервера функционирует только для сеанса связи одного пользователя. Если процесс выделенного сервера большей частью бездействует (например, когда продавец разговаривает с заказчиком и заполняет бланк), то неактивный серверный процесс потребляет ресурсы сервера, которые ему совсем не нужны. Если учесть, что для поддержки сотен и даже тысяч соединений пользователей требуется столько же процессов, то можно понять, что ресурсы сервера очень быстро истощатся. Соединения через выделенные серверы обычно устанавливаются для выполнения интенсивных пакетных операций; при этом серверные процессы загружены большую часть времени. Такие соединения также требуются для выполнения некоторых административных задач (например, для запуска и остановки сервера или для восстановления базы данных). Однако в большинстве систем типа клиент/сервер применяется конфигурация многопоточного сервера.
Многопоточные серверы
Для поддержки соединений клиентов в Oracleчаще всего применяется архитектура многопоточного сервера(multithreaded server architecture),которая показана на рис. 5.
Конфигурация многопоточного сервера представляет собой небольшую группу серверных процессов, которые совместно обеспечивают эффективную работу большого числа пользователей. Компонентами в конфигурации многопоточного сервера являются диспетчеры, разделяемые серверы и очереди.
Процесс диспетчера (dispatcher process)получает запросы клиентов и помещает их в очередь запросов (requestqueue) сервера, а также возвращает результаты запроса соответствующему клиенту. Экземпляр базы данныхOracleдолжен запускать по меньшей мере один процесс диспетчера для каждого сетевого протокола, который планируется поддерживать (напримерTCP/IP,IPX/SPX,DecNet).
Процесс разделяемого сервера (shared server process)выполняет запросы, находящиеся в очереди запросов сервера, и возвращает результаты в очередь ответов(response queue).ЭкземплярOracleможет запускать один или несколько процессов разделяемого сервера. После запуска экземпляраOracleавтоматически регулирует число разделяемых серверов в зависимости от изменения объема транзакций; когда в очереди ожидает обработки много запросов,Oracleзапускает дополнительные разделяемые серверы, чтобы сбалансировать нагрузку на систему; и, наоборот, когда запросы удаляются из очереди,Oracleможет остановить ненужные разделяемые серверы, чтобы уменьшить расход ресурсов хост-машины.
Конфигурация многопоточного сервера очень эффективна в большинстве сред прикладных программ, так как небольшое число процессов разделяемого сервера может обслуживать множество клиентов. Благодаря этому для обеспечения нормальной работы большого числа пользователей требуются очень небольшие затраты ресурсов, что улучшает функционирование хост-компьютера, на котором выполняется Oracle.