oracle 共享服务进程(shared server)

时间:2013年07月21日 | 分类:Oracle基础篇 | 评论:0 条 | 浏览:1,143 次

1.独占服务进程:
每一个session单独分配一个server process,直到用户断开连接,才释放该进程所占用的资源。

2.共享服务进程:[ oracle的网络服务正常,监听正常 ]
多个用户连接,通过调度进程共享服务进程

3.配置共享服务进程需要的配置参数:

  1. SYS> show parameter shared;  
  2. NAME                        TYPE       VALUE  
  3. ------------------------- ----------- -------------  
  4. # 指定启动实例时可创建的共享服务器进程数[必设置参数]  
  5. shared_servers            integer        2   
  6. # 指定可以同时运行的共享服务器进程最大数目  
  7. max_shared_servers        integer                
  8. shared_memory_address     integer        0  
  9. shared_pool_reserved_size big integer    9646899  
  10. shared_pool_size          big integer    0  
  11. # 用户会话允许的共享服务进程总数,可以为专门服务进程保留用户会话  
  12. shared_server_sessions    integer       
  13. hi_shared_memory_address  integer        0  
  14. SYS> show parameter dispatch;  
  15. NAME                     TYPE    VALUE  
  16. -------------------- ----------- -------------  
  17. dispatchers              string  (PROTOCOL=TCP) (SERVICE=orclXDB) # 配置调度程序进程 [必设置参数]  
  18. max_dispatchers          integer               # 指定同时运行的调度程序进程最大数目  

4.监视性能的视图
V$DISPATCHER 提供有关调度程序进程的信息。包括名称、网址,状态,各种使用统计表和索引号码。
V$QUEUE 包含有关共享服务器消息队列的信息。
V$SHARED_SERVER 包含有关共享服务器进程的信息。
V$CIRCUIT 包含有关虚拟回路的信息。也可以说查看调度信息

5.共享服务器响应用户请求的步骤如下:
1).客户传送一个请求到调度程序。
2).调度程序将请求放在SGA中的请求队列中。
3).其中的一个共享服务器进程响应并处理这个请求。
4).共享服务器进程把处理完的请求回复放到SGA中的响应队列中。
5).调度器从响应队列中取出已经完成的请求。
6).调度器把完成的请求回复给客户

6.具体配置

(1).配置共享服务进程

  1. SYS> alter system set shared_servers=2; # 设置共享服务进程为2个  
  2. System altered.  

(2).配置调度进程

  1. SYS> alter system set dispatchers='(PROTOCOL=TCP)(dispatchers=2)';      #  设置调度进程2个  
  2. System altered.  

(3).调度进程用

  1. ps -ef | grep ora  
  2. 或者  
  3. SYS> select * from v$dispatcher;  

(4).如果有客户端登录,可以查看是哪个调度进程调度的

  1. SYS> select * from v$circuit;  
  2. 注:配置了共享服务后,调度信息可在服务端,lsnrctl > services 里面看到相关调度进程信息[lsnrctl:此命令为监听程序控制命令]  
  3. # 未指定是否使用共享还是专用模式,优先使用共享服务进程模式  
  4. # 关闭某个调度进程:  
  5. ALTER SYSTEM SHUTDOWN IMMEDIATE  '调度进程的名字';    ==> 可以在V$DISPATCHER 视图中查到  

×