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

Oracle专用服务器与共享服务器的区别

阅读更多

在建立Oracle数据库的时候,应该会在数据库建立助手向导上面看到这么一个选项,就是数据库的连接模式采用什么方式。在Oracle9i或者10g中,可以看到有2种连接模式,一种叫做专用服务器连接(dedicated server) ,另外一种叫做共享服务器连接(shared server)。下面我们来分类说一下这两种连接方式的不同点。

  专用服务器模式就是说每次在对Oracle进行访问的时候,Oracle服务器的Listener会得到这个访问请求,然后回为这个访问创建一个新的进程来进行服务。所以说,对于每一个客户端的访问,都会生成一个新的进程进行服务,是一种类似一对一的映射关系。这种连接模式的一个很重要的特点就是UGA(用户全局域)是存储在PGA(进程全局域)中的,这个特性也很好说明了当前用户的内存空间是按照进程来进行分配的。

  而另外的共享服务器连接则是一种在程序编写的时候通常会用到的连接池(pool)的概念。采用这种模式的话,在数据库的初始化的时候就会创建一批服务器连接的进程,然后把这些连接进程放入一个连接池来进行管理。初始化的池中的进程数量在数据库初始化建立的时候是可以手动设置的。在连接建立的时候,Listener首先接受到客户端的建立连接的请求,然后Listener去生成一个叫做调度器(dipatcher)的进程与客户端进行连接。调度器把把客户端的请求放在SGA(系统全局域)的一个请求队列中,然后再共享服务器连接池中查找有无空闲的连接,然后让这个空闲的服务器进行处理。处理完毕以后再把处理结果放在SGA的相应队列中。调度器通过查询相应队列,得到返回结果,再返回给客户端。这种连接模式的优点在于服务器进程的数量可以得到控制,不大可能出现因为连接人数过多而造成服务器内存崩溃。但是由于增加了复杂度以及请求相应队列,可能性能上有所下降。

  总之,在开发阶段中,用第一种专用服务器可能好一些,因为少了一些中间的复杂度,而且开发的时候一般连接的数量也少。而在多个应用同时使用一个数据库的实际应用环境下,采用第二种方法可能好一些,因为如果到时候突然有1000个或者10000个请求连接的话,数据库服务器如果同时建立10000个连接,肯定要受不了的。当然,也要看到时候的实际情况如何再做决定,两者没有绝对的哪种好哪种不好的差别

      关于这两者的比较"假如你来到一个城市,要在这个城市的不同的地方办几件事情,在交通方面你有两种选择:一个是雇一辆专车,这辆专车将会把你从A带到B,一直等你把在B的事情办完,在把你从B带到C。。。。。。另一种选择是给出租车公司打电话订辆出租车,先把你从A带到B,然后你和出租车该干嘛干嘛,你去办你的事情,出租车去接别的生意,等你在B的事情办完了,你再跟出租车公司订车,出租车公司将会联系当时在B附近的其他出租车去接你。。。。。。

首先,dedicated servers的设置非常简单-----不需要设置,这个是oracle的默认选项

而对于shared servers,你就要需要做一些额外的设置,当让按照administrator guide并不难,关键是你需要决定到底需要多少个shared server servers和多少个dispatcher,这不仅仅需要经验的积累,还需要持续的观察和调整。
在dedicated servers里,你所有的等待都是数据库本身的等待,而在shared servers里你有可能需要等待一个available的shared server process。

很明显,当用户并发的连接数很大的时候,dedicated servers的server process个数也会变得很大,对于操作系统来说多一个process就意味着多一点管理负担,要知道操作系统支持的同时并发数可不是无限的。这意味着,在dedicate servers里,当你有大量的用户连接(比如,同一时间超过5000个用户连上来),你的系统负担就会相当大。而这种情况shared servers就可以处理的相对好一些,因为加入同时有5000个用户连上来而且我们知道一般只有1%的连接是active,那我们只需要设置50个shared servers就可以把所有的用户请求处理得很好,并节省了系统资源。

作为一个好处,shared servers可以用来控制concurrent。要知道用户的并发数和系统的处理能力决不是成正比的(可以下面的图),当用户并发数超过一个阀值,系统的处理能力会明显下降。通过shared servers可以控制系统的concurrent不超过这个阀值。

 

在引入PGA的自动管理以前,shared servers是要比dedicated servers节省内存的,然后在自动管理的PGA引入之后,shared servers的这个优势已经不像我们想象的那么不明显了。

dedicate servers一个server process为了一个较大的request而长时间的工作而不影响其它的users,然而在shared servers,一些较大的request会影响其它的用户。

还需要考虑其他的因素,比如,如果在前端使用了weblogic的connecting pool,那么你在database level再使用shared servers可能就不是很必要,因为这时你的用户连接已经在weblogic层面上得到了控制。

shared servers还有一个所谓的伪死锁的问题,这点大家参考一下tom的新书就知道了。

关于dedicated servers和shared servers的话题我们就讨论这么多,最后给大家一个小提示:其实dedicated servers和shared servers是可以并存的,实际上,即使你使用了shared servers,某些管理操作也是必须在dedicated 模式下来做的,比如startup或shutdown database。如果你实在难以选择,如果你的应用可能一部分是OLTP的(用户量也很大),一部分是DW的,其实你可以考虑同时使用dedicated servers和shared servers。

"

查看运行情况:

 

idle> show parameter shared_server mts_servers

NAME_COL_PLUS_SHOW_PARAM TYPE
---------------------------------------------------------------- -----------
VALUE_COL_PLUS_SHOW_PARAM
-----------------------------------------------------------------------------------------------------------------------------------
max_shared_servers integer
20
shared_server_sessions integer
165
shared_servers integer
1

--如果VALUE_COL_PLUS_SHOW_PARAM大于0为dedicated模式
idle> select p.program,s.server from v$session s , v$process p
2 where s.paddr = p.addr
3 ;

PROGRAM SERVER
------------------------------------------------ ---------
oracle@infa (PMON) DEDICATED
oracle@infa (DBW0) DEDICATED
oracle@infa (LGWR) DEDICATED
oracle@infa (CKPT) DEDICATED
oracle@infa (SMON) DEDICATED
oracle@infa (RECO) DEDICATED
oracle@infa (TNS V1-V3) DEDICATED
oracle@infa (TNS V1-V3) DEDICATED
oracle@infa (TNS V1-V3) DEDICATED
oracle@infa (TNS V1-V3) DEDICATED
oracle@infa (TNS V1-V3) DEDICATED
oracle@infa (TNS V1-V3) DEDICATED
oracle@infa (TNS V1-V3) DEDICATED
oracle@infa (TNS V1-V3) DEDICATED
oracle@infa (TNS V1-V3) DEDICATED

15 rows selected.

模式切换:

客户端建立的连接。
如果服务器是专用模式,客户端再怎么修改也没有用。
服务器切换专有和共享模式的方法是修改参数文件中的参数。

sample:

trace:http://download-west.oracle.com/docs/cd/B19306_01/server.102/b14231/manproc.htm#sthref630

大多数情况下我们更倾向或习惯专用模式,两种模式下,对sga等分配都会有不同,所以如果转换成mts模式,别忘了sga也是需要调整的。最典型的是mts模式需要较大的large_pool_size。如果真想转换还是仔细看看oracle关于mts的文档。共享连接只是把连接SESSION信息放在LARGE POOL,所以LARGE POOL要大一些。而专用连接的SESION信息放在PGA。

Note:
1. 如果是dedicated server,则客户端只能创建dedicated server connection
2. 如果是shared server,则客户端能创建dedicated server connection和shared server connection,只要在service name中指定server=dedicated or server=shared.

分享到:
评论

相关推荐

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

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

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

    在这种情况下,系统会花费额外的资源在请求调度和结果返回上,因为每个请求都要经过监听进程、分配器和共享服务器进程的交互。此外,由于共享服务器进程服务于多个用户,可能会导致PGA中的资源竞争,影响事务的执行...

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

    【Oracle共享服务器】是Oracle数据库的一种工作模式,与专用服务器模式相对。在专用服务器模式下,每个客户端连接都会启动一个独立的服务器进程,这导致了大量的内存资源被分配给每个连接,即使连接处于空闲状态。当...

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

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

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

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

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

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

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

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

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

    与Oracle数据库结合使用时,我们需要进行特定的配置才能在Web服务器上运行。以下是对标题和描述中涉及的知识点的详细解释: 1. **安装dotnet35sp1简化版**:这个步骤是为了确保服务器上安装了.NET Framework 3.5 ...

    sqlserver2008链接ORACLE服务器驱动.rar

    总结来说,"sqlserver2008链接ORACLE服务器驱动.rar"这个资源提供了实现SQL Server 2008与Oracle数据库连接的关键组件和指导,帮助用户在不同数据库系统间实现数据共享和交互,这对于多数据库环境的企业来说是非常有...

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

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

    oracle服务器端与客户端配置.docx

    同时,根据服务器的配置,选择合适的连接类型,如专用服务器或共享服务器,以优化数据库性能。 总结来说,Oracle服务器端与客户端配置涉及监听器设置、本地服务名配置和网络连接配置,这三个部分构成了Oracle数据库...

    oracle连接其他服务器

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

    如何调整Oracle数据库服务器的性能

    - **规划系统资源**:根据计算机现有的硬件资源,合理分配给Oracle服务器,确保Oracle能够充分利用这些资源,特别是在Client/Server架构中,让服务器资源全力服务于Oracle服务。 - **调整内存配置**:避免过度...

    银河麒麟服务器操作系统Oracle 数据库安装与配置指南

    ### 银河麒麟服务器操作系统Oracle数据库安装与配置指南 #### 第一节:配置内核参数 银河麒麟服务器操作系统为了确保Oracle数据库能够高效稳定地运行,必须调整内核参数以优化资源分配。根据文档,这一过程需根据...

    双机热备Oracle数据库服务器操作实战

    本文将详细解析双机热备Oracle数据库服务器的配置与操作流程,深入探讨其实战应用。 ### 双机集群相关配置 #### NODEA机(Active) - **硬件配置**:采用HP DL580G2服务器,内置2个72GB硬盘配置为RAID1,增强数据...

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

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

    Oracle数据库共享服务器的配置与使用的研究.pdf

    Oracle数据库共享服务器的配置与使用的研究.pdf

    oracle 11g 服务器创建

    ### Oracle 11g 服务器创建及数据库安装详解 #### 一、系统准备与配置 在部署Oracle 11g数据库服务器之前,需要对Linux操作系统进行必要的调整,以确保其能够满足Oracle的要求。 ##### 1. 修改操作系统核心参数 ...

Global site tag (gtag.js) - Google Analytics