一,相关参数说明
Shared_servers 指定实例启动时可以创建的共享服务的最小数量 最大不能超过max_shared_servers 是唯一要求设置的参数
指定了当instance 启动的时候 shared server process 启动的数量,不要将这个参数设置得太大,否者启动数据库instance 的时候
就会花更多时间,Oracle启动过后会根据负载来动态调整shared_servers。如果为0,表示数据库没有启动共享服务模式。 这个参数是
配置shared server 必须的,而且只有这个参数是必须的。
--修改参数: alter system set shared_servers=1;
max_shared_servers 指定共享服务能同时运行的最大数量
ORACLE在同一个时刻最大能够使用的 shared server process.不要将这个参数设置小于 shared_servers,如果动态修改
shared_servers大于max_shared_servers,ORACLE会覆盖max_shared_servers的值,此时你需要修改max_shared_servers.
同时也不能大于processes。这个参数是为了给占用很大资源操作而设的(批处理),为了预留一些process 给DBA任务(rman备份)
SHARED_SERVER_SESSIONS 指定了总共允许的的 shared server session 的数量。如果设置了这个参数,那么就不要将这个值超过sessions,如果没有设置这个值,那么只要还有空闲的session,就可以被使用。设置这个值是为专有连接预留 user sessions.
DISPATCHERS 配置调度进程
配置 dispatcher process .如果不设置这个参数,只要设置了shared_servers,oracle 也会自动设置一个基于tcp协议的dispatcher。
还需要查看操作系统支持一个dispatcher能处理多少个connections
MAX_DISPATCHERS 调度进程并发的最大数
设置同一时刻能够同时运行的dispatchers的数量,必须大于等于 dispatchers ,小于processes。这个参数也会被dispatchers覆盖。
CIRCUITS 指定网络会话入站和出站可用的虚拟线路总数
SQL> select * from V$CIRCUIT;
二,使shared server可用
只要shared_servers非0,其他参数不需要设置
这个参数不在参数文件中设置或者在参数文件中设置了但是值为0,share server都是不可用的
另外,即使是shared_servers没有在参数文件中设置,但是dispatchers在参数文件中设置了,共享服务就可用,并且shared_servers默认为1
特殊说明:如果使用DBCA建库,DBCA会为oracle XML DB配置一个dispatchers,因为像HTTP,FTP要求一个共享服务,结果查看shared_servers的值为1.虽然shared server可用,但是限制在连接XDB的会话可以使用shared server。如果想要使常规的数据库会话能使用shared server,你必须额外的配置dispatchers或者覆盖已经存在的dispatchers配置
如:查看参数文件
dispatchers = "(PROTOCOL=TCP) (SERVICE=asm00XDB)"
三,shared_servers的值的设置
服务数和会话数稳定在1:10之间
四,配置调度进程
至少有一个调度进程,如果设置shared_servers为1,不设置dispatchers,则默认有一个dispatchers
语法:
DISPATCHERS = 'dispatch_clause' |
|
|
dispatch_clause::= (PROTOCOL = protocol) | (ADDRESS = address) | (DESCRIPTION = description ) [options_clause] |
|
options_clause::= (DISPATCHERS = integer | SESSIONS = integer | CONNECTIONS = integer | TICKS = seconds | POOL = {1 | ON | YES | TRUE | BOTH | ({IN | OUT} = ticks) | 0 | OFF | NO | FALSE | ticks} | MULTIPLEX = {1 | ON | YES | TRUE | 0 | OFF | NO | FALSE | BOTH | IN | OUT} | LISTENER = tnsname | SERVICE = service | INDEX = integer) |
例如:DISPATCHERS = '(PROTOCOL=TCP)(DISPATCHERS=3)'
五,配置调度进程的数量
公式:
Number of dispatchers = CEIL ( max. concurrent sessions / connections for each dispatcher )
最大的并发会话数/每个调度的连接数 取大于所得数的最小整数
例如:
假设一个系统每个进程支持970个会话
通过TCP/IP的最大并发会话数是4000
通过SSL的最大并发会话数是2500
则TCP/IP需要的dispatchers为4000/970=4.1多为5个
SSL需要2500/970=2.57为3个
DISPATCHERS='(PROT=tcp)(DISP=5)', '(PROT-tcps)(DISP=3)'
典型的配置
DISPATCHERS="(PROTOCOL=TCP)(DISPATCHERS=2)"
指定IP地址
DISPATCHERS="(ADDRESS=(PROTOCOL=TCP)(HOST=144.25.16.201))(DISPATCHERS=2)"
指定端口
DISPATCHERS="(ADDRESS=(PROTOCOL=TCP)(PORT=5000))"
DISPATCHERS="(ADDRESS=(PROTOCOL=TCP)(PORT=5001))"
五,查看dispatchers
六,修改dispatchers的数量
如:参数文件中指定
DISPATCHERS='(PROT=tcp)(DISP=2)', '(PROT=tcps)(DISP=2)'
修改:两种方式
ALTER SYSTEM SET DISPATCHERS = '(INDEX=0)(DISP=3)', '(INDEX=1)(DISP=1)';
或
ALTER SYSTEM SET DISPATCHERS = '(PROT=tcp)(DISP=3)', '(PROT-tcps)(DISP=1)';
如果要增加一个dispatchers
ALTER SYSTEM SET DISPATCHERS = '(INDEX=2)(PROT=tcp)(POOL=on)'; 如果省略index则会覆盖INDEX为0的进程
七,关闭一个调度进程
(1)SELECT NAME, NETWORK FROM V$DISPATCHER;
(2)ALTER SYSTEM SHUTDOWN IMMEDIATE 'D002'; -----D002为NAME
如果不加IMMEDIATE关键字,dispatcher会等待所有链接断开后才关闭
八,使shared server不可用
设置shared_servers为0即可
ALTER SYSTEM SET DISPATCHERS = '';
九,相关视图
View |
Description |
V$DISPATCHER |
Provides information on the dispatcher processes, including name, network address, status, various usage statistics, and index number. |
V$DISPATCHER_CONFIG |
Provides configuration information about the dispatchers. |
V$DISPATCHER_RATE |
Provides rate statistics for the dispatcher processes. |
V$QUEUE |
Contains information on the shared server message queues. |
V$SHARED_SERVER |
Contains information on the shared servers. |
V$CIRCUIT |
Contains information about virtual circuits, which are user connections to the database through dispatchers and servers. |
V$SHARED_SERVER_MONITOR |
Contains information for tuning shared server. |
V$SGA |
Contains size information about various system global area (SGA) groups. May be useful when tuning shared server. |
V$SGASTAT |
Contains detailed statistical information about the SGA, useful for tuning. |
V$SHARED_POOL_RESERVED |
Lists statistics to help tune the reserved pool and space within the shared pool. |