Oracle的共享服务器进程
Oracle在安装实例时会需要选择是使用单独服务器进程还是共享服务器进程。这个属性就是为了减轻大用户量对于系统的压力而设的,如果有N个用户要进行访问,就必须要设置为共享服务器进程。要掌握调度程序进程、共享服务进程、调度程度这些概念的区别。
一、
共享服务器初始化参数
DISPATCHERS:配置调度程序进程
MAX_DISPATCHERS:指定同时运行的调度程序进程最大数目
用于设置调度程序的起始数目,初始化文件可以指定多个DISPATCHERS参数,但必须是彼此相邻的。Oracle内部为每个DISPATCHERS参数分配一个INDEX索引值,以方便之后使用ALTER SYSTEM语句时明确引用某个DISPATCHERS参数。
对一般系统来说,每1000个连接分配1个调度程序,运转好的话再多一些。太多的调度程序会降低系统性能,所以要实现估计好连接数。
举例:
DISPATCHERS = "(PROTOCOL = TCP)" --基本参数
DISPATCHERS = "(ADDRESS = (PROTOCOL = TCP)(HOST = 10.2.1.81)) (DISPATCHERS = 2)" --强调IP
DISPATCHERS = "(ADDRESS = (PROTOCOL = TCP)(PORT = 5000))" --强调端口
SHARED_SERVERS:指定启动实例时可创建的共享服务器进程数
MAX_SHARED_SERVERS:指定可以同时运行的共享服务器进程最大数目
指定了启动时希望创建的共享服务进程的数目。Oracle会在SHARED_SERVERS和MAX_SHARED_SERVERS之间的数目中,根据请求队列的长度动态调整共享服务器的数目。一般来说,10个连接分配一个共享服务器。
MAX_SHARED_SERVERS是一个静态初始参数,但SHARED_SERVERS是动态参数,可以使用ALTER SYSTEM语句修改。
CIRCUTTS:进出网络会话时可以利用的虚拟回路总数
SHARED_SERVER_SESSIONS:用户会话允许的共享服务器总数,可以为专门服务器保留用户会话
LARGE_POOL_SIZE:指定大型存储池分配字节大小
SESSIONS:系统可创建的最大会话数目
二、修改调度程序和服务器进程
1、调度进程
可通过V$QUEUE、V$DISPATCHER、V$DISPATCHER_RATE来查看
通过ALTER SYSTEM修改DISPATCHERS参数值
ALTER SYSTEM SET DISPATCHERS =
'(PROTOCOL = TCP)(DISPATCHERS = 5)(INDEX = 0)',
'(PROTOCOL = TCPS)(DISPATCHERS = 2)(INDEX = 1)';
注1:DISPATCHERS:是参数;DISPATCHERS=5 才是调度进程个数;
注2:INDEX用于识别DISPATCHERS参数,从0到n依次排列,即V$DISPATCHER中的CONF_INDX值
2、关闭调度进程
首先要查询到DISPATCHERS的NAME:
SELECT NAME,NETWORK FROM V$DISPATCHER;
然后关闭调度进程:
ALTER SYSTEM SHUTDOWN IMMEDIATE 'D000';
更改共享服务器进程最少数目:
ALTER SYSTEM SET SHARED_SERVERS = 2;
3、监视共享服务器
V$DISPATCHER:提供有关调度程序进程的信息;
V$DISPATCHER_RATE:提供调度程序进程的速率统计表;
V$QUEUE:包含有关共享服务器的消息队列的信息;
V$SHARED_SERVER:包含有关共享服务器进程的信息;
V$CIRCUIT:包含有关虚拟回路的信息;
V$SHARED_SERVER_MONITOR:包含协调共享服务器的信息;
V$SGA:包含各个系统全局区(SGA)组的容量信息;
V$SGASTAT:关于DGA的详细统计信息,用于协调共享服务器;
V$SHARED_POOL_RESERVED:共享存储池的信息