关于专用和共享服务器进程

Oracle数据库创建服务器进程来处理连接到实例的用户进程的请求。服务器进程可以是以下任一种:

  • 一个专用的服务器进程,它只服务于一个用户进程
  • 共享服务器进程,可以为多个用户进程提供服务

您的数据库始终启用以允许专用的服务器进程,但您必须通过设置一个或多个初始化参数来专门配置和启用共享服务器。

专用服务器进程


图5-1“Oracle数据库专用服务器进程”说明了专用服务器进程如何工作。在该图中,两个用户进程通过专用服务器进程连接到数据库。

Figure 5-1 Oracle Database Dedicated Server Processes

 

通常,最好通过调度程序进行连接并使用共享服务器进程。如图5-2“Oracle数据库共享服务器进程”所示。共享服务器进程可以更高效,因为它可以使运行实例所需的进程数量保持较低。

但是,在以下情况下,用户和管理员应该使用专用服务器进程显式连接到实例:

  • 要提交批处理作业(例如,当作业可以允许服务器进程很少或没有空闲时间时)
  • 使用Recovery Manager(RMAN)备份,恢复或恢复数据库

当Oracle数据库配置为共享服务器时如果要请求专用服务器连接,用户必须使用配置为使用专用服务器的网络服务名称进行连接。具体来说,网络服务名称值应该包含连接描述符中的SERVER = DEDICATED子句。

 有关请求专用服务器连接的更多信息,请参阅“Oracle Database Net Services管理员指南

共享服务器进程


考虑一个具有专用服务器进程的订单输入系统。客户打电话给订单柜台并发出订单,接听电话的店员将订单输入数据库。对于大部分交易,店员正在通过电话与客户交谈。在此期间不需要服务器进程,因此专用于店员用户进程的服务器进程保持空闲状态。系统对于其他店员输入订单的速度较慢,因为空闲服务器进程持有系统资源。

共享服务器体系结构消除了每个连接的专用服务器进程的需求(请参见图5-2)。

 Figure 5-2 Oracle Database Shared Server Processes

在共享服务器配置中,客户端用户进程连接到调度程序。调度员可以同时支持多个客户端连接。每个客户端连接都绑定到一个虚拟电路,该虚拟电路是调度程序用于客户端数据库连接请求和答复的一段共享内存。当请求到达时,调度员将虚拟电路放在公共队列中。

空闲的共享服务器进程从公用队列中拾取虚拟电路,为请求提供服务,并放弃虚拟电路,然后尝试从公共队列中检索另一个虚拟电路。这种方法可以让一小部分服务器进程为大量客户端提供服务。与专用服务器模型相比,共享服务器体系结构的一个显着优势是减少了系统资源,从而支持更多用户。

为了更好的资源管理,可以将共享服务器配置为连接池。通过连接池,分派器可以支持更多用户,方法是启用数据库服务器超时协议连接并使用这些连接为活动会话提供服务。此外,可以配置共享服务器进行会话多路复用,它将多个会话组合在一起,以便通过单个网络连接进行传输,以节省操作系统的资源。

共享服务器体系结构需要Oracle Net Services。以共享服务器为目标的用户进程必须通过Oracle网络服务进行连接,即使它们与Oracle数据库实例在同一个系统上。

Oracle数据库网络服务管理员指南“中有关共享服务器的更多详细信息,包括连接池和会话复用等功能

参考资料


https://docs.oracle.com/cd/E11882_01/server.112/e25494/manproc.htm#ADMIN11166

原文地址:https://www.cnblogs.com/ZeroTiny/p/9041236.html