時(shí)間:2015-06-28 00:00:00 來(lái)源:IT貓撲網(wǎng) 作者:網(wǎng)管聯(lián)盟 我要評(píng)論(0)
專(zhuān)用服務(wù)器:一個(gè)客戶端連接對(duì)應(yīng)一個(gè)服務(wù)器進(jìn)程
共享服務(wù)器:多個(gè)客戶端連接對(duì)應(yīng)一個(gè)服務(wù)器進(jìn)程,服務(wù)器端存在一個(gè)進(jìn)程調(diào)度器來(lái)管理。
其實(shí)這個(gè)我之前也沒(méi)搞的清楚,所以像是測(cè)試機(jī)那樣的我就直接用了 專(zhuān)用服務(wù)器 模式,因?yàn)檎f(shuō)明上是寫(xiě)預(yù)期連接數(shù)較少的情況下,
而正式機(jī)上,都建了共享服務(wù)器模式。其實(shí)現(xiàn)在看來(lái),真是沒(méi)必要。一個(gè)是我們是使用中間件去連oracle的,中間件本身有連接池機(jī)制,
另外就是oracle的這個(gè)共享服務(wù)器方式也做的不夠好了,有諸多缺點(diǎn)。
從網(wǎng)上查來(lái),共享服務(wù)器具有以下一些缺點(diǎn):
1)共享服務(wù)器的代碼路徑比專(zhuān)用服務(wù)器長(zhǎng),所以它天生就比專(zhuān)用服務(wù)器慢。
2)存在人為死鎖的可能,因?yàn)樗谴械?,只要一個(gè)連接阻塞,則該服務(wù)器進(jìn)程上的所有用戶都被阻塞,并且極可能死鎖。
3)存在獨(dú)占事務(wù)的可能,因?yàn)槿绻粋€(gè)會(huì)話的事務(wù)運(yùn)行時(shí)間過(guò)長(zhǎng),它獨(dú)占共享資源,其它用戶只能等待,而專(zhuān)用服務(wù)器,每個(gè)客戶端是一個(gè)會(huì)話。
4)共享服務(wù)器模式限制了某些數(shù)據(jù)庫(kù)特性,例如:不能單獨(dú)啟動(dòng)和關(guān)閉實(shí)例,不能進(jìn)行介質(zhì)恢復(fù),不能使用Log Miner,并且SQL_TRACE沒(méi)有意義(因?yàn)槭枪蚕矶皇钱?dāng)前會(huì)話的)。
MTS減少的內(nèi)存實(shí)際上是專(zhuān)用服務(wù)器模式下每個(gè)用戶連接到操作系統(tǒng)進(jìn)程所需的內(nèi)存,但它卻使用SGA的Large_Pool來(lái)分配UGA,拆東墻補(bǔ)西墻,所減少的內(nèi)存是很少的。
如果用戶會(huì)話的連接和斷開(kāi)很頻繁,數(shù)據(jù)庫(kù)進(jìn)程的創(chuàng)建和刪除的開(kāi)銷(xiāo)會(huì)非常大,這種情況最好采用共享服務(wù)器模式(否則,應(yīng)該使用連接池技術(shù))。
如果客戶端一次連接終身使用(會(huì)話生命周期內(nèi)),使用共享服務(wù)器模式的意義不大。因?yàn)榇蟛糠謺r(shí)間,一個(gè)會(huì)話就連接到一個(gè)服務(wù)器進(jìn)程,無(wú)法共享服務(wù)器進(jìn)程。
因此,我們后面建的實(shí)例,就以oracle默認(rèn)的專(zhuān)用服務(wù)器方式就行了,沒(méi)必要使用共享服務(wù)器模式。
判斷oracle是共享模式還是專(zhuān)用模式有以下方法:
1) show parameter shared_server; (注:8i應(yīng)為:show parameter mts_servers;)
如果數(shù)值> 0 ,就是enable了共享服務(wù)器.
NAME?? TYPE? VALUE
------------------------------------ ----------- ------------------------------
max_shared_servers??? integer???? 20
shared_server_sessions?? integer???? 330
shared_servers? integer???? 1
2).在配置為共享服務(wù)器的情況,Client可以用共享服務(wù)器或者專(zhuān)用服務(wù)器來(lái)聯(lián)接數(shù)據(jù)庫(kù),這個(gè)參數(shù)的控制是在tnsnames.ora里設(shè)定的。如:
DXPT =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.10.10)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = dxpt)
)
)
這樣就是以DEDICATED 專(zhuān)用模式連接 dxpt 實(shí)例
寫(xiě)上 (SERVER = SHARED) 則是使用共享服務(wù)器模式,但是這時(shí)shared_server_process需要打開(kāi),要不然會(huì)出錯(cuò)連不上oracle
要是這段放空沒(méi)寫(xiě),那么系統(tǒng)會(huì)根據(jù)服務(wù)器模式自動(dòng)調(diào)節(jié),
不過(guò)根據(jù)實(shí)測(cè)結(jié)果,就算服務(wù)器是定義成共享服務(wù)器模式,shared_server_process沒(méi)打開(kāi)的情況下,在v$session中查到的連接
依然是SERVER = DEDICATED
所以基本上我們這段話我們都是可以放空著不寫(xiě)的,但是有時(shí)候要連上我們的共享服務(wù)器模式的數(shù)據(jù)庫(kù),
放空有可能系統(tǒng)認(rèn)為要用共享服務(wù)器方式去連,那時(shí)就要聲明 SERVER = DEDICATED采用專(zhuān)用服務(wù)器方式去連接。
另外,Background process ,以及通過(guò)本地連接進(jìn)來(lái)的,只能是DEDICATED .比如說(shuō)sqlplus user/pass形式
如果數(shù)據(jù)庫(kù)沒(méi)有配置共享服務(wù)器,那么客戶端只能以DEDICATED方式連接數(shù)據(jù)庫(kù).
=================
oracle的 專(zhuān)用模式和共享模式(2008-09-24 17:43:10)轉(zhuǎn)載標(biāo)簽:it 分類(lèi):oracle基礎(chǔ)
來(lái)源一:
專(zhuān)用模式和共享模式的本質(zhì)區(qū)別就是:用戶進(jìn)程對(duì)ORACLE服務(wù)器所在的計(jì)算機(jī)的內(nèi)存區(qū)里"服務(wù)器進(jìn)程"是專(zhuān)用還是共享。
具體表現(xiàn)在:
1、在共享模式下,多個(gè)用戶進(jìn)程共享一個(gè)服務(wù)器進(jìn)程;在專(zhuān)用模式下,ORACLE為每一個(gè)用戶進(jìn)程準(zhǔn)備一個(gè)服務(wù)器進(jìn)程。
2、在實(shí)際情況中,應(yīng)用系統(tǒng)與數(shù)據(jù)庫(kù)的連接請(qǐng)求總是很多,導(dǎo)致用戶進(jìn)程也很多,如果你的內(nèi)存和CPU是有限的,同時(shí),用戶進(jìn)程對(duì)數(shù)據(jù)庫(kù)的操作占用空間不多,那你就把數(shù)據(jù)庫(kù)連接模式設(shè)置為共享模式,這樣,ORACLE內(nèi)存區(qū)的服務(wù)器進(jìn)程只是有限的幾個(gè),這幾個(gè)服務(wù)器進(jìn)程會(huì)通過(guò)一個(gè)調(diào)度程序來(lái)應(yīng)付若干用戶進(jìn)程的請(qǐng)求。
3、如果你的硬件資源比較好,就設(shè)置成專(zhuān)用模式,每一個(gè)用戶進(jìn)程都有一個(gè)服務(wù)器進(jìn)程對(duì)應(yīng),這樣,你的用戶進(jìn)程對(duì)數(shù)據(jù)的處理會(huì)非常快!
簡(jiǎn)單的說(shuō),連接客戶數(shù)少,需要長(zhǎng)時(shí)間占用數(shù)據(jù)庫(kù)的,建議用專(zhuān)有模式,如果連接客戶數(shù)眾多,使用共享模式。
來(lái)源二:
共享服務(wù)器體系:客戶進(jìn)程最終與一個(gè)調(diào)度程序連接,PMON進(jìn)程注冊(cè)了調(diào)度程序的位置和負(fù)荷,使監(jiān)聽(tīng)器能夠提交到負(fù)荷最小的調(diào)度程序。一個(gè)調(diào)度程序能并發(fā)地支持多重的客戶連接。
專(zhuān)用服務(wù)器體系:每個(gè)客戶進(jìn)程與專(zhuān)用服務(wù)器進(jìn)程連接。服務(wù)器進(jìn)程沒(méi)被任何另外的客戶共享。
另:專(zhuān)用服務(wù)器體系結(jié)構(gòu)不支持HTTP和IIOP客戶,僅支持TTC客戶。
來(lái)源三:
專(zhuān)用是指一個(gè)用戶進(jìn)程對(duì)應(yīng)一個(gè)服務(wù)器進(jìn)程,也就是說(shuō),每個(gè)服務(wù)器進(jìn)程被特定用戶進(jìn)程所獨(dú)占。如果有50個(gè)用戶進(jìn)程,則會(huì)對(duì)應(yīng)50個(gè)服務(wù)器進(jìn)程。
共享是多個(gè)用戶進(jìn)程可以共享一個(gè)服務(wù)器進(jìn)程,中間是通過(guò)一個(gè)調(diào)度進(jìn)程實(shí)現(xiàn)的,由于共享,所以服務(wù)器消耗較小。具體的配置,需要配置mts參數(shù)。
來(lái)源四:
建議不要選共享的!
就是配置MTS而已
專(zhuān)用的安裝好后也可以配置的
再說(shuō)了,mts不能亂用的
來(lái)源五:
1、是否為配置為共享服務(wù)器,最主要的參數(shù)是
8i mts_servers
9i shared_server
show parameter shared_server mts_servers
如果數(shù)值 > 0 ,就是enable了共享服務(wù)器.
2、在配置為共享服務(wù)器的情況,Client可以選擇用共享服務(wù)器或者專(zhuān)用服務(wù)器來(lái)連接到數(shù)據(jù)庫(kù),這個(gè)參數(shù)的控制是在tnsnames.ora里設(shè)定的
aaaa=
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = aaaa)(PORT = 1521))
)
(CONNECT_DATA =
(SID = aa)
(SERVER = DEDICATED)
)
)
紅色部分指定了用DEDICATED方式連接DB。
另外,Background process ,以及通過(guò)本地連接進(jìn)來(lái)的,只能是DEDICATED,比如說(shuō)sqlplus user/pass 形式,如果DB沒(méi)有配置共享服務(wù)器,那么Client只能以DEDICATED方式連接DB。
#p#副標(biāo)題#e#
3、判斷一個(gè)已經(jīng)連接的session的連接方式有兩種方法
A
select server from v$session
where ...
如果server = 'DEDICATED'則是DEDICATED方式
server='SHARED'則是shared方式,并且正有shared_server_process為其服務(wù)
server='NONE'的話,則是shared方式,并且當(dāng)前沒(méi)有shared_server_process為其服務(wù)。
B. 僅用于Unix 底下,似乎windown不行
連接v$session, v$process 看process中的program
1 select p.program,s.server from v$session s , v$process p
2* where s.paddr = p.addr
如果 program 為 。。(S0NN) 的,則是shared方式,并且正有shared_server_process為其服務(wù)。
如果 program 為 。。(D0NN) 的,則是shared方式,并且當(dāng)前沒(méi)有shared_server_process為其服務(wù)。
如果 program 為 其它的,則是'DEDICATED'方式。
來(lái)源六:(ORACLE用戶文檔)
In Dedicated Server Mode, there is a dedicated server process for each user process.
Select this option when the number of total clients is expected to be small, or when
database clients will make persistent, long-running requests to the database.
In Shared Server Mode, several client connections share a database-allocated pool of
resources. Use this mode when a large number of users need to connect to the
<關(guān)鍵詞標(biāo)簽:oracle
相關(guān)閱讀
熱門(mén)文章
Oracle中使用alter table來(lái)增加,刪除,修改列的語(yǔ)法
oracle中使用SQL語(yǔ)句修改字段類(lèi)型-oracle修改SQL語(yǔ)句案例
誤刪Oracle數(shù)據(jù)庫(kù)實(shí)例的控制文件
為UNIX服務(wù)器設(shè)置Oracle全文檢索
人氣排行 oracle中使用SQL語(yǔ)句修改字段類(lèi)型-oracle修改SQL語(yǔ)句案例 Oracle中使用alter table來(lái)增加,刪除,修改列的語(yǔ)法 ORACLE SQL 判斷字符串是否為數(shù)字的語(yǔ)句 ORACLE和SQL語(yǔ)法區(qū)別歸納(1) oracle grant 授權(quán)語(yǔ)句 ORACLE修改IP地址后如何能夠使用 如何加速Oracle大批量數(shù)據(jù)處理 Oracle刪除表的幾種方法