oracle的shared server模式和dedicated server模式

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

shared server 连接方式



dedicated  server 连接方式


2、shared server process

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

oracle    4476     1  0 19:18 ?        00:00:00 ora_pmon_shared
oracle    4478     1  0 19:18 ?        00:00:00 ora_psp0_shared
oracle    4480     1  0 19:18 ?        00:00:00 ora_mman_shared
oracle    4482     1  0 19:18 ?        00:00:01 ora_dbw0_shared
oracle    4484     1  0 19:18 ?        00:00:01 ora_lgwr_shared
oracle    4486     1  0 19:18 ?        00:00:03 ora_ckpt_shared
oracle    4488     1  0 19:18 ?        00:00:02 ora_smon_shared
oracle    4490     1  0 19:18 ?        00:00:00 ora_reco_shared
oracle    4492     1  0 19:18 ?        00:00:02 ora_cjq0_shared
oracle    4494     1  0 19:18 ?        00:00:04 ora_mmon_shared
oracle    4496     1  0 19:18 ?        00:00:00 ora_mmnl_shared
oracle    4498     1  0 19:18 ?        00:00:00 ora_d000_shared
oracle    4500     1  0 19:18 ?        00:00:00 ora_s000_shared
oracle    4520     1  0 19:18 ?        00:00:00 ora_qmnc_shared
oracle    4535     1  0 19:18 ?        00:00:00 ora_q002_shared
oracle    4537     1  0 19:18 ?        00:00:00 ora_q003_shared
oracle   15255     1  0 23:36 ?        00:00:00 ora_j000_shared

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

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

oracle   16046 15677  0 May19 ?        00:00:01 oracleshared (DESCRIPTION=(LOCAL=YES)(ADDRESS=

(PROTOCOL=beq)))

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

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

oracle   16584     1  0 00:08 ?        00:00:00 oracleshared (LOCAL=NO)

2、dedicated server process

常见进程如下:

oracle   17596     1  0 00:37 ?        00:00:00 ora_pmon_dedicated
oracle   17598     1  0 00:37 ?        00:00:00 ora_psp0_dedicated
oracle   17600     1  0 00:37 ?        00:00:00 ora_mman_dedicated
oracle   17602     1  0 00:37 ?        00:00:00 ora_dbw0_dedicated
oracle   17604     1  0 00:37 ?        00:00:00 ora_lgwr_dedicated
oracle   17606     1  0 00:37 ?        00:00:00 ora_ckpt_dedicated
oracle   17608     1  0 00:37 ?        00:00:00 ora_smon_dedicated
oracle   17610     1  0 00:37 ?        00:00:00 ora_reco_dedicated
oracle   17612     1  0 00:37 ?        00:00:00 ora_cjq0_dedicated
oracle   17614     1  0 00:37 ?        00:00:00 ora_mmon_dedicated
oracle   17616     1  0 00:37 ?        00:00:00 ora_mmnl_dedicated
oracle   17618     1  0 00:37 ?        00:00:00 ora_d000_dedicated
oracle   17620     1  0 00:37 ?        00:00:00 ora_s000_dedicated
oracle   17639     1  0 00:38 ?        00:00:00 ora_qmnc_dedicated
oracle   17661     1  0 00:38 ?        00:00:00 ora_q001_dedicated
oracle   17663     1  0 00:38 ?        00:00:00 ora_q002_dedicated
oracle   18086     1  0 00:50 ?        00:00:00 ora_j000_dedicated
客户端连接进去之后,服务器会给你分配一个新的进程,在不指定或者指定为dedicated连接方式之后,进程如下:

oracle   18194     1  1 00:52 ?        00:00:00 oraclededicated (LOCAL=NO)

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

oracle   18215 18214  1 00:53 ?        00:00:00 oraclededicated (DESCRIPTION=(LOCAL=YES)(ADDRESS=PROTOCOL=beq)))

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

C:\Users\Administrator>sqlplus system/orcl@dedicated

SQL*Plus: Release 11.2.0.1.0 Production on 星期一 5月 20 15:56:47 2013

Copyright (c) 1982, 2010, Oracle.  All rights reserved.

ERROR:
ORA-12520: TNS: 监听程序无法为请求的服务器类型找到可用的处理程序


请输入用户名:
说明,如果服务连接方式为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.

(1)A dedicated server process, which services only one userprocess
(2)A shared server process, which can service multiple userprocesses


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

SQL> show parameter dispatcher

NAME				     TYPE
------------------------------------ ----------------------
VALUE
------------------------------
dispatchers			     string
(PROTOCOL=TCP)
max_dispatchers 		     integer

SQL> alter system set dispatchers = '' scope=both;

System altered.

SQL> show parameter shared_server

NAME				     TYPE
------------------------------------ ----------------------
VALUE
------------------------------
max_shared_servers		     integer

shared_server_sessions		     integer

shared_servers			     integer
1
SQL> alter system set shared_servers = 0 scope=both;

System altered

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


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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值