zoukankan      html  css  js  c++  java
  • 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参数,暂时无解!!!!

    for linux and python
  • 相关阅读:
    spring与hibernate整合使用properties文件分离数据库连接设置
    Android的Selector使用
    Linux中的软链接、硬链接
    JDK自带线程池解析
    shell的控制流程语句
    [转] 对于javascript的function的总结
    [#转#]经典的帖子:多态分析1
    [转]javascript 中数组使用方法汇总
    struts中设置指令牌
    关于指令牌一个有趣的帖子
  • 原文地址:https://www.cnblogs.com/kellyseeme/p/5525195.html
Copyright © 2011-2022 走看看