2010-02-26 2 views
3

Здесь: http://download.oracle.com/docs/html/A95907_01/diff_uni.htm#1077398 Я обнаружил, что в Windows Oracle работает на основе потоков, а в Unix - на основе процесса. Почему это так?Oracle Threads and Processes

Более того, существует много процессов Oracle http://www.adp-gmbh.ch/ora/concepts/processes/index.html независимо от системы.

Почему журналист и писатель db реализованы как процессы ... и выполнение запроса выполняется с использованием потоков (окон) или процессов (unix).

ответ

3

Oracle использует область разделяемой памяти SGA для хранения информации, которая (и должна быть) доступна для всех сеансов/транзакций. Например, когда строка заблокирована, эта блокировка находится в памяти (как атрибут строки), а все остальные транзакции должны видеть, что она заблокирована.

В окнах поток не может получить доступ к памяти другого процесса памяти доступа

threads cannot что принадлежит другой процессу, который защищает процесс от того поврежденных другого процесса.

Таким образом, в Windows Oracle должен быть один процесс с несколькими потоками. В OS, поддерживающей обмен памяти между процессами, меньше работать Oracle на архитектуру многопроцессорного процесса и оставить управление процессами в ОС.

Oracle запускает ряд фоновых потоков/процессов для выполнения работы, которая (или может быть) асинхронна для других процессов. Таким образом, они могут продолжаться, даже когда другие процессы/потоки блокируются или заняты.

1

См. Этот ответ, который я опубликовал ранее в аналогичном ключе на этот вопрос «What is process and thread?». Таким образом, Windows широко использует потоки. В отличие от систем * nix/Linux, основанных на потоках. И см. Здесь также, эта ссылка является прямой ссылкой (которая встроена в первую ссылку, которую я дал) на explanation. Я рассказывал о том, как потоки и процессы в потоках Linux выполняются.

Надеюсь, это поможет, С уважением, Tom.

+0

И поэтому у Oracle также есть много процессов на один экземпляр? Я изменю вопрос для этого –

+0

Да. В Oracle в Windows все процессы в Oracle on * nix (pmon, smon, lgwr, et.al.) - это потоки внутри ORACLE.EXE. –