說一說如何配置Oracle的MTS part2
2024-08-29 13:49:04
供稿:網友
四、 MTS的配置實現
1、 Oracle8i MTS環境常用到的幾個參數
序號
參數
說明
1
mts_dispatchers
用于配置當Instance啟動的時侯啟用的Dispatcher的數量、及Dispatcher所響應的協議,它是一個動態的參數,可以用Alter system進行動態修定,它沒有默認值。
2
mts_max_dispatchers
用于指定同時運行的Dispatcher進程的最大數量,對于大部分的應用,每250個連接啟用一個Dispatcher可以獲得較好的性能。默認值是5或所配置的Dispatcher的數量
3
mts_servers
用于指定當Instance啟動時你想啟用的服務進程的數量,它是一個動態參數,可以用Alter systme動態修定。
4
mts_max_servers
用于指定同時進行的共享的庫的服務進程的數量,假如你的系統經常出現死鎖,應該適當的增加這個值。
5
Mts_service
設為SID
6
mts_listener_address
TNS監聽的地址
2、 Oracle9i MTS環境常用到的幾個參數
序號
參數
說明
1
Dispatchers
等同于8i中的mts_dispatchers參數
2
max_dispatchers
等同于8i中的mts_max_dispatchers參數
3
shared_servers
等同于8i中的mts_server參數
4
max_shared_servers
等同于8i中的mts_max_servers參數
3、 以我一個實際環境(Oracle8.1.7.4)舉個例子,9i類似,我在Init<SID>這個初始化參數文件中加入了如下的MTS的參數,完成了MTS的配置。
#mts set by qiuyb
mts_dispatchers="(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.223.125))(DISPATCHERS=10)"
mts_max_dispatchers=20
mts_servers=10
mts_max_servers=50
mts_service=BILLING
mts_listener_address="(address=(protocol=tcp)(host=192.168.223.125)(port=1521))" large_pool_size=400M
#End of qiuyb's Set
需要說明的是large_pool_size這個初始化參數,在MTS環境中為獲取更好的性能建議設置這個參數,這樣UGA都從large_pool這樣一個固定的區域中進行分配,而不用從Shared Pool中動態進行分配,這樣也可以減少ORA-04031錯誤的發生。
五、 優化MTS配置選項及你可能問的幾個問題
1、 large_pool_size這個參數我該設為多大呢?
當large_pool_size的大小能夠滿足所有的共享服務進程所需的內存就可以了,當然假如內存夠用的話可以適當的加大一點,如下的語句便可以得出自實例啟動來MTS連接所用的內存的最大數量,可以看出來是200多M。
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
------------------------
214457296
2、 如何判定我dispatcher的數量是不是夠用呢?
使用如下的語句,當dispatcher的繁忙比率超過50%的時侯,你就要考慮增加Dispatcher的數量了,用Alter system動態卻可完成。
SELECT name, (busy / (busy + idle))*100 "Dispatcher % busy Rate"
FROM V$DISPATCHER
3、 如何判定共享服務進程是不是夠用呢?
使用如下的語句來確定每次請求的平均等待時間,監測Average Wait time per reques這個值,當這個值持續增長時你該考慮增加shared servers了。
SELECT decode(totalq,0,'No Requests') "Wait Time",
Wait/totalq 'hundredths of seconds' "Average Wait time per request"
FROM V$QUEUE
WHERE type = 'COMMON'
4、 如何在MTS配置的Server請求Dedicate的連接著?
你在Tnsnames.ora中做服務名配置時加入SRVR=DEDICATED這個選項就可以了,示例如下:
billing =
(DESCRipTION =
(
ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = ks3)(PORT = 1521))
)
(
CONNECT_DATA =
(SERVICE_NAME = billing)
(SRVR = DEDICATED)
)
)
六、 結文
在你的Oracle的服務器出現高的內存利用率和出現頻繁換頁時,使用MTS是一個不錯的選擇。總體上說來,MTS較適合OLTP這種類型的應用,對于那些數據倉庫、DDS這些類型的應用它則是不適合的。