您好,登錄后才能下訂單哦!
概念
專有連接:用一個服務(wù)器進程響應(yīng)一個客戶端請求。
共享連接:在共享服務(wù)器模式下,客戶端通過監(jiān)聽連接到dispatcher之后,dispatcher會隨機分配一個端口,此時客戶端斷開和監(jiān)聽的連接,通過分配的端口和dispatcher連接,和監(jiān)聽的連接是短暫的。
適用場景
對于連接數(shù)不多的應(yīng)用,適宜用專有連接,客戶的請求響應(yīng)及時;
通用參數(shù)
remote_listener:可以實現(xiàn)數(shù)據(jù)庫和listener的分離。
單機環(huán)境的 remote_listener 一般為空。
rac 環(huán)境下,listener 是跟隨集群crs啟動的。而且數(shù)據(jù)庫 。 rdbms 的啟動要依賴 asm 實例的資源,所以不存在啟動數(shù)據(jù)庫后,listener 沒啟動,當(dāng)然出現(xiàn)故障除外。
local_listener 是該節(jié)點的 listener 信息
remote_listener 一般是 scan 的信息
local_listener
pmon只會動態(tài)注冊 port 等于1521的監(jiān)聽,否則 pmon 不能動態(tài)注冊 listener,要想讓 pmon 動態(tài)注冊 listener,需要設(shè)置 local_listener 參數(shù)。
listener_networks:配置多個 remote_listener、local_listener 時需要,平時很少用.
例子:alter system set LISTENER_NETWORKS='((NAME=network1)(LOCAL_LISTENER=listener_net1)(REMOTE_LISTENER=scanone.gaopp.com:1521))','((NAME=network2)(LOCAL_LISTENER=listener_net2)(REMOTE_LISTENER=remote_net2))';
共享參數(shù)
SHARED_SERVERS:如果 shared_server 值為0,則表示數(shù)據(jù)庫沒有啟動共享服務(wù)模式。 這個參數(shù)是配置 shared server 必須的,而且只有這個參數(shù)是必須的。它指定了當(dāng)實例啟動的時候 shared server process 啟動的數(shù)量,不要將這個參數(shù)設(shè)置得太大,否者啟動數(shù)據(jù)庫instance的時候就會花更多時間,Oracle啟動過后會根據(jù)負載來動態(tài)調(diào)整shared_servers。
MAX_SHARED_SERVERS:Oracle在同一個時刻最大能夠使用的 shared server process 。不要將這個參數(shù)設(shè)置小于 shared_servers,如果動態(tài)修改 shared_servers 大于 max_shared_servers,oracle會覆蓋max_shared_servers的值,此時你需要修改 max_shared_servers。同時也不能大于 processes 。這個參數(shù)是為了給占用很大資源操作而設(shè)的(批處理),為了預(yù)留一些 process 給 DBA 任務(wù)(rman備份)。
SHARED_SERVER_SESSIONS:指定了總共允許的的 shared server session 的數(shù)量。如果設(shè)置了這個參數(shù),那么就不要將這個值超過 sessions,如果沒有設(shè)置這個值,那么只要還有空閑的 session,就可以被使用。設(shè)置這個值是為專用連接預(yù)留的 User Sessions。
DISPATCHERS: 共享連接的分派器數(shù)量。
MAX_DISPATCHERS: 可同時并發(fā)的共享連接的最大的分派器數(shù)量,此參數(shù)目前可忽略。
內(nèi)存
large_pool_size
相比于專用服務(wù)器模式,共享服務(wù)模式的 UGA 在 SGA 中,而專用服務(wù)器模式的 UGA 在 PGA 當(dāng)中,共享服務(wù)器模式下如果設(shè)置了 large_pool_size 則用戶的 UGA 會在 large_pool 中。MTS 減少的內(nèi)存實際上是專用服務(wù)器模式下每個用戶連接到操作系統(tǒng)進程所需的內(nèi)存,共享服務(wù)器模式由于限制了 Server Process 的數(shù)量,減少了建立 Server Process 所需要的內(nèi)存,同時當(dāng)并發(fā)量大時不需要頻繁的創(chuàng)建和刪除進程,減少了與之對應(yīng)的開銷,提升了并發(fā)量。所以共享服務(wù)器模式適合于高并發(fā),處理量小的業(yè)務(wù)系統(tǒng)。
進程
數(shù)據(jù)庫啟動之后比專用服務(wù)器模式會多出兩種進程,一種是調(diào)度進程(Dnnn),一種是共享服務(wù)器進程(Snnn)。來自客戶端的請求會被 dispatcher 接受,然后 dispatcher 將請求置入 Request 隊列??臻e的 Server Process 會按照 request 隊列開始處理隊列中的請求。處理過后的結(jié)果放入 Response 隊列中。最后再由 DIspatcher 來將最后的結(jié)果返回給客戶端。
Snnn:分派器進程使得客戶端進程可以共享數(shù)量有限的服務(wù)器進程。可以為單個數(shù)據(jù)庫實例創(chuàng)建多個分派器進程。分派器進程的最佳個數(shù)取決于操作系統(tǒng)的限制和每個進程的連接數(shù)。
優(yōu)點:
減少了實例中的進程數(shù)
增加了更多并發(fā)用戶的數(shù)量
實現(xiàn)動態(tài)負載均衡
減少了空閑服務(wù)器進程數(shù)量
減少了實例PGA內(nèi)存
缺點:由于共享服務(wù)器模式存在種種問題,同時中間件也完全可以實現(xiàn)連接池的效果,所以一般情況下不會共享服務(wù)器模式,使用專用服務(wù)器模式即可。
共享服務(wù)器的代碼路徑比專用服務(wù)器長,所以它天生就比專用服務(wù)器慢。
存在人為死鎖的可能,因為它是串行的,只要一個連接阻塞,則該服務(wù)器進程上的所有用戶都被阻塞,并且極可能死鎖。
存在獨占事務(wù)的可能,因為如果一個會話的事務(wù)運行時間過長,它獨占共享資源,其它用戶只能等待,而專用服務(wù)器,每個客戶端是一個會話。
共享服務(wù)器模式限制了某些數(shù)據(jù)庫特性,例如:不能單獨啟動和關(guān)閉實例,不能進行介質(zhì)恢復(fù),不能使用Log Miner,并且SQL_TRACE沒有意義(因為是共享而不是當(dāng)前會話的)。
event
event 10257(后續(xù)會詳細說明)
視圖
V$DISPATCHER:提供DISPATCH進程信息,包括DISPATCH名稱,網(wǎng)絡(luò),地址,狀態(tài),統(tǒng)計信息和索引號等;
有記錄,說明是配置了dispatchers參數(shù)
V$DISPATCHER_CONFIG:提供DISPATCH的配置信息
V$DISPATCHER_RATE:提供DISPATCH的速度(RATE)統(tǒng)計
V$CIRCUIT:提供用戶通過DISPATCH連接到數(shù)據(jù)庫的虛擬回路信息(virtual circuits)
有記錄說明當(dāng)前有使用共享模式的連接,無記錄則不能判定服務(wù)器模式
V$SHARED_SERVER:提供共享服務(wù)器信息
有記錄,且STATUS字段為WAIT(COMMON),則說明啟動共享;
無記錄,或STATUS字段為TERMINATED,則說明沒有啟動共享服務(wù)器
V$SHARED_SERVER_MONITOR:提供共享服務(wù)器的優(yōu)化信息
V$QUEUE:提供共享服務(wù)器隊列信息.
設(shè)置shared_servers這個參數(shù),將其值設(shè)置為大于0即可開啟服務(wù)器共享模式。其他的共享服務(wù)器參數(shù)可以不用設(shè)置,但是最好也設(shè)置一下max_shared_servers參數(shù)
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。