说一说如何配置Oracle的MTS part2

** 四、 ** ** 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

 1<sid> 这个初始化参数文件中加入了如下的  MTS  的参数,完成了  MTS  的配置。 
 2
 3#mts set by qiuyb 
 4
 5mts_dispatchers="(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.223.125))(DISPATCHERS=10)" 
 6
 7mts_max_dispatchers=20 
 8
 9mts_servers=10 
10
11mts_max_servers=50 
12
13mts_service=BILLING 
14
15mts_listener_address="(address=(protocol=tcp)(host=192.168.223.125)(port=1521))" large_pool_size=400M 
16
17#End of qiuyb's Set 
18
19需要说明的是  large_pool_size  这个初始化参数,在  MTS  环境中为获取更好的性能建议设置这个参数,这样  UGA  都从  large_pool  这样一个固定的区域中进行分配,而不用从  Shared Pool  中动态进行分配,这样也可以减少  ORA-04031  错误的发生。 
20
21** 五、  ** ** 优化  MTS  ** ** 配置选项及你可能问的几个问题  **
22
231、  large_pool_size  这个参数我该设为多大呢? 
24
25当  large_pool_size  的大小能够满足所有的共享服务进程所需的内存就可以了,当然如果内存够用的话可以适当的加大一点,如下的语句便可以得出自实例启动来  MTS  连接所用的内存的最大数量,可以看出来是  200  多  M  。 
26
27SELECT sum(value) "Max MTS Memory Allocated" 
28
29FROM v$sesstat  ss, v$statname st 
30
31WHERE name = 'session uga memory max' 
32
33AND ss.statistic#=st.statistic# 
34
35Max MTS Memory Allocated 
36
37\------------------------ 
38
39214457296 
40
412、  如何判断我  dispatcher  的数量是不是够用呢? 
42
43使用如下的语句,当  dispatcher  的繁忙比率超过  50%  的时侯,你就要考虑增加  Dispatcher  的数量了,用  Alter system  动态却可完成。 
44
45SELECT name, (busy / (busy + idle))*100 "Dispatcher % busy Rate" 
46
47FROM V$DISPATCHER 
48
493、  如何判断共享服务进程是不是够用呢? 
50
51使用如下的语句来确定每次请求的平均等待时间,监测  Average Wait time per reques  这个值,当这个值持续增长时你该考虑增加  shared servers  了。 
52
53SELECT decode(totalq,0,'No Requests') "Wait Time", 
54
55Wait/totalq ||'hundredths of seconds' "Average Wait time per request" 
56
57FROM V$QUEUE 
58
59WHERE type = 'COMMON' 
60
614、  如何在  MTS  配置的  Server  请求  Dedicate  的连接着? 
62
63你在  Tnsnames.ora  中做服务名配置时加入  SRVR=DEDICATED  这个选项就可以了,示例如下: 
64
65billing = 
66
67(DESCRIPTION = 
68
69( 
70
71ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = ks3)(PORT = 1521)) 
72
73) 
74
75( 
76
77CONNECT_DATA = 
78
79(SERVICE_NAME = billing) 
80
81(SRVR = DEDICATED) 
82
83) 
84
85) 
86
87** 六、  ** ** 结文  **
88
89在你的  Oracle  的服务器出现高的内存利用率和出现频繁换页时,使用  MTS  是一个不错的选择。总体上说来,  MTS  较适合  OLTP  这种类型的应用,对于那些数据仓库、  DDS  这些类型的应用它则是不适合的。</sid>
Published At
Categories with 数据库类
Tagged with
comments powered by Disqus