所有連接到ORACLE的用戶必須執行兩個代碼模塊可存取一個ORACLE數據庫實例
應用或ORACLE工具
一數據庫用戶執行一數據庫應用或一個ORACLE工具
可向ORACLE數據庫發出SQL語句
ORACLE服務器程序
負責解釋和處理應用中的SQL語句
在多進程實例中
連接用戶的代碼可按下列三種方案之一配置
對於每一個用戶
其數據庫應用程序和服務器程序組合成單個用戶進程
對於每一個用戶
其數據庫應用是由用戶進程所運行
並有一個專用服務器進程
執行ORACLE服務器的代碼
這樣的配置稱為專用服務器體系結構; 執行數據庫應用的進程不同於執行ORACLE服務器代碼的進程
而且每一個服務器進程(執行ORACLE服務器代碼)可服務於多個用戶進程
這樣的配置稱為多線索服務器體系結構
) USER/SERVER進程相結合的結構
在這種配置下
數據庫應用和ORACLE服務器程序是在同一個進程中運行
該進程稱為用戶進程
這種ORACLE配置有時稱為單任務ORACLE(single_task ORACLE)
該配置適用於這樣的操作系統
它可在同一進程中的數據庫應用和ORACLE代碼之間維護一個隔離
該隔離是為數據安全性和完整性所需
其中程序接口(program interface)是負責ORACLE服務器代碼的隔離和保護
在數據庫應用和ORACLE用戶程序之間傳送數據
) 使用專用服務器進程的系統結構
使用專用服務器進程的ORACLE系統在兩台計算機上運行
在這種系統中
在一計算機上用戶進程執行數據庫應用
而在另一台計算機上的服務器進程執行相應的ORACLE服務器代碼
這兩個進程是分離的
為每個用戶進程建立的不同的服務器進程稱為專用服務器進程
因為該服務器進程僅對相連的用戶進程起作用
這種配置又稱為兩任務ORACLE
每一個連接到ORACLE的用戶進程有一個相應的專用服務進程
這種系統結構允許客戶應用是有工作站上執行
通過網絡與運行ORACLE的計算機通信
當客戶應用和ORACLE服務器代碼是在同一台計算機上執行時
這種結構也可用
) 多線索服務器的系統結構
多線索服務器配置允許許多用戶進程共享很少服務器進程
在沒有多線索服務器的配置中
每一個用戶進程需要自己的專用服務器進程
在具有多線索服務器的配置中
許多用戶進程連接到調度進程
由調度進程將客戶請求發送到一個共享服務器進程
多線索服務器配置的優點是降低系統開銷
增加用戶個數
該系統中需要下列類型的進程
網絡接收器進程
將用戶進程連接到調度進程和專用服務器進程
一個或多個調度進程
一個或多個共享服務器進程
其中網絡接收器進程等待新來的連接請求
決定每一用戶進程能否用共享服務器進程
如果可以使用
接收器進程將一調度進程的地址返回給用戶進程
如果用戶進程請求一專用服務器
該接收器進程將建立一個專用服務器進程
將用戶進程連接到該專用服務器進程
對於數據庫客戶機所使用的每種網絡協議至少配置一個調度進程
並啟動它
當用戶作一次調用時
調度進程將請求放置在SGA的請求隊列中
由可用的共享服務器進程獲取
共享服務器進程為完成每一個用戶進程的請求作所有必要的數據庫調用
當服務器完成請求時
將結果返回到調度進程的隊列
然後由調度進程將完成的請求返回給用戶進程
共享服務器進程
除共享服務器進程不是連接指定的用戶進程外
共享服務器進程和專用服務器進程提供相同的功能
一個共享服務器進程在多線索服務器的配置中可為任何客戶請求服務
一個共享服務器進程的SGA不包含有與用戶相關的數據
其信息可為所有共享服務器進程存取
它僅包含棧空間
進程指定變量
所有與會話有關的信息是包含有SGA中
每一個共享服務器進程可存取全部會話的數據空間
以致任何服務進程可處理任何會話的請求
對於每一個會話的數據空間是在SGA中分配空間
ORACLE根據請求隊列的長度可動態地調整共享服務器進程
可建立的共享服務器進程將請求放到請求隊列
一個用戶請求是對數據庫的一次程序接口調用
為SQL語句
在SGA中請求隊列對實例的全部調度進程是公用的
服務器進程為新請求 檢查公用請求隊列
按先進先出的原則從隊列檢出一個請求
然後為完成該請求對數據庫作必要的調用
共享服務器進程將響應放在調度進程的響應隊列
每一個調度進程在SGA中有自己的響應隊列
每個調度進程負責將完成的請求回送給相應的用戶進程
From:http://tw.wingwit.com/Article/program/Oracle/201311/17933.html