Oracle网络配置之共享模式和专有模式

发布时间:2020-08-10 17:07:29 作者:WSH_AI
来源:ITPUB博客 阅读:184

概念


适用场景

对于连接数较大的应用,适宜用共享连接,充分利用系统资源;

通用参数

    1. 单机环境的 remote_listener 一般为空。

    2. rac 环境下,listener 是跟随集群crs启动的。而且数据库 。 rdbms 的启动要依赖 asm 实例的资源,所以不存在启动数据库后,listener 没启动,当然出现故障除外。

      1. local_listener 是该节点的 listener 信息

      2. remote_listener 一般是 scan 的信息

共享参数

内存

进程

数据库启动之后比专用服务器模式会多出两种进程,一种是调度进程(Dnnn),一种是共享服务器进程(Snnn)。来自客户端的请求会被 dispatcher 接受,然后 dispatcher 将请求置入 Request 队列。空闲的 Server Process 会按照 request 队列开始处理队列中的请求。处理过后的结果放入 Response 队列中。最后再由 DIspatcher 来将最后的结果返回给客户端。


优点


  1. 减少了实例中的进程数

  2. 增加了更多并发用户的数量

  3. 实现动态负载均衡

  4. 减少了空闲服务器进程数量

  5. 减少了实例PGA内存


缺点:由于共享服务器模式存在种种问题,同时中间件也完全可以实现连接池的效果,所以一般情况下不会共享服务器模式,使用专用服务器模式即可。


  1. 共享服务器的代码路径比专用服务器长,所以它天生就比专用服务器慢。

  2. 存在人为死锁的可能,因为它是串行的,只要一个连接阻塞,则该服务器进程上的所有用户都被阻塞,并且极可能死锁。

  3. 存在独占事务的可能,因为如果一个会话的事务运行时间过长,它独占共享资源,其它用户只能等待,而专用服务器,每个客户端是一个会话。

  4. 共享服务器模式限制了某些数据库特性,例如:不能单独启动和关闭实例,不能进行介质恢复,不能使用Log Miner,并且SQL_TRACE没有意义(因为是共享而不是当前会话的)。

event

  • event 10257(后续会详细说明)

视图

  • V$DISPATCHER:提供DISPATCH进程信息,包括DISPATCH名称,网络,地址,状态,统计信息和索引号等;
    有记录,说明是配置了dispatchers参数

  • V$DISPATCHER_CONFIG:提供DISPATCH的配置信息

  • V$DISPATCHER_RATE:提供DISPATCH的速度(RATE)统计

  • V$CIRCUIT:提供用户通过DISPATCH连接到数据库的虚拟回路信息(virtual circuits)
    有记录说明当前有使用共享模式的连接,无记录则不能判定服务器模式

  • V$SHARED_SERVER:提供共享服务器信息
    有记录,且STATUS字段为WAIT(COMMON),则说明启动共享;
    无记录,或STATUS字段为TERMINATED,则说明没有启动共享服务器

  • V$SHARED_SERVER_MONITOR:提供共享服务器的优化信息

  • V$QUEUE:提供共享服务器队列信息.

  • V$SESSION:如果SERVER字段的值除了DEDICATED,还有NONE,则说明当前实例启动了共享服务器,并且SERVER为NONE的会话正使用共享服务器连接,同时,如果只显示有DEDICATED,则不能说明服务器就一定工作在专用服务器下面,此时也有可能启动了共享模式。只是目前连接到数据库的都是专用服务器模式。

关闭数据库共享模式


  1.  只需要将参数shared_servers设置为0,即可关闭数据库的共享模式。执行该脚本后,所有以共享方式连接到数据库都不能成功,但是未释放的共享连接会继续保持连接,直到断开为止。
  2. alter system set shared_servers=0;
  3. 如果同时将参数shared_servers和max_shared_servers都设置为0,那么共享连接方式将被终结。所有的共享方式连接都会断开(已经连接的会话也会断开)
开启数据库共享模式
  1. 设置shared_servers这个参数,将其值设置为大于0即可开启服务器共享模式。其他的共享服务器参数可以不用设置,但是最好也设置一下max_shared_servers参数

  2. alter system set shared_servers=1 scope=both;
  3. alter system set max_shared_servers =24 scope=both;
  4. 关于参数dispatchers的设置,可以使用下面命令
  5. alter system set dispatchers='(protocol=TCP)(disp=8)(serv=xxx)’
  6. 前面表示的是协议,disp表示调度器(dipatcher)的进程数量,service分别指定要采用共享服务器模式的服务名称。使用上面的模式指定只启动某个服务的共享模式,如果要设置所有服务都使用共享模式,则设置为:
  7. alter system set dispatchers='(PROTOCOL=TCP)';
当前模式的判断
    1. 查看V$SESSION视图
    通过V$session视图的SERVER字段来进一步判断当前连接模式。
Oracle网络配置之共享模式和专有模式

    2.查看连接数据库的tns配置文件,如下所示
Oracle网络配置之共享模式和专有模式

推荐阅读:
  1. php 模式设计之单例模式
  2. iOS设计模式之单例模式

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

oracle 专有 共享

上一篇:Spring Boot配置是遇到错误:jdbcUrl is required with driverClassName​

下一篇:Oracle分页查询语句(四)

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》