Oracle连接方式(dispatchers 设置)
oracle 响应客户端请求有两种方式:
1 专有连接:用一个服务器进程响应一个客户端请求 2 共享连接:用一个分派器(dispatcher)响应一个客户端请求,服务器端有多个服务器进程,共享处理所有分派器的请求;两种连接方式的优缺点
1 对于连接数不多的应用,适宜用专有连接,客户的请求响应及时; 2 对于连接数较大的应用,适宜用共享连接,充分利用系统资源后台作业和RMAN操作必须使用专有连接;
配置共享服务器连接
既可以在参数文件内进行静态配置,可以动态修改;共享服务器配置的初始化参数
SHARED_SERVERS: 初始化启动的服务器进程数和保留的最小服务器进程数;如果使用共享连接,这个参数是必配的; MAX_SHARED_SERVERS: 最大并发的共享服务器进程数 SHARED_SERVER_SESSIONS: 可并发处理的最大共享用户会话数,超过此数值的用户会话将使用专有连接 DISPATCHERS: 共享连接的分派器数量 MAX_DISPATCHERS: 可同时并发的共享连接的最大的分派器数量,此参数目前可忽略; CIRCUITS: 可用的虚拟回路数(Specifies the total number of virtual circuits that are available for inbound and outbound network sessions)配置共享服务器连接
1 静态参数文件中SHARED_SERVERS大于0既可。其他参数不是必要的。 2 使用ALTER SYSTEM语句设置SHARED_SERVERS为一大于0值,如: ALTER SYSTEM SET SHARED_SERVERS = 5;设置SHARED_SERVERS数值
一般而言,可以按一个服务器响应10个连接进行计算; 实际的共享服务器进程可以动态增加,SHARED_SERVERS的数值应该设置为实际所需要的最小值;设置MAX_SHARED_SERVERS以限制共享服务器进程数;
可以动态修改MAX_SHARED_SERVERS以允许更多的服务器进程数,或者动态修改SHARED_SERVERS为一个大于MAX_SHARED_SERVERS的数值以允许更多的服务器进程数;设置SHARED_SERVERS数值
Number of dispatchers = CEIL ( max. concurrent sessions / connections for each dispatcher )例如:
每进程能支持970个连接 TCP/IP连接最多有4000个会话 安全(TCP/IP with SSL)最多有2,500个会话则用于TCP/IP协议的DISPATCHERS可设为5,CELL(4000 / 970), 用于安全TCP/IP协议的dispatchers 可设为3,CELL(2500 / 970:
DISPATCHERS='(PROT=tcp)(DISP=5)', '(PROT-tcps)(DISP=3)'
强制特定的IP使用DISPATCH
DISPATCHERS="(ADDRESS=(PROTOCOL=TCP)(HOST=144.25.16.201))(DISPATCHERS=2)"这将产生两个DISPATCH监听特定的IP
强制DISPATCH使用特定端口
DISPATCHERS="(ADDRESS=(PROTOCOL=TCP)(PORT=5000))" DISPATCHERS="(ADDRESS=(PROTOCOL=TCP)(PORT=5001))"修改DISPATCH数量
DISPATCH不可以自动地动态变化。须使用ALTER SYSTEM命令进行修改。 MAX_DISPATCHERS可以设定可使用的最大DISPATCH数;察看DISPATCH的负载性能,可查询如下视图
V$QUEUE V$DISPATCHER V$DISPATCHER_RATE动态修改DISPATCH数量,使用ALTER SYSTEM 命令,如初始配置为:
DISPATCHERS='(PROT=tcp)(DISP=2)', '(PROT=tcps)(DISP=2)' 现在要将TCP协议的DISPATCH设为3,TCPS设为1 命令如下: ALTER SYSTEM SET DISPATCHERS = '(INDEX=0)(DISP=3)', '(INDEX=1)(DISP=1)'; 或: ALTER SYSTEM SET DISPATCHERS = '(PROT=tcp)(DISP=3)', '(PROT-tcps)(DISP=1)'; 如果当前TCP协议的DISPATCH少于3,数据库将会创建新的DISPATCH。相反,如下TCPS当前有2个DISPATCH,则会在用户退出连接后减少一个dispatch查询DISPATCH的配置
V$DISPATCHER_CONFIG当修改一个DISPATCH的DESCRIPTION, ADDRESS, PROTOCOL, CONNECTIONS,TICKS, MULTIPLEX, and POOL属性后,修改后的设置不能立即生效,需要强制性地杀掉现在的DISPATCH进程