1. 程式人生 > >oracle的shared、dedicated模式解析

oracle的shared、dedicated模式解析

ner article quest sel 模式 times 實現 pga 似的

主要參考文檔:http://www.itpub.net/thread-1714191-1-1.html

Oracleh有兩種server模式shared modededicated mode

Dedicated mode下。client每發來一個連接請求。數據庫都要給這個請求建立一個服務進程來完畢響應。而在shared mode下。oracle會首先建立一定數目的服務進程,client發來的請求會首先發送到dispatcher即調度器,然後由dispatcher依據服務進程的忙閑情況。選擇性的把請求交付給詳細的服務進程進行響應。共享服務進程作出響應後,把響應的結果再交給dispatcher,由

dispatcher再次交付給client。在這個過程中,涉及到兩個隊列。即請求隊列跟響應隊列。這兩個隊列都位於SGA中,共享連接的會話信息放置在Large pool中,因此對SGA的使用很多其它。

使用shared modededicated mode的優劣。

使用dedicated mode,由於為每個連接請求建立一個專屬進程進行響應。所以它的響應速度要比shared mode快,但dedicate mode要為每個請求建立專屬的PGA,所以對內存的需求更高。但在生產環境中,大多數都是使用dedicated mode。同一時候dedicated mode也是oracle的默認模式。

使用shared mode

能夠有效降低系統進程數目,能夠在內存限制比較大的環境中使用。

shared mode由於在client請求與server響應之間,必需要走dispatcher這道程序。也就更easy造成擁堵或死鎖,也可能由於某一請求長時間占用服務時間而造成其它請求的長時間等待,此外,共享模式不easy實現trace。在生產環境中。大多不適用shared mode,而使用中間件軟件來實現類似的需求。

查看當前系統的server模式

Show parameter shared

首先shared_servers顯示的系統啟動時候啟用的共享服務進程的個數。這個參數大於0表示啟用了共享模式,這個參數不用設置過大,過大會添加啟動時間,

oracle會自己主動依據負載調節共享服務進程的個數,這個數值僅僅是啟動時候的初始值。

Max_shared_servers這個參數設置了共享服務進程的最大數。

Show parameter dispatcher

僅僅啟動shared_server並不能真正啟用共享模式,還須要設置好dispatchers

Dispatchers的內容形如‘(protocol=tcp) (service=jf01) (dispatchers=3)’。

當中protocol表示協議類型,service表示要啟用共享模式的服務名,dispatchers表示初始調度進程的數量。

Max_dispatchers為調度進程的最大數目。

共享模式下相應的後臺進程分別為以“S”和“D”開頭的,S開頭的為服務進程,D開頭的為調度進程。形如S000,S001,D000,D001此類。能夠通過select pname from v$process查看。

啟用禁用共享模式

Dedicated模式是oracle的默認模式,oracle也不推薦使用shared模式。

啟用共享

Alter system set shared_servers=2;

設置此參數大於0

Alter system set dispatcher=’(protocol=tcp) (service=jf01) (dispatchers=3);

設置要啟用共享模式的服務。

此外。還須要再client的tnsnames.ora文件裏,在要使用共享模式連接的實例解析下更改

CONNECT_DATA 中的 (SERVER=SHARED )一項。

僅僅有這樣,client才會發起建立共享連接的請求。假設此時服務端沒有啟用共享模式。則會出現錯誤提示:

ORA-12520 TNS:Listener count not find available handler for requested type of server

禁用共享模式

Alter system set shared_server=0;

Alter system set dispatcher=’’;

這樣就能夠了。

查看當前會話的信息

Select server from v$session;

相關視圖

V$shaed_server

V$dispatcher

V$circuit

oracle的shared、dedicated模式解析