数据库

本类阅读TOP10

·SQL语句导入导出大全
·SQL Server日期计算
·SQL语句导入导出大全
·SQL to Excel 的应用
·Oracle中password file的作用及说明
·MS SQLServer OLEDB分布式事务无法启动的一般解决方案
·sqlserver2000数据库置疑的解决方法
·一个比较实用的大数据量分页存储过程
·如何在正运行 SQL Server 7.0 的服务器之间传输登录和密码
·SQL中两台服务器间使用连接服务器

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
说一说如何配置Oracle的MTS part2

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

四、  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连接所用的内存的最大数量,可以看出来是200M

 

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这些类型的应用它则是不适合的。

 




相关文章

相关软件