Oracle для профессионалов


Сервер - часть 5


представляет собой разделяемый серверный процесс).

Принципиальное отличие режима MTS от режима выделенного сервера состоит в том, что клиентский процесс, подключившийся к СУБД, никогда не взаимодействует непосредственно с разделяемым сервером, как это происходит в случае выделенного сервера. Он не может взаимодействовать с разделяемым сервером, так как соответствующий процесс используется совместно. Чтобы обеспечить совместное использование этих процессов, необходим другой механизм взаимодействия. Для этого в СУБД Oracle используется процесс (или набор процессов), которые называют диспетчерами. Клиентский процесс взаимодействует по сети с процессом-диспетчером. Процесс-диспетчер помещает запрос клиента в очередь запросов в SGA (это одно из многих назначений области SGA). Первый же свободный разделяемый сервер выберет и обработает этот запрос (например, запрос может иметь вид UPDATE T SET X = X+5 WHERE Y = 2). По завершении выполнения команды разделяемый сервер поместит ответ в очередь ответов. Процесс-диспетчер следит за очередью и немедленно передает полученный результат клиенту. Концептуально поток информации в режиме MTS выглядит следующим образом:

...

Клиентское подключение посылает запрос диспетчеру. Диспетчер поместит этот запрос в очередь запросов в области SGA (1). Первый свободный разделяемый сервер выберет этот запрос (2) из очереди и обработает его. Когда разделяемый сервер закончит выполнение, ответ (коды возврата, данные и т.д.) помещается в очередь ответов (3), после чего выбирается диспетчером (4) и возвращается клиенту.

С точки зрения разработчика нет никакой разницы между подключением к серверу в режиме MTS и подключением к выделенному серверу. Теперь, когда стало понятно, как происходит подключение к выделенному и разделяемому серверу, возникают вопросы: а как вообще подключиться; как запускается выделенный сервер и как связываться с процессом-диспетчером? Ответы зависят от платформы, но в принципе все происходит так, как описано ниже.

Мы рассмотрим наиболее общий случай: запрос на подключение по сети с использованием протоколов TCP/IP. В этом случае клиент находится на одной машине, а сервер — на другой, причем эти машины связаны сетью на базе семейства протоколов TCP/IP. Все начинается с клиента. Он посылает запрос клиентскому ПО Oracle на подключение к базе данных. Например, выполняется команда:




Начало  Назад  Вперед