Oracle專用與共享服務(wù)器的區(qū)別_第1頁(yè)
Oracle專用與共享服務(wù)器的區(qū)別_第2頁(yè)
Oracle專用與共享服務(wù)器的區(qū)別_第3頁(yè)
Oracle專用與共享服務(wù)器的區(qū)別_第4頁(yè)
Oracle專用與共享服務(wù)器的區(qū)別_第5頁(yè)
已閱讀5頁(yè),還剩4頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、Oracle專用服務(wù)器與共享服務(wù)器的區(qū)別 1、原理 在建立Oracle數(shù)據(jù)庫(kù)的時(shí)候,應(yīng)該會(huì)在數(shù)據(jù)庫(kù)建立助手向?qū)厦婵吹竭@么一個(gè)選項(xiàng),就是數(shù)據(jù)庫(kù)的連接 模式采用什么方式。在Oracle9i或者10g中,可以看到有2種連接模式,一種叫做專用服務(wù)器連接 (dedicated server),另外一種叫做共享服務(wù)器連接(shared server)。下面我們來(lái)分類說(shuō)一下這兩種 連接方式的不同點(diǎn)。專用服務(wù)器模式就是說(shuō)每次在對(duì)Oracle進(jìn)行訪問(wèn)的時(shí)候,Oracle服務(wù)器的Listener會(huì)得到這個(gè)訪問(wèn) 請(qǐng)求,然后回為這個(gè)訪問(wèn)創(chuàng)建一個(gè)新的進(jìn)程來(lái)進(jìn)行服務(wù)。所以說(shuō),對(duì)于每一個(gè)客戶端的訪問(wèn),都會(huì)生成 一個(gè)新的進(jìn)

2、程進(jìn)行服務(wù),是一種類似一對(duì)一的映射關(guān)系。這種連接模式的一個(gè)很重要的特點(diǎn)就是UGA(用 戶全局域)是存儲(chǔ)在PGA(進(jìn)程全局域)中的,這個(gè)特性也很好說(shuō)明了當(dāng)前用戶的內(nèi)存空間是按照進(jìn)程來(lái)進(jìn) 行分配的。而另外的共享服務(wù)器連接則是一種在程序編寫(xiě)的時(shí)候通常會(huì)用到的連接池(pool)的概念。采用這種 模式的話,在數(shù)據(jù)庫(kù)的初始化的時(shí)候就會(huì)創(chuàng)建一批服務(wù)器連接的進(jìn)程,然后把這些連接進(jìn)程放入一個(gè)連 接池來(lái)進(jìn)行管理。初始化的池中的進(jìn)程數(shù)量在數(shù)據(jù)庫(kù)初始化建立的時(shí)候是可以手動(dòng)設(shè)置的。在連接建立 的時(shí)候,Listener首先接受到客戶端的建立連接的請(qǐng)求,然后Listener去生成一個(gè)叫做調(diào)度器(dipatcher) 的進(jìn)程

3、與客戶端進(jìn)行連接。調(diào)度器把把客戶端的請(qǐng)求放在SGA(系統(tǒng)全局域)的一個(gè)請(qǐng)求隊(duì)列中,然后再共 享服務(wù)器連接池中查找有無(wú)空閑的連接,然后讓這個(gè)空閑的服務(wù)器進(jìn)行處理。處理完畢以后再把處理結(jié) 果放在SGA的相應(yīng)隊(duì)列中。調(diào)度器通過(guò)查詢相應(yīng)隊(duì)列,得到返回結(jié)果,再返回給客戶端。這種連接模式的 優(yōu)點(diǎn)在于服務(wù)器進(jìn)程的數(shù)量可以得到控制,不大可能出現(xiàn)因?yàn)檫B接人數(shù)過(guò)多而造成服務(wù)器內(nèi)存崩潰。但 是由于增加了復(fù)雜度以及請(qǐng)求相應(yīng)隊(duì)列,可能性能上有所下降??傊?,在開(kāi)發(fā)階段中,用第一種專用服務(wù)器可能好一些,因?yàn)樯倭艘恍┲虚g的復(fù)雜度,而且開(kāi)發(fā)的 時(shí)候一般連接的數(shù)量也少。而在多個(gè)應(yīng)用同時(shí)使用一個(gè)數(shù)據(jù)庫(kù)的實(shí)際應(yīng)用環(huán)境下,采用第二種方

4、法可能 好一些,因?yàn)槿绻綍r(shí)候突然有1000個(gè)或者10000個(gè)請(qǐng)求連接的話,數(shù)據(jù)庫(kù)服務(wù)器如果同時(shí)建立10000個(gè) 連接,肯定要受不了的。當(dāng)然,也要看到時(shí)候的實(shí)際情況如何再做決定,兩者沒(méi)有絕對(duì)的哪種好哪種不 好的差別關(guān)于這兩者的比較假如你來(lái)到一個(gè)城市,要在這個(gè)城市的不同的地方辦幾件事情,在交通方面你 有兩種選擇:一個(gè)是雇一輛專車(chē),這輛專車(chē)將會(huì)把你從入帶到B,一直等你把在B的事情辦完,在把你從B 帶到C。另一種選擇是給出租車(chē)公司打電話訂輛出租車(chē),先把你從帶到B,然后你和出租車(chē)該 干嘛干嘛,你去辦你的事情,出租車(chē)去接別的生意,等你在B的事情辦完了,你再跟出租車(chē)公司訂車(chē),出 租車(chē)公司將會(huì)聯(lián)系當(dāng)時(shí)在B附

5、近的其他出租車(chē)去接你。對(duì)于shared servers,你就要需要做一些額外的設(shè)置,當(dāng)讓按照administrator guide并不難,關(guān)鍵是你 需要決定到底需要多少個(gè)shared server servers和多少個(gè)dispatcher,這不僅僅需要經(jīng)驗(yàn)的積累,還需 要持續(xù)的觀察和調(diào)整。在dedicated servers里,你所有的等待都是數(shù)據(jù)庫(kù)本身的等待,而在shared servers里你有可能需要等 彳寺一個(gè) availabl e 的 shared server process。很明顯,當(dāng)用戶并發(fā)的連接數(shù)很大的時(shí)候,dedicated servers的server process個(gè)

6、數(shù)也會(huì)變得很大,對(duì) 于操作系統(tǒng)來(lái)說(shuō)多一個(gè)process就意味著多一點(diǎn)管理負(fù)擔(dān),要知道操作系統(tǒng)支持的同時(shí)并發(fā)數(shù)可不是無(wú)限 的。這意味著,在dedicate servers里,當(dāng)你有大量的用戶連接(比如,同一時(shí)間超過(guò)5000個(gè)用戶連上 來(lái)),你的系統(tǒng)負(fù)擔(dān)就會(huì)相當(dāng)大。而這種情況shared servers就可以處理的相對(duì)好一些,因?yàn)榧尤胪瑫r(shí) 有5000個(gè)用戶連上來(lái)而且我們知道一般只有1%的連接是active,那我們只需要設(shè)置50個(gè)shared servers 就可以把所有的用戶請(qǐng)求處理得很好,并節(jié)省了系統(tǒng)資源。作為一個(gè)好處,shared servers可以用來(lái)控制concurrent。要知道用戶的并

7、發(fā)數(shù)和系統(tǒng)的處理能力決不 是成正比的(可以下面的圖),當(dāng)用戶并發(fā)數(shù)超過(guò)一個(gè)閥值,系統(tǒng)的處理能力會(huì)明顯下降。通過(guò)shared servers可以控制系統(tǒng)的concurrent不超過(guò)這個(gè)閥值。在引入PGA的自動(dòng)管理以前,shared servers是要比dedicated servers節(jié)省內(nèi)存的,然后在自動(dòng)管理的 ?仔入引入之后,shared servers的這個(gè)優(yōu)勢(shì)已經(jīng)不像我們想象的那么不明顯了。dedicate servers一個(gè)server process為了一個(gè)較大的request而長(zhǎng)時(shí)間的工作而不影響其它的users, 然而在shared servers, 一些較大的request會(huì)影

8、響其它的用戶。還需要考慮其他的因素,比如,如果在前端使用了weblogic的connecting pool,那么你在database level 再使用shared servers可能就不是很必要,因?yàn)檫@時(shí)你的用戶連接已經(jīng)在weblogic層面上得到了控制。shared servers還有一個(gè)所謂的偽死鎖的問(wèn)題,這點(diǎn)大家參考一下tom的新書(shū)就知道了。關(guān)于dedicated servers和shared servers的話題我們就討論這么多,最后給大家一個(gè)小提示:其實(shí) dedicated servers和shared servers是可以并存的,實(shí)際上,即使你使用了shared servers,

9、某些管理 操作也是必須在dedicated模式下來(lái)做的,比如startup或shutdown database0如果你實(shí)在難以選擇, 如果你的應(yīng)用可能一部分是OLTP的(用戶量也很大),一部分是DW的,其實(shí)你可以考慮同時(shí)使用dedicated servers和shared servers。2、服務(wù)器模式的設(shè)置 啟用專用服務(wù)器dedicated servers不需要專門(mén)的設(shè)置,這個(gè)是oracle的默認(rèn)選項(xiàng)。啟用共享服務(wù)器 要切換到共享模式,可以使用以下步驟:設(shè)置初始化參數(shù)SHARED_SERVERS大于0,可以使用alter system命令動(dòng)態(tài)的設(shè)置也可以在spfile里 面修改初始化參數(shù)SH

10、ARED_SERVERS 的值大于0,然后shutdown oracle,然后restart oracle 即可 啟動(dòng)共享模式,其他的共享服務(wù)器參數(shù)可以不用設(shè)置參考語(yǔ)句: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文檔上說(shuō)該步驟不是必須做的,但是我在實(shí)際中發(fā)現(xiàn)如果只是設(shè)置了 shared_server參數(shù), 而把dispatches參數(shù)設(shè)置為空的話,不能啟動(dòng)共享服務(wù)器,使用上面的模式指定只啟動(dòng)某個(gè)服務(wù)的 共享模式,如果要設(shè)置所有服務(wù)都使用共享模式,則設(shè)置為:alter system set dispatchers=(PROTOCOL=TCP);在客戶端的tnsnames.ora的tns設(shè)置中,在CONNECT_DATA設(shè)置一項(xiàng)中增加(server=shared ) 一項(xiàng), 即可使用共享服務(wù)器連接如果服務(wù)器端沒(méi)有啟動(dòng)共享服務(wù)器模式,而客戶端

12、使用shared方式連接的話,會(huì)出現(xiàn)錯(cuò)誤提示:“ORA-12520: TNS:監(jiān)聽(tīng)程序無(wú)法找到需要的服務(wù)器類型的可用句柄”;和共享服務(wù)器相關(guān)的參數(shù)如下:max_shared_servers最大服務(wù)器進(jìn)程數(shù)SHARED_SERVER_SESSIONS 指定可以同時(shí)運(yùn)行的最大的共享服務(wù)會(huì)話數(shù)dispatchers協(xié)議,調(diào)度程序數(shù),每個(gè)調(diào)度程序的最大連接數(shù)max_dispatchers最大調(diào)度程序數(shù)shared_servers-服務(wù)器進(jìn)程數(shù)CIRCUITS指定網(wǎng)絡(luò)會(huì)話層出入的總的虛擬回路3、判斷數(shù)據(jù)庫(kù)使用的連接模式查看當(dāng)前數(shù)據(jù)庫(kù)服務(wù)器的運(yùn)行情況有一下幾種辦法:從v$session里面查看:SQL s

13、elect distinct server from v$session ;SQLSERVERDEDICATEDNONESQL如果顯示的除了dedicated,還有NONE,則說(shuō)明當(dāng)前啟動(dòng)了共享服務(wù)器,并且server為none的會(huì)話正使用 共享服務(wù)器連接,同時(shí),如果只顯示有dedicated,則不能說(shuō)明服務(wù)器就一定工作在專用服務(wù)器下面,此時(shí)只能說(shuō)明有可能 啟動(dòng)了共享模式,但是無(wú)連接可以使用下面的語(yǔ)句查詢采用共享服務(wù)器的會(huì)話信息:select saddr,program ,server from v$session;SQL /SADDR PROGRAMSERVER296FB24C plsqld

14、ev.exeNONE296FFD1C oracleB851 (q001)DEDICATED29705AA0 oracleB851 (q000)DEDICATED查詢視圖:在網(wǎng)上有的資料上說(shuō)只要查詢下面三個(gè)視圖,有記錄則說(shuō)明啟動(dòng)了共享模式,經(jīng)過(guò)驗(yàn)證,具體情況如下:select * from v$shared_server;-有記錄,且STATUS字段為WAIT(COMMON),則說(shuō)明啟動(dòng)共享;status為T(mén)ERMINATED或者無(wú)記錄,則說(shuō)明沒(méi)有啟動(dòng)共享服務(wù)器select * from v$dispatcher;-有無(wú)記錄都不能說(shuō)明啟動(dòng)共享服務(wù)器,只能說(shuō)明是配置了dispatchers 參數(shù)s

15、elect * from V$CIRCUIT-有記錄說(shuō)明當(dāng)前有使用共享模式的連接,無(wú)記錄則不能判定服務(wù)器模式實(shí)際查詢?nèi)缦?啟動(dòng)共享服務(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īng)器的狀態(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ù)器模式如果啟動(dòng)共享服務(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可以看出此時(shí),mydb服務(wù)啟動(dòng)了共享模式,但是同時(shí)也支持專用模式在實(shí)際的使用中還發(fā)現(xiàn)有趣的現(xiàn)象,如果把shared_servers和max_shared_servers同時(shí)設(shè)置成0, 但是保持dispatcher參數(shù)的值不變,則再查看監(jiān)聽(tīng)時(shí),出現(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此時(shí)的共享進(jìn)程還在,但是狀態(tài)為阻塞4、客戶端建立的連接模式=當(dāng)服務(wù)器采用專用服務(wù)器模式時(shí),客戶端只能使用專用模式連接,也就是在connect_data數(shù)據(jù)中只能 使用 server=dedicated。當(dāng)服務(wù)器采用共享服務(wù)器模式時(shí),客戶端可以選擇建立共享還是專用連接,conne

24、ction,只要在 connect_data 中指定server=dedicated or server=shared大多數(shù)情況下我們更傾向或習(xí)慣專用模式,兩種模式下,對(duì)sga等分配都會(huì)有不同,所以如果轉(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.-如果同時(shí)把SHARED_SERVERS and MAX_SHARED_SERVERS都設(shè)置成0,則共享服務(wù)器將關(guān)閉,并且保留 的共享服務(wù)器的請(qǐng)求將進(jìn)入隊(duì)列等待,一直到這兩個(gè)參數(shù)的值重新被設(shè)置To terminate dispatchers once all shared server clients disconnect, enter this statement:ALTER SYSTEM SET DISPATCHERS =;禁用的實(shí)驗(yàn):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前臺(tái)的查詢恢復(fù)正常,查看視圖: SQL select circuit,saddr,status,queue from v$circuit;CIRCUIT SADDRSTATUSQUEUE 27434010 296F8CE4NORMALNONE2743471C 296F

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論