`
Turandot
  • 浏览: 52627 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论

Oracle 专用服务器和共享服务器连接

阅读更多

Oracle 专用服务器和共享服务器连接

 

    Oracle服务器处理请求的两种最常用的方式,这两种方式分别是专用服务器连接和共享服务器连接。

   

     专用服务器:

        登录时,Oracle总会为我创建一个新的线程。这通常称为专用服务器配置,因为这个服务器进程会在我的会话生存期中专门为我服务。对于每个会话,都为出现一个新的专用服务器,会话与专用服务器之间的存在一对一的映射。按照定义,这个专用服务器不是实例的一部分。我的客户进程(也就是想要连接数据库的程序)会通过某种网络通道(如TCP/IP套接字)与这个专用服务器直接通信,并由这个服务器进程接收和执行我的SQL。如果必要,它会读取数据文件,并在数据库的缓存中查找我要的数据。也许它会完成我的更新语句,也可能会运行我的PL/SQL代码。这个服务器进程的只要目标就是对我提交的SQL调用做出响应:

       具体过程如下:

 

  1. ①client使用设定的协议向Listener发送一个CONNECT包,建立与Listener的连接。
  2. ②Listener检查SID是否已经被定义。如果已经被定义,Listener将fork一个新的进程来处理此连接。一个Bequeath连接就在Listener和新的服务器进程之间建立起来用于传输进程初始化信息。随后,Bequeath连接将被关闭。注意,TCP sockets是被新的服务器进程继承的。
  3. ③服务器进程会给client发送一个RESEND包。
  4. ④一个新的CONNECT包在此从client发送到fork产生的服务器进程
  5. ⑤dedicated服务器进程接到新的连接包,会返回一个ACCEPT包给client。

      专用服务器请求的流程下图所示:

 

 

    

 

 

 

 

      共享服务器:

          在共享服务器中,Oracle使用一个“共享进程”池为大量用户提供服务。共享服务器实际上就是一种连接池机制。利用共享服务器,不必为每一个数据库会话都创建一个专用服务器,而只需建立很少的一部分进程/线程,这些进程/线程将有所有会话共享。这样Oracle就能让更多的用户与数据库连接,否则很难连接更多的用户。客户进程不能与共享服务器直接对话,原因在于这个服务器进程是共享的。为了共享这些进程,还需要另外一种机制,通过这种机制才能与服务器进程“对话”。为此,Oracle使用一个或一组称为调度程序(dispatcher,也称分配程序)的进程。客户进程通过网络与一个调度程序进程通信。这个调度程序进程将客户的请求放入SGA中的请求队列(也是SGA的用途之一)。第一个空闲的共享服务器会得到这个请求,并进行处理。完成这个命令后,共享服务器会把响应放在原调度程序(即接收请求的调度程序)的响应队列中。调度程序进程一直在监听这个队列,发现有结果后,就会把结果传给客户。

        具体过程如下:

  1. ①客户连接向调度器发送一个请求。调度器首先将这个请求放在SGA中的请求队列中。
  2. ②第一个可用的共享服务器从请求队列中取出这个请求并处理。
  3. ③共享服务器的处理结束后,再把响应(返回码、数据等)放到响应队列中,
  4. ④接下来调度器拿到这个响应,传回给客户。

        共享服务器请求的流程下图所示:

 

   

 

   

   

        下图展示了使用共享服务器连接的客户和使用专用服务器连接的客户之间的交互方式。由此还显示出,一个Oracle实 例可以同时使用这两类连接(实际上,即使配置为使用共享服务器连接,Oracle数据库也总是支持专用服务器连接)。

 

    

 

 

 

            

 怎么判断Oracle服务器模式(专用/共享)?

 

1。是否为配置为共享服务器,最主要的参数是
show parameter shared_server
如果数值 > 0 ,就是enable了共享服务器.

也可以从v$parameter 视图中查.

2。在配置为共享服务器的情况,Client可以选择用共享服务器或者专用服务器来连接到数据库,这个参数的控制是在tnsnames.ora里设定的
aaaa=
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = aaaa)(PORT = 1521))
)
(CONNECT_DATA =
(SID = aa)
(SERVER = DEDICATED)
)
)
红色部分指定了用DEDICATED方式连接DB.
另外,Background process ,以及通过本地连接进来的,只能是DEDICATED
比如说sqlplus user/pass 形式
如果DB没有配置共享服务器,那么Client只能以DEDICATED方式连接DB.

3。判断一个已经连接的session的连接方式有两种方法
A
select username,server from v$session;
如果server = 'DEDICATED'则是DEDICATED方式
server='SHARED'则是shared方式,并且正有shared_server_process为其服务
server='NONE'的话,则是shared方式,并且当前没有shared_server_process为其服务。

B. 仅用于Unix 底下,似乎windown不行
连接v$session, v$process 看process中的program
1 select p.program,s.server from v$session s , v$process p
2* where s.paddr = p.addr
如果 program 为 。。(S0NN) 的,则是shared方式,并且正有shared_server_process为其服务
如果 program 为 。。(D0NN) 的,则是shared方式,并且当前没有shared_server_process为其服务
如果 program 为 其它的,则是'DEDICATED'方式

 

分享到:
评论

相关推荐

    Oracle数据库专用服务器与共享服务器探究.pdf

    Oracle数据库系统提供了两种主要的服务器连接模式:专用服务器(Dedicated Server)和共享服务器(Shared Server),这两种模式在不同的应用场景下各有优势。 1. 专用服务器连接 在专用服务器模式下,每个客户端...

    Oracle共享连接和专用连接方式比较

    总的来说,Oracle的共享连接和专用连接各有优势,关键在于根据业务特性、并发需求以及硬件资源进行合理选择,以达到最佳的系统性能和资源利用率。在调整数据库连接模式时,应充分测试和监控,确保改动对系统的影响...

    oracle共享连接和专用连接模式

    ### Oracle共享连接与专用连接模式详解 #### 一、引言 在Oracle数据库环境中,连接模式的选择直接影响着系统的性能和资源利用效率。本文将详细探讨Oracle数据库中的两种主要连接模式:共享连接(Shared Server)与...

    建立与Oracle服务器连接的两种模式

    Oracle9i和10g提供了两种主要的连接模式:专用服务器连接(Dedicated Server)和共享服务器连接(Shared Server)。理解这两种模式的工作原理对于优化数据库性能至关重要。 **专用服务器模式**: 在专用服务器模式...

    oracle连接其他服务器

    在企业级应用中,经常需要将一个Oracle数据库(本地数据库)与另一个或多个远程Oracle数据库进行连接,以实现数据共享和交互。本文将详细介绍如何通过修改配置文件来实现Oracle与远程服务器数据库之间的连接。 ####...

    ORACLE共享服务器在军卫一号系统中的应用.pdf

    总的来说,将军卫一号系统从Oracle专用服务器模式转换为共享服务器模式,能够有效解决随着医院业务量增长带来的资源瓶颈问题,提升系统的稳定性和效率。这一改变需要深入理解Oracle数据库的工作原理,并结合实际应用...

    sqlserver连接oracle

    下面将详细介绍配置过程和连接方法。 配置 Windows 的 ODBC 数据源 在 Windows 操作系统中,需要配置 ODBC 数据源以连接 Oracle 数据库。步骤如下: 1. 打开开始菜单,选择“设置”、“管理工具”、“数据源...

    SQLSERVER建立ORACLE的链接服务器.doc

    SQL Server 链接 Oracle 数据库实例 分布式异构数据库查询是指在不同的数据库管理系统之间进行数据...通过 SQL Server 链接服务器可以实现 SQL Server 和 Oracle 之间的异构数据库分布式查询,实现数据的共享和交互。

    Oracle数据库服务器工作模式与数据字典.ppt

    Oracle数据库服务器工作模式主要包括两种:专用服务器模式和共享服务器模式,这两种模式在处理用户请求和服务效率上有着显著的差异。 1. **专用服务器模式** - **概念**:在专用服务器模式下,Oracle为每个连接的...

    Oracle服务器进程和存储结构归纳.pdf

    在Oracle中,服务器进程主要分为两类:专用服务器进程和共享服务器进程。 5.1 专用服务器进程 专用服务器进程( Dedicated Server Process)为每个客户端连接提供一个单独的服务器进程。这种模式下,每个连接都有...

    Oracle数据库-TNS连接

    RAC(Real Application Clusters)是Oracle提供的高可用性解决方案,允许多台服务器共享同一数据库实例,进一步提高系统的可靠性和性能。 Oracle数据库还涉及到ACL(Access Control List)的管理,用于控制网络访问...

    ADO.NET EF+Oracle的WEB服务器配置

    5. **配置tnsnames.ora**:在`tnsnames.ora`文件中,定义了如“RCM”这样的服务名,包括数据库的主机地址、端口和服务名,这使得应用程序能够找到并连接到Oracle数据库。 6. **重启生效**:更改配置后,必须重启...

    Oracle数据库服务器工作模式与数据字典.pptx

    Oracle数据库服务器的工作模式主要包括两种:专用服务器模式和共享服务器模式,这两种模式在处理用户请求和管理资源方面有显著差异。 1. **专用服务器模式** - 专用服务器模式下,Oracle为每个用户进程启动一个...

    实现 Oracle 连接 SQL Server

    此文件中的 `(HOST=192.168.1.15)` 和 `(PORT=1521)` 指定了 Oracle 数据库服务器的 IP 地址和端口。 3. **tnsnames.ora 文件配置**:同样位于 `$ORACLE_HOME/network/admin/` 目录下的 `tnsnames.ora` 文件需要...

    geoserver2.14.0 oracle 数据库连接

    在GIS(地理信息系统)领域,GeoServer是一款广泛使用的开源服务器软件,它允许用户发布和共享地理空间数据。本文将深入探讨如何使用GeoServer 2.14版本与Oracle数据库进行集成,以及如何在GeoServer中读取并显示...

    oracle数据库体系结构之一【连接配置】

    客户端首先通过监听器与调度程序建立连接,调度程序将请求放入SGA(System Global Area)的请求队列,随后由空闲的共享服务器进程取出请求并执行,结果再返回给调度程序,最终由调度程序传回客户端。调度程序的数量...

    Oracle数据库连接与会话

    连接可以是专用服务器进程或共享服务器进程。在Oracle中的连接管理器(CMAN)中,连接可以是在客户端与CMAN之间或CMAN与数据库之间。 在Oracle中,一个连接可以有零个或多个会话,一个会话不一定有连接。连接的存在...

    oracle 数据库,在C++中用连接池实现高速连接与访问.rar

    Oracle还支持分布式数据库系统,使得跨地域的数据共享和协作成为可能。 二、C++与Oracle的接口 为了在C++中操作Oracle数据库,我们需要使用Oracle提供的OCI(Oracle Call Interface)库。OCI是Oracle数据库的C语言...

Global site tag (gtag.js) - Google Analytics