時間:2015/6/28來源:IT貓撲網(wǎng)作者:網(wǎng)管聯(lián)盟我要評論(0)
專用服務(wù)器:一個客戶端連接對應(yīng)一個服務(wù)器進程
共享服務(wù)器:多個客戶端連接對應(yīng)一個服務(wù)器進程,服務(wù)器端存在一個進程調(diào)度器來管理。
其實這個我之前也沒搞的清楚,所以像是測試機那樣的我就直接用了 專用服務(wù)器 模式,因為說明上是寫預(yù)期連接數(shù)較少的情況下,
而正式機上,都建了共享服務(wù)器模式。其實現(xiàn)在看來,真是沒必要。一個是我們是使用中間件去連oracle的,中間件本身有連接池機制,
另外就是oracle的這個共享服務(wù)器方式也做的不夠好了,有諸多缺點。
從網(wǎng)上查來,共享服務(wù)器具有以下一些缺點:
1)共享服務(wù)器的代碼路徑比專用服務(wù)器長,所以它天生就比專用服務(wù)器慢。
2)存在人為死鎖的可能,因為它是串行的,只要一個連接阻塞,則該服務(wù)器進程上的所有用戶都被阻塞,并且極可能死鎖。
3)存在獨占事務(wù)的可能,因為如果一個會話的事務(wù)運行時間過長,它獨占共享資源,其它用戶只能等待,而專用服務(wù)器,每個客戶端是一個會話。
4)共享服務(wù)器模式限制了某些數(shù)據(jù)庫特性,例如:不能單獨啟動和關(guān)閉實例,不能進行介質(zhì)恢復(fù),不能使用Log Miner,并且SQL_TRACE沒有意義(因為是共享而不是當前會話的)。
MTS減少的內(nèi)存實際上是專用服務(wù)器模式下每個用戶連接到操作系統(tǒng)進程所需的內(nèi)存,但它卻使用SGA的Large_Pool來分配UGA,拆東墻補西墻,所減少的內(nèi)存是很少的。
如果用戶會話的連接和斷開很頻繁,數(shù)據(jù)庫進程的創(chuàng)建和刪除的開銷會非常大,這種情況最好采用共享服務(wù)器模式(否則,應(yīng)該使用連接池技術(shù))。
如果客戶端一次連接終身使用(會話生命周期內(nèi)),使用共享服務(wù)器模式的意義不大。因為大部分時間,一個會話就連接到一個服務(wù)器進程,無法共享服務(wù)器進程。
因此,我們后面建的實例,就以oracle默認的專用服務(wù)器方式就行了,沒必要使用共享服務(wù)器模式。
判斷oracle是共享模式還是專用模式有以下方法:
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ù)器或者專用服務(wù)器來聯(lián)接數(shù)據(jù)庫,這個參數(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 專用模式連接 dxpt 實例
寫上 (SERVER = SHARED) 則是使用共享服務(wù)器模式,但是這時shared_server_process需要打開,要不然會出錯連不上oracle
要是這段放空沒寫,那么系統(tǒng)會根據(jù)服務(wù)器模式自動調(diào)節(jié),
不過根據(jù)實測結(jié)果,就算服務(wù)器是定義成共享服務(wù)器模式,shared_server_process沒打開的情況下,在v$session中查到的連接
依然是SERVER = DEDICATED
所以基本上我們這段話我們都是可以放空著不寫的,但是有時候要連上我們的共享服務(wù)器模式的數(shù)據(jù)庫,
放空有可能系統(tǒng)認為要用共享服務(wù)器方式去連,那時就要聲明 SERVER = DEDICATED采用專用服務(wù)器方式去連接。
另外,Background process ,以及通過本地連接進來的,只能是DEDICATED .比如說sqlplus user/pass形式
如果數(shù)據(jù)庫沒有配置共享服務(wù)器,那么客戶端只能以DEDICATED方式連接數(shù)據(jù)庫.
=================
oracle的 專用模式和共享模式(2008-09-24 17:43:10)轉(zhuǎn)載標簽:it 分類:oracle基礎(chǔ)
來源一:
專用模式和共享模式的本質(zhì)區(qū)別就是:用戶進程對ORACLE服務(wù)器所在的計算機的內(nèi)存區(qū)里"服務(wù)器進程"是專用還是共享。
具體表現(xiàn)在:
1、在共享模式下,多個用戶進程共享一個服務(wù)器進程;在專用模式下,ORACLE為每一個用戶進程準備一個服務(wù)器進程。
2、在實際情況中,應(yīng)用系統(tǒng)與數(shù)據(jù)庫的連接請求總是很多,導(dǎo)致用戶進程也很多,如果你的內(nèi)存和CPU是有限的,同時,用戶進程對數(shù)據(jù)庫的操作占用空間不多,那你就把數(shù)據(jù)庫連接模式設(shè)置為共享模式,這樣,ORACLE內(nèi)存區(qū)的服務(wù)器進程只是有限的幾個,這幾個服務(wù)器進程會通過一個調(diào)度程序來應(yīng)付若干用戶進程的請求。
3、如果你的硬件資源比較好,就設(shè)置成專用模式,每一個用戶進程都有一個服務(wù)器進程對應(yīng),這樣,你的用戶進程對數(shù)據(jù)的處理會非常快!
簡單的說,連接客戶數(shù)少,需要長時間占用數(shù)據(jù)庫的,建議用專有模式,如果連接客戶數(shù)眾多,使用共享模式。
來源二:
共享服務(wù)器體系:客戶進程最終與一個調(diào)度程序連接,PMON進程注冊了調(diào)度程序的位置和負荷,使監(jiān)聽器能夠提交到負荷最小的調(diào)度程序。一個調(diào)度程序能并發(fā)地支持多重的客戶連接。
專用服務(wù)器體系:每個客戶進程與專用服務(wù)器進程連接。服務(wù)器進程沒被任何另外的客戶共享。
另:專用服務(wù)器體系結(jié)構(gòu)不支持HTTP和IIOP客戶,僅支持TTC客戶。
來源三:
專用是指一個用戶進程對應(yīng)一個服務(wù)器進程,也就是說,每個服務(wù)器進程被特定用戶進程所獨占。如果有50個用戶進程,則會對應(yīng)50個服務(wù)器進程。
共享是多個用戶進程可以共享一個服務(wù)器進程,中間是通過一個調(diào)度進程實現(xiàn)的,由于共享,所以服務(wù)器消耗較小。具體的配置,需要配置mts參數(shù)。
來源四:
建議不要選共享的!
就是配置MTS而已
專用的安裝好后也可以配置的
再說了,mts不能亂用的
來源五:
1、是否為配置為共享服務(wù)器,最主要的參數(shù)是
8i mts_servers
9i shared_server
show parameter shared_server mts_servers
如果數(shù)值 > 0 ,就是enable了共享服務(wù)器.
2、在配置為共享服務(wù)器的情況,Client可以選擇用共享服務(wù)器或者專用服務(wù)器來連接到數(shù)據(jù)庫,這個參數(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 ,以及通過本地連接進來的,只能是DEDICATED,比如說sqlplus user/pass 形式,如果DB沒有配置共享服務(wù)器,那么Client只能以DEDICATED方式連接DB。
#p#副標題#e#
3、判斷一個已經(jīng)連接的session的連接方式有兩種方法
A
select server from v$session
where ...
如果server = 'DEDICATED'則是DEDICATED方式
server='SHARED'則是shared方式,并且正有shared_server_process為其服務(wù)
server='NONE'的話,則是shared方式,并且當前沒有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方式,并且當前沒有shared_server_process為其服務(wù)。
如果 program 為 其它的,則是'DEDICATED'方式。
來源六:(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)鍵詞標簽:oracle
相關(guān)閱讀
熱門文章 Oracle中使用alter table來增加,刪除,修改列oracle中使用SQL語句修改字段類型-oracle修使用低權(quán)限Oracle數(shù)據(jù)庫賬戶得到管理員權(quán)限Oracle對user的訪問控制
人氣排行 ORACLE SQL 判斷字符串是否為數(shù)字的語句Oracle中使用alter table來增加,刪除,修改列的語法ORACLE和SQL語法區(qū)別歸納(1)oracle grant 授權(quán)語句如何加速Oracle大批量數(shù)據(jù)處理Oracle刪除表的幾種方法ORACLE修改IP地址后如何能夠使用Oracle 10g創(chuàng)建表空間和用戶并指定權(quán)限