




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、Oracle專用服務(wù)器與共享服務(wù)器的區(qū)別 1、原理 在建立Oracle數(shù)據(jù)庫的時候,應(yīng)該會在數(shù)據(jù)庫建立助手向?qū)厦婵吹竭@么一個選項,就是數(shù)據(jù)庫的連接 模式采用什么方式。在Oracle9i或者10g中,可以看到有2種連接模式,一種叫做專用服務(wù)器連接 (dedicated server),另外一種叫做共享服務(wù)器連接(shared server)。下面我們來分類說一下這兩種 連接方式的不同點。專用服務(wù)器模式就是說每次在對Oracle進(jìn)行訪問的時候,Oracle服務(wù)器的Listener會得到這個訪問 請求,然后回為這個訪問創(chuàng)建一個新的進(jìn)程來進(jìn)行服務(wù)。所以說,對于每一個客戶端的訪問,都會生成 一個新的進(jìn)
2、程進(jìn)行服務(wù),是一種類似一對一的映射關(guān)系。這種連接模式的一個很重要的特點就是UGA(用 戶全局域)是存儲在PGA(進(jìn)程全局域)中的,這個特性也很好說明了當(dāng)前用戶的內(nèi)存空間是按照進(jìn)程來進(jìn) 行分配的。而另外的共享服務(wù)器連接則是一種在程序編寫的時候通常會用到的連接池(pool)的概念。采用這種 模式的話,在數(shù)據(jù)庫的初始化的時候就會創(chuàng)建一批服務(wù)器連接的進(jìn)程,然后把這些連接進(jìn)程放入一個連 接池來進(jìn)行管理。初始化的池中的進(jìn)程數(shù)量在數(shù)據(jù)庫初始化建立的時候是可以手動設(shè)置的。在連接建立 的時候,Listener首先接受到客戶端的建立連接的請求,然后Listener去生成一個叫做調(diào)度器(dipatcher) 的進(jìn)程
3、與客戶端進(jìn)行連接。調(diào)度器把把客戶端的請求放在SGA(系統(tǒng)全局域)的一個請求隊列中,然后再共 享服務(wù)器連接池中查找有無空閑的連接,然后讓這個空閑的服務(wù)器進(jìn)行處理。處理完畢以后再把處理結(jié) 果放在SGA的相應(yīng)隊列中。調(diào)度器通過查詢相應(yīng)隊列,得到返回結(jié)果,再返回給客戶端。這種連接模式的 優(yōu)點在于服務(wù)器進(jìn)程的數(shù)量可以得到控制,不大可能出現(xiàn)因為連接人數(shù)過多而造成服務(wù)器內(nèi)存崩潰。但 是由于增加了復(fù)雜度以及請求相應(yīng)隊列,可能性能上有所下降。總之,在開發(fā)階段中,用第一種專用服務(wù)器可能好一些,因為少了一些中間的復(fù)雜度,而且開發(fā)的 時候一般連接的數(shù)量也少。而在多個應(yīng)用同時使用一個數(shù)據(jù)庫的實際應(yīng)用環(huán)境下,采用第二種方
4、法可能 好一些,因為如果到時候突然有1000個或者10000個請求連接的話,數(shù)據(jù)庫服務(wù)器如果同時建立10000個 連接,肯定要受不了的。當(dāng)然,也要看到時候的實際情況如何再做決定,兩者沒有絕對的哪種好哪種不 好的差別關(guān)于這兩者的比較假如你來到一個城市,要在這個城市的不同的地方辦幾件事情,在交通方面你 有兩種選擇:一個是雇一輛專車,這輛專車將會把你從入帶到B,一直等你把在B的事情辦完,在把你從B 帶到C。另一種選擇是給出租車公司打電話訂輛出租車,先把你從帶到B,然后你和出租車該 干嘛干嘛,你去辦你的事情,出租車去接別的生意,等你在B的事情辦完了,你再跟出租車公司訂車,出 租車公司將會聯(lián)系當(dāng)時在B附
5、近的其他出租車去接你。對于shared servers,你就要需要做一些額外的設(shè)置,當(dāng)讓按照administrator guide并不難,關(guān)鍵是你 需要決定到底需要多少個shared server servers和多少個dispatcher,這不僅僅需要經(jīng)驗的積累,還需 要持續(xù)的觀察和調(diào)整。在dedicated servers里,你所有的等待都是數(shù)據(jù)庫本身的等待,而在shared servers里你有可能需要等 彳寺一個 availabl e 的 shared server process。很明顯,當(dāng)用戶并發(fā)的連接數(shù)很大的時候,dedicated servers的server process個
6、數(shù)也會變得很大,對 于操作系統(tǒng)來說多一個process就意味著多一點管理負(fù)擔(dān),要知道操作系統(tǒng)支持的同時并發(fā)數(shù)可不是無限 的。這意味著,在dedicate servers里,當(dāng)你有大量的用戶連接(比如,同一時間超過5000個用戶連上 來),你的系統(tǒng)負(fù)擔(dān)就會相當(dāng)大。而這種情況shared servers就可以處理的相對好一些,因為加入同時 有5000個用戶連上來而且我們知道一般只有1%的連接是active,那我們只需要設(shè)置50個shared servers 就可以把所有的用戶請求處理得很好,并節(jié)省了系統(tǒng)資源。作為一個好處,shared servers可以用來控制concurrent。要知道用戶的并
7、發(fā)數(shù)和系統(tǒng)的處理能力決不 是成正比的(可以下面的圖),當(dāng)用戶并發(fā)數(shù)超過一個閥值,系統(tǒng)的處理能力會明顯下降。通過shared servers可以控制系統(tǒng)的concurrent不超過這個閥值。在引入PGA的自動管理以前,shared servers是要比dedicated servers節(jié)省內(nèi)存的,然后在自動管理的 ?仔入引入之后,shared servers的這個優(yōu)勢已經(jīng)不像我們想象的那么不明顯了。dedicate servers一個server process為了一個較大的request而長時間的工作而不影響其它的users, 然而在shared servers, 一些較大的request會影
8、響其它的用戶。還需要考慮其他的因素,比如,如果在前端使用了weblogic的connecting pool,那么你在database level 再使用shared servers可能就不是很必要,因為這時你的用戶連接已經(jīng)在weblogic層面上得到了控制。shared servers還有一個所謂的偽死鎖的問題,這點大家參考一下tom的新書就知道了。關(guān)于dedicated servers和shared servers的話題我們就討論這么多,最后給大家一個小提示:其實 dedicated servers和shared servers是可以并存的,實際上,即使你使用了shared servers,
9、某些管理 操作也是必須在dedicated模式下來做的,比如startup或shutdown database0如果你實在難以選擇, 如果你的應(yīng)用可能一部分是OLTP的(用戶量也很大),一部分是DW的,其實你可以考慮同時使用dedicated servers和shared servers。2、服務(wù)器模式的設(shè)置 啟用專用服務(wù)器dedicated servers不需要專門的設(shè)置,這個是oracle的默認(rèn)選項。啟用共享服務(wù)器 要切換到共享模式,可以使用以下步驟:設(shè)置初始化參數(shù)SHARED_SERVERS大于0,可以使用alter system命令動態(tài)的設(shè)置也可以在spfile里 面修改初始化參數(shù)SH
10、ARED_SERVERS 的值大于0,然后shutdown oracle,然后restart oracle 即可 啟動共享模式,其他的共享服務(wù)器參數(shù)可以不用設(shè)置參考語句:alter system set shared_servers = 1 scope=both ;alter system set max_shared_servers = 5 scope=both ;設(shè)置dispatchers參數(shù),可以采用下面的方法設(shè)置:alter system set dispatchers=(PROTOCOL=TCP) (SERVICE=mydbXDB)(SERVICE=mydb);前面表示的是協(xié)議,后面
11、的service分別指定要采用共享服務(wù)器模式的服務(wù)名稱oracle文檔上說該步驟不是必須做的,但是我在實際中發(fā)現(xiàn)如果只是設(shè)置了 shared_server參數(shù), 而把dispatches參數(shù)設(shè)置為空的話,不能啟動共享服務(wù)器,使用上面的模式指定只啟動某個服務(wù)的 共享模式,如果要設(shè)置所有服務(wù)都使用共享模式,則設(shè)置為:alter system set dispatchers=(PROTOCOL=TCP);在客戶端的tnsnames.ora的tns設(shè)置中,在CONNECT_DATA設(shè)置一項中增加(server=shared ) 一項, 即可使用共享服務(wù)器連接如果服務(wù)器端沒有啟動共享服務(wù)器模式,而客戶端
12、使用shared方式連接的話,會出現(xiàn)錯誤提示:“ORA-12520: TNS:監(jiān)聽程序無法找到需要的服務(wù)器類型的可用句柄”;和共享服務(wù)器相關(guān)的參數(shù)如下:max_shared_servers最大服務(wù)器進(jìn)程數(shù)SHARED_SERVER_SESSIONS 指定可以同時運行的最大的共享服務(wù)會話數(shù)dispatchers協(xié)議,調(diào)度程序數(shù),每個調(diào)度程序的最大連接數(shù)max_dispatchers最大調(diào)度程序數(shù)shared_servers-服務(wù)器進(jìn)程數(shù)CIRCUITS指定網(wǎng)絡(luò)會話層出入的總的虛擬回路3、判斷數(shù)據(jù)庫使用的連接模式查看當(dāng)前數(shù)據(jù)庫服務(wù)器的運行情況有一下幾種辦法:從v$session里面查看:SQL s
13、elect distinct server from v$session ;SQLSERVERDEDICATEDNONESQL如果顯示的除了dedicated,還有NONE,則說明當(dāng)前啟動了共享服務(wù)器,并且server為none的會話正使用 共享服務(wù)器連接,同時,如果只顯示有dedicated,則不能說明服務(wù)器就一定工作在專用服務(wù)器下面,此時只能說明有可能 啟動了共享模式,但是無連接可以使用下面的語句查詢采用共享服務(wù)器的會話信息:select saddr,program ,server from v$session;SQL /SADDR PROGRAMSERVER296FB24C plsqld
14、ev.exeNONE296FFD1C oracleB851 (q001)DEDICATED29705AA0 oracleB851 (q000)DEDICATED查詢視圖:在網(wǎng)上有的資料上說只要查詢下面三個視圖,有記錄則說明啟動了共享模式,經(jīng)過驗證,具體情況如下:select * from v$shared_server;-有記錄,且STATUS字段為WAIT(COMMON),則說明啟動共享;status為TERMINATED或者無記錄,則說明沒有啟動共享服務(wù)器select * from v$dispatcher;-有無記錄都不能說明啟動共享服務(wù)器,只能說明是配置了dispatchers 參數(shù)s
15、elect * from V$CIRCUIT-有記錄說明當(dāng)前有使用共享模式的連接,無記錄則不能判定服務(wù)器模式實際查詢?nèi)缦?啟動共享服務(wù)器的情況):SQL select * from v$shared_server;NAME PADDR STATUSMESSAGES BYTES BREAKS CIRCUIT IDLEBUSY REQUESTS2961ACA0 WAIT(COMMON)7356115203 00561435 TOC o 1-5 h zED8 TERMINATED22600 00300130301SQL select CIRCUIT,DISPATCHER,S
16、ERVER,WAITER,SADDR,STATUS,BYTES from v$circuit ;CIRCUIT DISPATCH SERVER WAITER SADDR STATUSBYTES 2743471C 2961A6EC 0000296FB24C NORMAL10364SQL select name,paddr,created,bytes from v$dispatcher;NAME PADDRCREATED BYTESD000 2961A6EC7612551SQL注意上述視圖之間的聯(lián)系,v$circuit中的saddr和v$session中的saddr是相等的查詢監(jiān)聽器的狀態(tài):LSN
17、RCTL serviceConnecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=B851)(PORT=1542)Services Summary.Service PLSExtProc has 1 instance(s).Instance PLSExtProc”, status UNKNOWN, has 1 handler(s) for this service.Handler(s):DEDICATED established:0 refused:0LOCAL SERVERService mydb has 1 instance(s).Ins
18、tance mydb”, status READY, has 1 handler(s) for this service. Handler(s):DEDICATED established:0 refused:0 state:ready LOCAL SERVERService mydb_XPT has 1 instance(s).Instance mydb”, status READY, has 1 handler(s) for this service. Handler(s):DEDICATED established:0 refused:0 state:ready LOCAL SERVER
19、The command completed successfullyLSNRCTL其中的DEDICATED表示當(dāng)前服務(wù)器處于專用服務(wù)器模式如果啟動共享服務(wù)器,則得到的狀態(tài)是LSNRCTL serviceConnecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=B851)(PORT=1542) Services Summary.Service PLSExtProc has 1 instance(s).Instance PLSExtProc”, status UNKNOWN, has 1 handler(s) for this service.
20、 Handler(s):DEDICATED established:0 refused:0LOCAL SERVERService mydb has 1 instance(s).Instance mydb”, status READY, has 2 handler(s) for this service. Handler(s):D000 established:3 refused:0 current:3 max:1022 state:ready DISPATCHER (ADDRESS=(PROTOCOL=tcp)(HOST=B851)(PORT=60606)DEDICATED establish
21、ed:0 refused:0 state:ready LOCAL SERVERService mydbXDB has 1 instance(s).Instance mydb, status READY, has 0 handler(s) for this service.Service mydb_XPT has 1 instance(s).Instance mydb”, status READY, has 1 handler(s) for this service.Handler(s):DEDICATED established:0 refused:0 state:readyLOCAL SER
22、VERThe command completed successfullyLSNRCTL可以看出此時,mydb服務(wù)啟動了共享模式,但是同時也支持專用模式在實際的使用中還發(fā)現(xiàn)有趣的現(xiàn)象,如果把shared_servers和max_shared_servers同時設(shè)置成0, 但是保持dispatcher參數(shù)的值不變,則再查看監(jiān)聽時,出現(xiàn)下面的情況: Service mydb has 1 instance(s).Instance mydb”, status READY, has 2 handler(s) for this service.Handler(s):D000 established:0 r
23、efused:0 current:0 max:1022 state:blockedDISPATCHER (ADDRESS=(PROTOCOL=tcp)(HOST=LOCALHOST)(PORT=60606)DEDICATED established:0 refused:0 state:ready LOCAL SERVER此時的共享進(jìn)程還在,但是狀態(tài)為阻塞4、客戶端建立的連接模式=當(dāng)服務(wù)器采用專用服務(wù)器模式時,客戶端只能使用專用模式連接,也就是在connect_data數(shù)據(jù)中只能 使用 server=dedicated。當(dāng)服務(wù)器采用共享服務(wù)器模式時,客戶端可以選擇建立共享還是專用連接,conne
24、ction,只要在 connect_data 中指定server=dedicated or server=shared大多數(shù)情況下我們更傾向或習(xí)慣專用模式,兩種模式下,對sga等分配都會有不同,所以如果轉(zhuǎn)換成mts 模式,別忘了sga也是需要調(diào)整的。最典型的是mts模式需要較大的large_pool_size。如果真想轉(zhuǎn)換還是 仔細(xì)看看oracle關(guān)于mts的文檔。共享連接只是把連接SESSION信息放在LARGE POOL,所以LARGE POOL要 大一些。而專用連接的SESION信息放在PGA。5、禁用共享服務(wù)器模式Y(jié)ou disable shared server by setting
25、 SHARED_SERVERS to 0. No new client can connect in shared mode. However, when you set SHARED_SERVERS to 0, Oracle Database retains some shared servers until all shared server connections are closed. The number of shared servers retained is either the number specified by the preceding setting of SHAR
26、ED_SERVERS or the value of the MAX_SHARED_SERVERS parameter, whichever is smaller. If both SHARED_SERVERS and MAX_SHARED_SERVERS are set to 0, then all shared servers will terminate and requests from remaining shared server clients will be queued until the value of SHARED_SERVERS or MAX_SHARED_SERVE
27、RS is raised again.-如果同時把SHARED_SERVERS and MAX_SHARED_SERVERS都設(shè)置成0,則共享服務(wù)器將關(guān)閉,并且保留 的共享服務(wù)器的請求將進(jìn)入隊列等待,一直到這兩個參數(shù)的值重新被設(shè)置To terminate dispatchers once all shared server clients disconnect, enter this statement:ALTER SYSTEM SET DISPATCHERS =;禁用的實驗:alter system set shared_servers = 0 ;alter system set max_s
28、hared_servers = 0 ;在已經(jīng)建立共享模式的客戶端執(zhí)行查詢,一直處于等待,查看視圖: SQL select circuit,saddr,status,queue from v$circuit;CIRCUIT SADDRSTATUSQUEUE27434010 296F8CE4NORMALCOMMON2743471C 296FB24CNORMALNONE2 rows selected.SQL select program,saddr,server,status from v$session where saddr in (296F8CE4,296FB24C);PROGRAMSADDR
29、 SERVER STATUSplsqldev.exe296F8CE4 NONEINACTIVEplsqldev.exe296FB24C NONEINACTIVE2 rows selected.SQL恢復(fù)參數(shù)值: SQL alter system set shared_servers = 1;System altered.SQL alter system set max_shared_servers = 5;System altered.SQL前臺的查詢恢復(fù)正常,查看視圖: SQL select circuit,saddr,status,queue from v$circuit;CIRCUIT SADDRSTATUSQUEUE 27434010 296F8CE4NORMALNONE2743471C 296F
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 河西走廊長城傳說研究
- 發(fā)射光譜診斷低氣壓容性耦合氬-甲烷等離子體放電特性
- ELP2通過NLRP3-GSDMD-GSDME調(diào)控炎癥誘導(dǎo)的成骨細(xì)胞焦亡和成骨分化抑制
- 科技公司薪酬結(jié)構(gòu)調(diào)查報告范文
- 文化藝術(shù)團(tuán)體演出督導(dǎo)職責(zé)與流程
- 人事經(jīng)理在教育機構(gòu)的職能與職責(zé)
- 2025年安全生產(chǎn)標(biāo)準(zhǔn)化建設(shè)安全培訓(xùn)課程效果評估試題庫
- 2025年危險化學(xué)品安全作業(yè)特種作業(yè)操作證考試試卷(化工設(shè)備)試題
- 2025年鄉(xiāng)村醫(yī)生農(nóng)村慢性病管理考試題庫:慢性病管理與社區(qū)健康促進(jìn)
- 2025年中式烹調(diào)師(初級)職業(yè)技能鑒定模擬試題解析大全
- 小型設(shè)備購買協(xié)議書
- 難點02:總集篇·十六種陰影部分面積法【十六大考點】-2024年小升初數(shù)學(xué)典型例題系列(解析版)
- 廠房設(shè)備拆除協(xié)議書
- 2025屆高三高考押題預(yù)測卷 數(shù)學(xué)(新高考Ⅱ卷02) 含解析
- 智能家居安裝與調(diào)試協(xié)議
- 擔(dān)保貸款免責(zé)協(xié)議書
- 第五版-FMEA培訓(xùn)教材-新版
- NB-T32036-2017光伏發(fā)電工程達(dá)標(biāo)投產(chǎn)驗收規(guī)程
- 食品安全與日常飲食智慧樹知到期末考試答案章節(jié)答案2024年中國農(nóng)業(yè)大學(xué)
- PE袋化學(xué)品安全技術(shù)說明書MSDS(聚乙烯塑膠袋)
- 醫(yī)院檢驗科實驗室生物安全管理手冊
評論
0/150
提交評論