ITPub博客

首页 > 数据库 > Oracle > oracle的shared server模式和dedicated server模式2

oracle的shared server模式和dedicated server模式2

Oracle 作者:地铁上小虫 时间:2015-08-06 09:37:43 0 删除 编辑

1、shared server和dedicated server连接方式比较

shared server 连接方式



dedicated  server 连接方式


2、shared server process

在服务器上进行ps -ef| grep shared从而得到所有的oracle后台进程如下:


[html] view plaincopy
  1. oracle    4476     1  0 19:18 ?        00:00:00 ora_pmon_shared  
  2. oracle    4478     1  0 19:18 ?        00:00:00 ora_psp0_shared  
  3. oracle    4480     1  0 19:18 ?        00:00:00 ora_mman_shared  
  4. oracle    4482     1  0 19:18 ?        00:00:01 ora_dbw0_shared  
  5. oracle    4484     1  0 19:18 ?        00:00:01 ora_lgwr_shared  
  6. oracle    4486     1  0 19:18 ?        00:00:03 ora_ckpt_shared  
  7. oracle    4488     1  0 19:18 ?        00:00:02 ora_smon_shared  
  8. oracle    4490     1  0 19:18 ?        00:00:00 ora_reco_shared  
  9. oracle    4492     1  0 19:18 ?        00:00:02 ora_cjq0_shared  
  10. oracle    4494     1  0 19:18 ?        00:00:04 ora_mmon_shared  
  11. oracle    4496     1  0 19:18 ?        00:00:00 ora_mmnl_shared  
  12. oracle    4498     1  0 19:18 ?        00:00:00 ora_d000_shared  
  13. oracle    4500     1  0 19:18 ?        00:00:00 ora_s000_shared  
  14. oracle    4520     1  0 19:18 ?        00:00:00 ora_qmnc_shared  
  15. oracle    4535     1  0 19:18 ?        00:00:00 ora_q002_shared  
  16. oracle    4537     1  0 19:18 ?        00:00:00 ora_q003_shared  
  17. oracle   15255     1  0 23:36 ?        00:00:00 ora_j000_shared  

在客户端连接oracle数据库时,不会分配新的进程
客户端程序先连接到监听,然后监听程序通过调度器d000将任务放倒request Queue中,然后由空闲的共享进程s000来进行处理,处理完成之后把结果放倒response Queue中,然后调度器进程d000将结果返回给客户端程序 


在服务器端用sqlplus连接的进程


[html] view plaincopy
  1. oracle   16046 15677  0 May19 ?        00:00:01 oracleshared (DESCRIPTION=(LOCAL=YES)(ADDRESS=  
  2.   
  3. (PROTOCOL=beq)))  

当在远程指定用DEDICATED方式连接时,也会分配一个单独的用户进程进行连接,如下


客户端的tnsnames.ora文件中,在connect_data中添加一行,(SERVER = DEDICATED),从而指定用DEDICATED方式进行连接,连接的进程如下


[html] view plaincopy
  1. oracle   16584     1  0 00:08 ?        00:00:00 oracleshared (LOCAL=NO)  

2、dedicated server process


常见进程如下:


[html] view plaincopy
  1. oracle   17596     1  0 00:37 ?        00:00:00 ora_pmon_dedicated  
  2. oracle   17598     1  0 00:37 ?        00:00:00 ora_psp0_dedicated  
  3. oracle   17600     1  0 00:37 ?        00:00:00 ora_mman_dedicated  
  4. oracle   17602     1  0 00:37 ?        00:00:00 ora_dbw0_dedicated  
  5. oracle   17604     1  0 00:37 ?        00:00:00 ora_lgwr_dedicated  
  6. oracle   17606     1  0 00:37 ?        00:00:00 ora_ckpt_dedicated  
  7. oracle   17608     1  0 00:37 ?        00:00:00 ora_smon_dedicated  
  8. oracle   17610     1  0 00:37 ?        00:00:00 ora_reco_dedicated  
  9. oracle   17612     1  0 00:37 ?        00:00:00 ora_cjq0_dedicated  
  10. oracle   17614     1  0 00:37 ?        00:00:00 ora_mmon_dedicated  
  11. oracle   17616     1  0 00:37 ?        00:00:00 ora_mmnl_dedicated  
  12. oracle   17618     1  0 00:37 ?        00:00:00 ora_d000_dedicated  
  13. oracle   17620     1  0 00:37 ?        00:00:00 ora_s000_dedicated  
  14. oracle   17639     1  0 00:38 ?        00:00:00 ora_qmnc_dedicated  
  15. oracle   17661     1  0 00:38 ?        00:00:00 ora_q001_dedicated  
  16. oracle   17663     1  0 00:38 ?        00:00:00 ora_q002_dedicated  
  17. oracle   18086     1  0 00:50 ?        00:00:00 ora_j000_dedicated  
客户端连接进去之后,服务器会给你分配一个新的进程,在不指定或者指定为dedicated连接方式之后,进程如下:



[html] view plaincopy
  1. oracle   18194     1  1 00:52 ?        00:00:00 oraclededicated (LOCAL=NO)  

服务器登陆连接进程如下:



[html] view plaincopy
  1. oracle   18215 18214  1 00:53 ?        00:00:00 oraclededicated (DESCRIPTION=(LOCAL=YES)(ADDRESS=PROTOCOL=beq)))  

当指定为shared方式连接dedicated server时,会出现如下错误:



[html] view plaincopy
  1. C:\Users\Administrator>sqlplus system/orcl@dedicated  
  2.   
  3. SQL*Plus: Release 11.2.0.1.0 Production on 星期一 5月 20 15:56:47 2013  
  4.   
  5. Copyright (c) 1982, 2010, Oracle.  All rights reserved.  
  6.   
  7. ERROR:  
  8. ORA-12520: TNS: 监听程序无法为请求的服务器类型找到可用的处理程序  
  9.   
  10.   
  11. 请输入用户名:  
说明,如果服务连接方式为dedicated server,那么就不能使用shared server的连接方式来进行连接,但是如果是开启了shared server方式,那么还是可以使用dedicated server方式来进行连接的



小结论如下:

1. 如果是dedicated server,则客户端只能创建dedicated server connection
2. 如果是shared server,则客户端能创建dedicated server connection和shared server connection,只要在service name中指定server=dedicated or server=shared.

[html] view plaincopy
  1. (1)A dedicated server process, which services only one userprocess  
  2. (2)A shared server process, which can service multiple userprocesses  



3、如何在dedicated server模式中,不出现D000和S000进程


[html] view plaincopy
  1. SQL> show parameter dispatcher  
  2.   
  3. NAME                     TYPE  
  4. ------------------------------------ ----------------------  
  5. VALUE  
  6. ------------------------------  
  7. dispatchers              string  
  8. (PROTOCOL=TCP)  
  9. max_dispatchers              integer  
  10.   
  11. SQL> alter system set dispatchers = '' scope=both;  
  12.   
  13. System altered.  
  14.   
  15. SQL> show parameter shared_server  
  16.   
  17. NAME                     TYPE  
  18. ------------------------------------ ----------------------  
  19. VALUE  
  20. ------------------------------  
  21. max_shared_servers           integer  
  22.   
  23. shared_server_sessions           integer  
  24.   
  25. shared_servers               integer  
  26. 1  
  27. SQL> alter system set shared_servers = 0 scope=both;  
  28.   
  29. System altered  

然后再查看数据库的进程的时候,就不会出现D000进程和S000进程了



为何创建的是专有模式的数据库,数据库却自动配置了dispatchers参数,暂时无解!!!!

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29653765/viewspace-1763335/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2014-05-12

  • 博文量
    49
  • 访问量
    155500