设为首页 收藏本站
查看: 1798|回复: 0

[经验分享] ORACLE参数max_shared_servers空值与零的区别

[复制链接]

尚未签到

发表于 2017-7-12 19:16:13 | 显示全部楼层 |阅读模式
  ORACLE数据库中的参数max_shared_servers,这是一个DBA很熟悉的参数,但是这个参数max_shared_servers为空值与为0有区别吗?这个细节可能很多人都没有注意过。如下所示:  


SQL> show parameter max_shared_servers NAME                                 TYPE        VALUE------------------------------------ ----------- ------------------------------max_shared_servers                   integerSQL>  SQL> show parameter shared   NAME                                 TYPE        VALUE------------------------------------ ----------- ------------------------------hi_shared_memory_address             integer     0max_shared_servers                   integershared_memory_address                integer     0shared_pool_reserved_size            big integer 23488102shared_pool_size                     big integer 0shared_server_sessions               integer     100shared_servers                       integer     1SQL>   
  检查一下参数shared_servers, 这个参数不能为0,否则下面测试,连接数据库就会报“ORA-12520:TNS: 监听程序无法为请求的服务器类型找到可以用的处理程序”错误。如果shared_servers为0,将其设置为1(也请留意参数shared_server_sessions影响测试结果)




SQL> alter system set shared_servers=1 scope=both; System altered. SQL>   

  此时检查shared server process的数量,你会发现只有一个shared server 进程,如下所示  




[oracle@DB-Server trace]$ ps -ef | grep ora_s00 | grep -v greporacle    6824     1  0 15:35 ?        00:00:02 ora_s000_gsp[oracle@DB-Server trace]$   我们使用SQL Developer或PL/SQL Developer使用共享服务器模式连接到数据库,开启多个会话,每个会话执行一个类似下面的SQL语句,边开启新的会话,边检查shared server process的数量,如下所示,你会看到shared server process的数量会一直增加。

  UPDATE TEST SET NAME='Kerry' WHERE ID= 1001;
  
   DSC0000.png
  
  我们将参数max_shared_servers设置为0,然后对比上面的测试来看看  




SQL> alter system set max_shared_servers=0 scope=both; System altered. SQL> ![oracle@DB-Server ~]$  ps -ef | grep ora_s00 | grep -v greporacle    6824     1  0 15:35 ?        00:00:02 ora_s000_gsp[oracle@DB-Server ~]$
   DSC0001.png
  
  此时开启多个共享服务器连接模式的会话执行一些UPDATE语句,你会发现shared server process的数量不会变化。如下所示。  




[oracle@DB-Server ~]$ ps -ef | grep ora_s00 | grep -v greporacle    8396     1  0 17:21 ?        00:00:00 ora_s000_gsp[oracle@DB-Server ~]$ ps -ef | grep ora_s00 | grep -v greporacle    8396     1  0 17:21 ?        00:00:00 ora_s000_gsp[oracle@DB-Server ~]$ ps -ef | grep ora_s00 | grep -v greporacle    8396     1  0 17:21 ?        00:00:00 ora_s000_gsp[oracle@DB-Server ~]$ ps -ef | grep ora_s00 | grep -v greporacle    8396     1  0 17:21 ?        00:00:00 ora_s000_gsp[oracle@DB-Server ~]$   

  如果你每个会话都执行同一个UPDATE语句, 还会遇到下面错误,当然max_shared_servers为空值的情况是不会遇到这种情况的。
  UPDATE TEST SET NAME='Kerry' WHERE ID= 1001;
  
   DSC0002.png
    可以使用下面SQL语句将max_shared_servers参数重置为空值。不过需要重启实例




SQL> alter system reset "max_shared_servers" scope=spfile; System altered. SQL> shutdown immediate; Database closed. Database dismounted. ORACLE instance shut down.
  关于这个max_shared_servers参数为空值的情况,其实官方文档已经给出了详细描述:
  
  MAX_SHARED_SERVERS specifies the maximum number of shared server processes allowed to be running simultaneously. Setting this parameter enables you to reserve process slots for other processes, such as dedicated servers.
  When you want to reduce the range of shared servers, you can reduce MAX_SHARED_SERVERS before reducing SHARED_SERVERS. If MAX_SHARED_SERVERS is lower than SHARED_SERVERS, then the number of shared servers will not vary but will remain at the constant level specified by SHARED_SERVERS. If MAX_SHARED_SERVERS is not specified, then a shared server process may be spawned as long as the number of free process slots is greater than 1 / 8 the maximum number of processes, or 2 if PROCESSES is less than 24.
  
  另外其它相关参数的描述如下所示,仅供参考。

  • SHARED_SERVERS: Specifies the initial number of shared servers to start and the minimum number of shared servers to keep. This is the only required parameter for using shared servers.
  


  • MAX_SHARED_SERVERS: Specifies the maximum number of shared servers that can run simultaneously.
  


  • SHARED_SERVER_SESSIONS: Specifies the total number of shared server user sessions that can run simultaneously. Setting this parameter enables you to reserve user sessions for dedicated servers.
  


  • DISPATCHERS: Configures dispatcher processes in the shared server architecture.
  


  • MAX_DISPATCHERS: Specifies the maximum number of dispatcher processes that can run simultaneously. This parameter can be ignored for now. It will only be useful in a future release when the number of dispatchers is auto-tuned according to the number of concurrent connections.
  


  • CIRCUITS: Specifies the total number of virtual circuits that are available for inbound and outbound network sessions.
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-393258-1-1.html 上篇帖子: Mysql与Oracle区别(转载) 下篇帖子: 三分钟读懂Oracle数据库容灾架之DataGuard
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表