啟用SHARED SERVERS和關閉 轉載
啟用SHARED SERVERS和關閉
[@more@]只需要把SHARED_SERVERS設定為大於1的值,系統即轉為SHARED SERVER。關閉SHARED SERVERS只需要把該引數設定為0。SQL> alter system set shared_servers=2; #更改已成功
系統已更改。
SQL> select name,status from v$shared_server; #結果顯示有S000和S001兩個SHARED SERVERS PROCESS正執行
NAME STATUS
---- ----------------
S000 WAIT(COMMON)
S001 WAIT(COMMON)
SQL> alter system set dispatchers="(protocol=tcp)(dispatcher=2)";
系統已更改。
SQL> select name,status,accept as accept from v$dispatcher;
NAME STATUS ACC
---- ---------------- ---
D000 WAIT YES #STATUS為WAIT表示空閒,正等待任務,ACC為YES表示可以接受新建連線
D001 WAIT YES
SQL> alter system shutdown immediate 'D000';
系統已更改。
SQL> select name,status,accept as accept from v$dispatcher;
NAME STATUS ACC
---- ---------------- ---
D000 REFUSE NO #狀態顯示拒絕任何新建連線
D001 WAIT YES
SQL> select name,status,accept as accept from v$dispatcher;
NAME STATUS ACC
---- ---------------- ---
D001 WAIT YES #過一會再試D000已經關閉
SQL>
SQL> alter system set shared_Servers=0; #關閉SHARED SERVER
系統已更改。
SQL> select name,status,accept as accept from v$dispatcher;
NAME STATUS ACC
---- ---------------- ---
D001 WAIT NO #所有DISPATCHER均拒絕任何新建連線
SQL> select name,status from v$shared_server; #沒有立即生效,ORACLE手冊上說是因為系統會等所有有SHARED SERVER連線斷開再停止SHARED SERVER PROCESS。
NAME STATUS
---- ----------------
S000 WAIT(COMMON)
S001 WAIT(COMMON)
SQL> select name,status from v$shared_server;
NAME STATUS
---- ----------------
S000 QUIT #過一會再試,變成退出的狀態
S001 QUIT
SQL> select name,status from v$shared_server;
NAME STATUS
---- ----------------
S000 TERMINATED #過一會再試變成終止的狀態
S001 TERMINATED
SQL> select name,status from v$shared_server;
未選定行 #已經沒有SHARED SERVER PROCESS了
SQL>
在共享伺服器中請求一個專用連線
如果在共享伺服器中需要請求一個專用連線,如果正使用TNSNAME命名方法,則只需要新增以下引數即可。SERVER=DEDICATEDORCL =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.1)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
修改DISPATCHER
啟用SHARED SERVERS後DISPATCHER預設為dispatchers="(PROTOCOL=tcp)"例:這是一個典型例子
Dispatchers="(PROT=TCP)(DISP=2)"
例:強制使用Dispatcher的地址
Dispatchers="(Address=(Protocol=tcp)(host=144.25.16.201))(dispatchers=2)"
例:強制使用Dispatcher的埠
Dispatchers="(Address=(Protocol=tcp)(Port=5000))"
Dispatchers="(Address=(Protocol=tcp)(Port=5001))"
配置連線池特性
該特性透過預建立一個連線池,客戶需要連線時從連線池中取,當連線空閒時自動斷開,並放回到連線池,以備下個連線請求使用。該特性賦予了Shared Server處理較大數量連線的能力。如果有大量客戶並且大量是空閒連線,則適用該特性,例如WEB。配置示例如下:
SQL> alter system set dispatchers="(protocol=tcp)(dispatcher=2)(pool=on)(tick=1)
(connections=500)(sessions=1000)";
系統已更改。
SQL>
意思如下:
(DISPATCHER=1) -- 配置一個Dispatcher
(PROTOCOL=TCP) -- 接受協議是TCP
(POOL=ON) -- 為它開啟連線池特性
(TICK=1) -- 當經過10分鐘無通訊後,連線會被視為空閒,如果TICK=2,經過20分鐘後連線會被視為空閒
(CONNECTIONS=500) -- 該DISPATCHER最大可接受500個連線
(SESSIONS=1000) -- 該DISPATCHER最大可接受1000個會話
關閉指定DISPATCHER
首先檢視DISPATCHER的名稱SELECT NAME, NETWORK FROM V$DISPATCHER;
然後根據名稱關閉
ALTER SYSTEM SHUTDOWN IMMEDIATE 'D002';
使用共享伺服器的動態效能檢視
要知道動態效能檢視的完整解釋,請下載完整ORACLE文件庫,然後定位到以下位置開啟文件庫首頁->開啟BOOK標籤頁->定位到書名為 "Reference" ->開啟HTML版 ->定位到"Part III Dynamic Performance Views“中的Dynamic performance (V$) Views->然後找到需要的檢視
使用V$DISPATCHER
SQL> select name,status,messages,idle,busy,bytes,breaks from v$dispatcher;
NAME STATUS MESSAGES IDLE BUSY BYTES BREAKS
---- ---------------- ---------- ---------- ---------- ---------- ----------
D000 WAIT 8685 217560 705 1501540 0
SQL>
以上查訪結果顯示:
- 現在有一個Dispatcher,名稱為:D000
- STATUS為WAIT,表示它正處於空閒的狀態
- MESSAGES表示它已經處理完8685條資訊
- IDLE表示自啟動以來空閒了271560,
- BUSY表示繁忙了705
- BYTES表示該Dispatcher已處理的所有資訊的總位元組數
- BREAKS表示它已經處理過的中斷(例如從控制檯發到
+ )
使用v$dispatcher_config
該檢視含有DISPATCHER的配置資訊。包括:監聽協議,監聽地址,接受的最大連線數和會話數及服務名稱資訊。SQL> select conf_indx,dispatchers,connections,sessions "SESS", service from v$dispatcher_config;
CONF_INDX DISPATCHERS CONNECTIONS SESS SERVICE
--------------------------------------------------------------------------------
0 2 1002 1002 orcl,orcl,orcl_XPT
SQL>
結果顯示:
1. 系統配置了兩個DISPATCHER
2. 可接受的連線數和會話數都是1002
3. 可接受以下服務的請求orcl,orcl,orcl_XPT
使用V$DISPATCHER_RATE
顯示DISPATCHER的統計資料,例如已處理的平均位元組數,曾經出站與入站的最大連線數及每個客戶連線的平均處理位元組。其中以CUR開頭為當前統計資料,以AVG或MAX為平均或最大統計資料SQL> select name,cur_event_rate,cur_msg_rate,cur_svr_byte_rate from v$dispatcher
_rate;
NAME CUR_EVENT_RATE CUR_MSG_RATE CUR_SVR_BYTE_RATE
---- -------------- ------------ -----------------
D000 77 0 0
D001 104 0 0
SQL>
結果顯示:
1. 有兩個除錯程式
2. D000當前大約每分鐘處理77個事件
3. D000當前資訊量和位元組數都為0
使用V$SHARED_SERVER
下例可看到伺服器已經處理了多少個請求和資訊,並可看到資訊的總大小,並可看到自啟動以來總繁忙的時間NAME | PADDR | STATUS | MESSAGES | BYTES | BREAKS | CIRCUIT | IDLE | BUSY | REQUESTS |
---|---|---|---|---|---|---|---|---|---|
S000 | 1EE4CBEC | WAIT(COMMON) | 146 | 20872 | 0 | 00 | 287354 | 966 | 37 |
shared server效能調優
調節共享伺服器選項應該考慮到的地方- 確保有足夠的Dispatcher,以便客戶沒有正在等候Dispatcher響應它們的請求
- 確保有足夠的Shared Server Process,以便沒有請求正在等候得到處理
- 配置Large Pool SGA,以便有足夠大的地方儲存UGA。
配置Large Pool
- 在init.ora檔案中引數LARGE_POOL_SIZE可以被配置成最小300K和至少2G的最大值,最大值跟作業系統相關
- 例:LARGE_POOL_SIZE = 50M
- 也可以使用Slter system修改
- 例:ALTER SYSTEM SET LARGE_POOL_SIZE=100M
- 當使用預設值時,共享伺服器中的每個會話使Large pool增加250KB,並分配給該會話。
- 當Large Pool未被配置時,UGA會放在Shared Pool中,這會影響Shared Pool效能,所以應該配置一個Large Pool。
- 使用V$SGASTAT可檢查LARGE POOL正使用的空間。FREE MEMORY顯示可供使用的空間,SESSION HEAP顯示已使用的空間
POOL NAME BYTES
------------ -------------------------- ----------
large pool PX msg pool 206208
large pool free memory 7851120
large pool session heap 331280
SQL>
結果顯示共有空閒LARGE POOL記憶體7851120位元組,會話頭使用了331280位元組
確定Large Pool大小
一般來說,每個連線需要1MB到3MB之間的記憶體查詢V$SESSTAT檢視可得到所有連線中最大曾經分配的最大記憶體。把乘以預計的最大連線數即可得出Large Pool的大小.
SQL> select sum(value) "max mts memory allocated" from v$sesstat ss, v$statname
st where name = 'session uga memory max' and ss.statistic# = st.statistic#;
max mts memory allocated
------------------------
6167676
SQL>
結果顯示單個連線曾最大分配記憶體為6167676位元組
確定是否有足夠的Dispatcher
查詢V$dispatcher可監視各Dispatcher程式,從而得知各Dispatcher有多繁忙。如果Dispatcher繁忙時間百分比超過50%,則需要考慮啟動更多的排程程式。SQL> select name, (busy/(busy + idle)) "dispatcher busy rate" from v$dispatcher
;
NAME dispatcher busy rate
---- --------------------
D000 .000121704
D001 .000042597
D002 .004935402
SQL>
以上例顯示D000繁忙的比率大約只是0.001%,顯然遠未達到50%,所以不需要增加DISPATCHER
測量使用者等候Dispatcher程式多長時間
透過組合查詢V$queue和V$dispatcher可得出結果SQL> Select decode(sum(totalq), 0, 'no responses', sum(wait)/sum(totalq)) "avera
ge wait time" from V$QUEUE Q, V$DISPATCHER D WHERE Q.TYPE='DISPATCHER' AND Q.PAD
DR=D.PADDR;
average wait time
----------------------------------------
0
SQL>
結果顯示使用者不需要等待,所以不需要增加DISPATCHER。
確定是否有足夠的共享伺服器
下例顯示請求佇列中的平均等時間比0.3秒略多一點SQL> Select decode(totalq,0,'No Requests') "Wait Time", Wait/totalq || ' hundred
ths of seconds' "Average Wait time per request" from V$QUEUE where type='COMMON'
;
Wait Time Average Wait time per request
----------- --------------------------------------------------------------
.324324324324324324324324324324324324324 hundredths of seconds
SQL>
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7557086/viewspace-980600/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 3 啟動和關閉
- Android應用關閉,重啟Android
- Win10中啟用和關閉管理員賬戶Win10
- linux關閉防火牆命令 linux防火牆關閉和開啟命令Linux防火牆
- win10如何啟用或關閉windows功能_win10啟用或關閉windows功能的方法Win10Windows
- MySQL啟動和關閉命令總結MySql
- mysql 開啟和關閉日誌記錄MySql
- 4.2.1.11 學習如何啟動和關閉CDB
- Android 書本開啟和關閉動畫Android動畫
- repo和Git的關係 [轉載]Git
- win10如何關閉啟用防火牆通知_win10關閉啟動防火牆通知的設定方法Win10防火牆
- db2資料庫的啟動和關閉DB2資料庫
- AppKiller for mac(一鍵關閉應用) v3.0永久啟用版APPMac
- nginx 開啟、關閉、重啟常用操作Nginx
- centos下nginx啟動、重啟、關閉CentOSNginx
- win10系統快速啟動怎麼關閉 關閉Windows快速啟動Win10Windows
- (轉載)Win10自動更新怎麼永久關閉?有效的Win10強制更新關閉方法Win10
- 01啟動(關閉)套接字
- 9. 啟動、關閉tomcatTomcat
- 啟動與關閉服務
- Oracle資料庫歸檔模式的開啟和關閉Oracle資料庫模式
- 7_Ubuntu16.04開啟和關閉桌面顯示(201910122)Ubuntu
- LevelDB C++教程: 如何開啟和關閉資料庫C++資料庫
- win10快速啟動怎麼關閉_win10如何關閉快速啟動Win10
- YT Saver(影片下載和轉換器)v7.4.0 Mac最新啟用版Mac
- YT Saver(影片下載和轉換器)v7.4.0 Mac最新啟用版Mac
- windows10怎麼關閉快速啟動_windows10關閉快速啟動的方法Windows
- 重啟和關閉 Linux 系統的 6 個終端命令Linux
- centos7怎麼檢視、開啟和關閉防火牆CentOS防火牆
- PHP 實現平滑關閉/重啟PHP
- ubuntu 開啟/關閉ubuntu防火牆Ubuntu防火牆
- win10系統如何開啟/關閉"應用程式啟動跟蹤"功能Win10
- Nginx Configuring HTTPS serversNginxHTTPServer
- nginx關閉/重啟/啟動的操作方法Nginx
- win10 自動重啟關閉方法_win10自動重啟怎麼關閉Win10
- 如何關閉win10快速啟動_win10系統快速啟動怎麼關閉Win10
- win10 microsoftoffice上載中心怎麼關閉_win10 microsoftoffice上載中心如何關閉Win10ROS
- Android 跳轉過後關閉本介面Android
- Mac操作指南:Mac Monterey實況文字功能如何開啟和關閉?Mac