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
- 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: 监听程序无法为请求的服务器类型找到可用的处理程序
- 请输入用户名:
小结论如下:
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
- 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参数,暂时无解!!!!