Oracle之共用伺服器模式

來源:互聯網
上載者:User

標籤:

     在共用伺服器體繫結構中,一個dispatcher指派器將傳入網路的多個會話請求定向到一個共用伺服器處理序池,消除了為每個串連分配一個專用伺服器處理序的需要。作為一般的指導原則,僅當系統需要並發串連到資料庫的數量超過作業系統的處理能力時,才能使用共用伺服器。

     共用伺服器模式必須使用net services.也就是必須配置tns資訊(即使用戶端與服務端為同一台機器,也要配置TNS,且通過IPC協議進行通訊)。它適合用於高並發,事務量小,如果此時採用了共用模式,可以大大減少由於高度並發對於ORACLE伺服器的資源消耗。
 1,共用伺服器模式優缺點     優點:     (1)減少了執行個體中的進程數     (2)增加了更多並發使用者的數量     (3)實現動態負載平衡     (4)減少了空閑伺服器處理序數量     (5)減少了執行個體PGA記憶體      缺點:     (1)共用伺服器的代碼路徑比專用伺服器長,所以它天生就比專用伺服器慢;     (2)存在人為死結的可能,因為它是串列的,只要一個串連阻塞,則該伺服器處理序上的所有使用者都被阻塞,並且極可能死結;     (3)存在獨佔事務的可能,因為如果一個會話的事務已耗用時間過長,它獨佔共用資源,其它使用者只能等待,而專用伺服器,每個用戶端是一個會話;     (4)共用伺服器模式限制了某些資料庫特性,例如:不能單獨啟動和關閉執行個體,不能進行介質恢複。 2,在共用伺服器體繫結構中需要的進程     (1)將用戶端進程串連放到 dispatcher 或者 專有伺服器處理序的 網路監聽器(PS:監聽器是Oracle網路服務的一分部,而不是Oracle資料庫的一部分)。     (2)一個或多個指派器進程(Dnnn)     (3)一個或多個共用伺服器處理序(Snnn) 3,請求處理流程     指派器將請求放入請求隊列,然後共用伺服器處理序檢查公用請求隊列並取出處理,最後伺服器處理序將響應結果置於指派器的響應隊列。(每一個指派器都有一個響應隊列) 4,指派器進程(Dnnn)     指派器進程使得用戶端進程可以共用數量有限的伺服器處理序。可以為單個資料庫執行個體建立多個指派器進程。指派器進程的最佳個數取決於作業系統的限制和每個進程的串連數。     當用戶端進程發出串連請求時,監聽器將確定用戶端進程是否應使用共用伺服器處理序,這個在設定檔裡面有配:          ○ 如果明確配置的是server = shared 並且建立了和dispatcher的通訊,則使用共用伺服器模式。     ○ 如果配置的是server = shared但是無法建立和任何dispatcher的通訊,或者配置的是server = dedicated,則使用專有伺服器模式。      一個典型的執行個體指派器設定如下(參數檔案中設定):     dispatchers="(protocol=TCP)(serv=orcl)(list=orcl)(poo=on)(disp=5)(conn=33)(sess=224)"      protocol=tcp--協議      list=orcl--監聽器別名,並非監聽器的名字,實際是一個tnsnames.ora中的網路服務名      serv=orcl--網路服務名      poo=on--是否啟用共用池      disp=5--初始調度進程數      sess=224--每個調度進程的最大會話數      max_dispatchers=19--最大調度進程的數      通過v$dispatcher視圖可以查看資料庫執行個體目前存在多少個調度器進程(指派器):select * from v$dispatcher;     修改調度進程數量:alter system set dispatchers="(protocol=tcp)(disp=6)" scope=both;     也可以手動的殺掉一個指定的調度器進程:ALTER SYSTEM SHUTDOWN IMMEDIATE ‘D000‘; 5,共用伺服器處理序(Snnn)     在共用伺服器配置中,每個共用伺服器處理序為多個用戶端請求服務。除了共用伺服器處理序不與特定用戶端進程相關聯外,共用伺服器處理序和專用伺服器處理序提供相同的功能。     (1)共用服務進程的設定主要受三個參數的影響:     ○ shared_servers     指定了當instance啟動的時候share_servers啟動的數量(可通過shared server process查看),不要將這個參數設定得太大,否者啟動資料庫instance的時候就會花更多時間,Oracle啟動過後會根據負載來動態調整shared_servers。如果為0,表示資料庫沒有啟動共用服務模式。這個參數是配置shared server必須的,而且只有這個參數是必須的。     修改參數:  alter system set shared_servers=1;      ○ max_shared_servers     ORACLE在同一個時刻最大能夠使用的share_servers數量,不要將這個參數設定小於shared_servers,如果動態修改shared_servers大於max_shared_servers,ORACLE會覆蓋max_shared_servers的值,此時你需要修改max_shared_servers,同時也不能大於processes的值。這個參數是為了給佔用很大資源操作而設的(批處理),為了預留一些process給DBA任務(rman備份)。      ○ shared_server_sesions:     指定了總共允許的的shared server session的數量。如果設定了這個參數,那麼就不要將這個值超過sessions,如果沒有設定這個值,那麼只要還有閒置session,就可以被使用。設定這個值是為專有串連預留user sessions的。      (2)把伺服器從共用伺服器模式改為專用伺服器模式       alter system set shared_servers = 0 scope = both;   --已經存在的共用進程需要等到會話結束才能結束       或       alter system set max_share_servers=0 scope=both; --立即強制結束所有共用伺服器處理序     6,判斷當前session的串連模式     資料庫可以同時支援共用伺服器串連和專用伺服器串連。因此如果參數shared_servers=0 ,可以確定所有串連均是專用模式。但是如果shared_servers>0,那麼就需要通過v$session視圖的SERVER欄位來進一步判斷當前串連模式了。  補充:Oracle11gR2安裝後初始設定shared_servers=1;同時,資料庫還建立了一個調度器進程,在參數檔案中有如下配置:dispatchers=‘(PROTOCOL=TCP) (SERVICE=orclXDB)‘,service "orclXDB"是Oracle9i後建立資料庫時預設包含的XML DB特性,提供http、ftp等服務。通過lsnrctl service可以查看監聽器監聽的網路服務:(orclXDB是Oracle網路體系中的一個服務,而不是作業系統層面的服務)   轉載請註明出處:http://www.cnblogs.com/pengineer/p/4516856.html

Oracle之共用伺服器模式

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.