Dedicated(專用模式)用戶進程和服務器進程是分開的。每個用戶進程都有自己的服務器進程。用戶進程和服務器進程可在不同的機器上
Dedicated(專用模式)
用戶進程和服務器進程是分開的。
每個用戶進程都有自己的服務器進程。
用戶進程和服務器進程可在不同的機器上運行,以利用分布式處理的優勢。
用戶進程和服務器進程的比率是1 比1。
即使用戶進程不發出數據庫請求,專用服務器也存在,只是保持空閑狀態。
此處所用的程序接口取決于用戶進程和專用服務器進程是否在同一臺機器上。如果在同一
機器上,進程間的程序接口將使用主機操作系統的交互進程通信(IPC) 機制。
下圖展示了Oracle專用服務模式下的客戶進程連接狀態:
默認情況下數據庫創建的連接模式為專享模式,但即使修改成共享連接模式以下幾種情況也必定是以專享模式連接的:
當批量提交的job時(對于服務進程,一個job幾乎沒有空閑時間)。
使用RMAN進行備份,恢復或修復數據庫時。
除了Dedicated和Shared,Oracle還提供了常駐連接池模式(Database Resident Connection Pooling)。這種模式主要用于web應用的請求
通過一個簡單的例子來對比三種連接模式下對內存的需求:
考慮一個應用每一個會話請求的內存大小為400K,而每一個服務進程需要使用4M的內存,當pool size為100并且共享模式最大連接數為100。
專享模式下
Memory used = 5000 X (400 KB + 4 MB) = 22 GB
共享模式下
Memory used = 5000 X 400 KB + 100 X 4 MB = 2.5 GB
超出2.5G,2G來自于SGA區
常駐連接池
Memory used = 100 X (400 KB + 4 MB) + (5000 X 35KB)= 615 MB
這里每一個代理進程的消耗內存接近35k
配置共享模式
共享模式下涉及到的參數有:
SHARED_SERVERS 指定共享服務進程啟動時的最小數值。
MAX_SHARED_SERVERS 指定可同時運行的共享服務進程的最大值。
SHARED_SERVERS_SESSIONS 指定可同時連接共享進程的用戶會話總數。
DISPATCHERS 為共享模式配置調度進程
MAX_DISPATCHERS 指定允許同時運行的調度進程的最大數,該參數現在可能被忽略了。
CIRCUITS 指定網絡會話流入流出可用的總的虛擬環路。
因為要開啟共享模式,SHARED_SERVERS設置的值必須大于0,而其他相關配置可以不需要,當SHARED_SERVERS值大于0時,調度進程也會啟動,即使沒有配置dispatchers參數
在DBCA創建數據庫的過程中,Oracle會自動創建一個用于XML DB(XDB)的調度進程。該配置僅允許會話以共享模式連接數據庫,但要進行一些常規的操作(如提交SQL語句),用戶必須額外的配置調度或替換XDB調度配置
alter system set shared_servers=5;
關于MAX_SHARED_SERVERS沒有默認值,,如果該值為空,PMON進程會根據請求開啟足夠多的共享服務進程。但也要受到以下參數的限制:
process 的限制
空閑process槽的最小值(至少1/8的總進程槽數,或為2當process設置的值小于24時)
系統資源
SHARED_SERVERS_SESSIONS用于限制并發共享服務的用戶會話最大數,該參數是動態變化的,其中還保留了用于專享服務的數據庫會話。這確保管理任務如備份,還原和恢復數據庫時不會占用共享服務的會話。
CIRCUITS 都沒有默認值,該值取決于調度參數的值和系統資源。因此盡量對其作出限制。
alter system set circuits=
關于DISPATCHERS的設置:
限定地址協議和最小啟用調度進程數
dispatchers='(address=(pro=tcp) (host=10.x.x.x) (dispatchers=2))'
dispatchers='(description=(address=(pro=tcp) (host=10.x.x.x) (dispatchers=2)))'
限制dispatchers的最大網絡連接和會話數
dispatchers='(pro=tcp) (dispatchers=2) (conn=100) (sess=100)'
為dispatchers指定別名和服務名,用于PMON進程注冊調度信息。
dispatchers='(pro=tcp) (dispatchers=2) (list=orcl) (serv=orcl)'
允許多路復用和連接池
dispatchers='(pro=tcp) (dispatchers=2) (multi=on) (poo=on)'
dispatchers可以多在配置文件中寫多行,但是必須放在一起。或者以逗號分隔放在同一行配置中。
dispatchers='(pro=tcp) (dispatchers=2) (multi=on) (poo=on)','(pro=tcps) (dispatchers=2)'
or
dispatchers='(pro=tcp) (dispatchers=2) (multi=on) (poo=on)'
dispatchers='(pro=tcps) (dispatchers=2)'
如何決定調度進程的多少:
dispatchers=ceil(max_concurrent_sessions / connections for each dispatcher)
connections for each dispatcher由系統決定,一個系統允許單個進程的最大連接數即為connections for each dispatcher的取值。
配置TNSNAME.ORA文件,將客戶端連接的SERVER方式修改成SHARED模式。
配置好上述參數后,就可以通過共享方式連接數據庫了。連接時需要指明實例名
通過lsnrctl services命令觀察實例的注冊信息
sqlplus user/password@sid
可以通過下列視圖來驗證和觀察性能:
select name, paddr, network, status, accept, messages, listener, conf_indx from v$dispatcher;
select maximum_connections,maximum_sessions,servers_started from v$shared_server_monitor;
select circuit,dispatcher,server,waiter,saddr,status,queue,messsages,bytes from v$circuit;
v$dispatcher_config
v$shared_server
v$queue
v$shared_pool_reserved
v$dispatcher_rate
v$sga
v$sgastat
修改dispatchers參數可以通過以下方式:
alter system set dispatchers=‘(index=0) (pro=tcp) (dispatchers=2) (multi=on) (poo=on)','(index=1) (pro=tcps) (dispatchers=2)';
這里的index后的值表示調度進程的序列,可以在v$dispatcher_config中獲得
關閉特定的dispatchers進程
alter system shutdown immediate ‘name of dispatchers’
這個dispatchers的名稱來自于v$dispatcher表的name字段。
本文永久更新鏈接地址:
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com