number of dispatchers=ceil(max number of concurrent sessions)/connections per dispatcher

1.查看当前连接到oracle服务器的客户数量

select sid, serial#, username, logon_time, server, program from v$session
where USERNAME is not null


2.查询当前会话的数量和自实例启动以来的最大并发会话数量

 select sessions_max, sessions_current, sessions_highwater from v$license;

alter system set dispatchers="(pro=tcp)(dis=5)(pro=ipc)(dis=2)"


3.配置连接集储(connect pooling)

connect pooling 特性通过自动断开空闲连接和使用空闲连接为一个输入连接请求提供服务,给oracle
shared server 赋予了处理较大数量连接的能力。


alter system set dispatchers="(protocol=tcp)(dispatchers=2)(pool=on)(tick=1)
(connections=500)(sessions=1000)"
;


4.使用max_dispatchers参数

alter system set max_dispatchers=10;


show parameters max_dispatchers;


5.shared_servers
该参数指定在oracle实例启动时启动和保持的最小shared server数量。值为0或
无值则表示shared server将不被使用。如果调度已经得到配置则shared_server
的值默认为1。该值设置的是oracle需要的总数量。


SQL> show parameters shared_servers;

NAME                                 TYPE        VALUE
------------------------------------ ----------- -------------------
max_shared_servers                   integer
shared_servers                       integer     1
SQL> alter system set shared_servers=5;

系统已更改。

SQL> show parameters shared_servers;

NAME                                 TYPE        VALUE
------------------------------------ ----------- -------------------
max_shared_servers                   integer
shared_servers                       integer     5

 

6.max_shared_servers

该参数指定能够并发运行oracle shared server的最大数量。这个参数应该设置为oracle最大负荷时
需要的数量。如果不指定该值则oracle默认是无限制的.


SQL> show parameters shared_servers;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ----------------------
max_shared_servers                   integer
shared_servers                       integer     5
SQL> alter system set max_shared_servers=10;

系统已更改。

SQL> show parameters shared_servers;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ----------------------
max_shared_servers                   integer     10
shared_servers                       integer     5
SQL>


7.shared_server_sessions
该参数指定为oracle实例预测的oracle shared server会话的总数量。如果会话达到这个
数量时客户端连接则会报错


SQL> show parameters shared_server_sessions;

NAME                                 TYPE        VALUE
------------------------------------ ----------- --------------------
shared_server_sessions               integer
SQL> alter system set shared_server_sessions=5;

系统已更改。

SQL> show parameters shared_server_sessions;

NAME                                 TYPE        VALUE
------------------------------------ ----------- --------------------
shared_server_sessions               integer     5


8.查看调度信息
SQL> select name, status, messages, idle,busy, bytes, breaks from v$dispatcher;

NAME STATUS             MESSAGES       IDLE       BUSY      BYTES     BREAKS
---- ---------------- ---------- ---------- ---------- ---------- ----------
D000 WAIT                  15090     306056        222    2207524          0
D001 WAIT                      6      11346          2        631          0