`
hanjian861202
  • 浏览: 164951 次
  • 性别: 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里你有可能需要等待一个availableshared server process

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

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

 

Oracle Server专有模式和共享模式问题

概念和区别
---------------------------------------------------------------
共享模式适用了一种类似连接池的概念,但实际应用中效果不是很好,不知道在10g中有没有改善
---------------------------------------------------------------
专用模式和共享模式的本质区别就是用户进程对ORACLE内存区里"服务器进程"的专用还是共享.
具体表现在:
1
、在共享模式下,多个用户进程共享一个服务器进程,在专用模式下,ORACLE为每一个用户进程准备一个服务器进程。
2
、在实际情况中,应用系统与数据库的连接请求总是很多,导致用户进程也很多,如果你的内存和CPU是有限的,同时,用户进程对数据库的操作占用空间不多,那你就把数据库连接模式设置为共享模式,这样,ORACLE内存区的服务器进程只是有限的几个,这几个服务器进程会通过一个调度程序来应付若干用户进程的请求。
3
、如果你的硬件资源比较好,就设置成专用模式,每一个用户进程都有一个服务器进程对应,这样,你的用户进程对数据的处理会非常快!
---------------------------------------------------------------
简单
的说,连接客户数少,需要长时间占用数据库的,建议用专有模式,如果连接客户数众多,使用共享模式

最主要的是3个参数:
   
 shared_servers
   
 max_shared_servers
   
 dispatchers

dispatchers=(PROTOCOL=TCP) (SERVICE=ORCLXDB)

max_dispatchers=20

max_shared_servers=50

shared_servers=1

Alter system set shared_servers=1;

Alter system set dispatchers=’(protocol=TCP)(SERVER=SIDXDB)’
如果shared_servers=0,则数据库会运行在dedicated模式下。
如果shared_servers>0,数据库会运行在shared模式下,如果没有指定dispatchers参数,则oracle自动根据每种protocol创建一个dispatcher
两种模式可以通过修改参数自由切换。
Note

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


 

分享到:
评论

相关推荐

    oracle sg 读书笔记综合帖

    Oracle提供两种服务器模式:独占服务器和共享服务器。独占服务器模式中,每个服务器进程只为一个客户端服务,而共享服务器模式下,一个服务器进程可以处理多个客户端请求,客户端通过调度器分配到服务器进程。这种...

    华为云ECS ORACLE RAC 11.2.0.4 的安装指导

    Oracle RAC允许数据库在多台服务器之间共享同一数据库实例,提供高可用性和负载均衡。在华为云ECS上部署Oracle RAC,需要考虑以下关键因素: - **虚拟机配置**:确保ECS具有足够的计算、内存和存储资源,以支持RAC...

    OracleDB体系结构

    2. **程序全局区(Program Global Area, PGA)**:PGA是每个服务器进程或后台进程专有的内存区域,用于存储该进程的数据和控制信息。 ##### 3.3 进程结构 Oracle服务器在收到应用程序或工具(如EnterpriseManager)...

    DBA-I-第一章-ORACLE体系结构(四)

    根据配置不同,服务器进程可以是专有服务器进程或是共享服务器进程。 3. **后台进程**:通常随数据库启动而启动,执行各种维护工作,如块磁盘写入、维护重做日志等。 #### 三、进程类型详解 ##### 1. 用户进程 用户...

    RAC oracle 官方红皮书

    RAC允许数据库在多个服务器节点间共享同一数据存储,从而提高了数据库的稳定性和效率,特别适合处理大规模并发访问和需要高可靠性的应用场景。 Oracle Clusterware是Oracle为集群环境提供的集群管理软件,它为运行...

    Oracle database 10g RAC 管理员手册(学生指南)

    - RAC的使用目的:RAC允许在多服务器环境中运行一个Oracle数据库,提供故障转移和负载均衡等高可用性特性。 - 集群和可伸缩性:集群技术可以提高系统的处理能力和可靠性,通过增加节点可以按比例提高性能和容量。 ...

    Oracle listener详解

    而在共享服务器模式下,监听器将连接转发给调度程序,由调度程序分配合适的服务器进程。 JDBC驱动类型对监听器的依赖也值得提及。JDBC OCI DRIVER需要客户端安装Oracle Net组件,通过TCP/IP协议与数据库通信。而...

    Oracle基础(Oracle体系结构+PL/SQL命令)

    接下来,我们转向PL/SQL,它是Oracle专有的过程式语言,结合了SQL查询能力与高级编程特性。PL/SQL主要包含以下组成部分: 1. **块(Block)**:PL/SQL代码以块的形式存在,包括声明部分(Declaration)、执行部分...

    Database Oracle Clusterware and Oracle Real Application Clusters Installation Guide for Linux

    而Oracle RAC则是在Oracle Clusterware的基础上,实现了数据库实例的集群化,允许多个数据库服务器共享同一组数据文件,从而提供更高的性能和可用性。 二、Oracle Clusterware功能详解 Oracle Clusterware的核心...

    Oracle Database 10g OCM Exam Preparation Workshop Activity Guide Volume 1

    - **目标**:了解Oracle共享服务器模式的工作原理及其优势。 - **主要内容**: - 配置共享服务器参数。 - 测试共享服务器模式下的性能表现。 - 调整资源分配策略以满足不同应用需求。 ##### 8. 安装Oracle ...

    Oracle学习笔记

    **服务器进程** 分为两种类型:**专有服务器进程** 和 **共享服务器进程**。专有服务器进程与单一用户进程关联,处理该用户的请求,包括SQL语句的解析和执行。当数据不在系统全局区(SGA)中,服务器进程会从数据...

    oracle database

    实时应用集群(Real Application Clusters, RAC)是Oracle的一个重要特性,允许多台服务器共享同一数据库实例,提供高可用性和负载均衡。Oracle也支持多种数据复制技术,如逻辑日志复制、GoldenGate等,用于灾难...

    OracleSQL跟踪技术TDV10.ppt

    共享服务器模式下,多个连接共享一个后台进程,而专有服务器模式下,每个连接都有其独立的后台进程。在专有服务器模式中,可以通过`v$session`视图查询用户的连接信息,如SID(会话标识符)、 SERIAL#(会话序列号)...

    ORACLE PL_SQL编程详解

    - **PL/SQL的概念**:PL/SQL(Procedure Language for Structured Query Language)是Oracle专有的过程化SQL扩展语言,它允许用户在Oracle数据库环境中编写过程化的程序代码。这种语言的特点在于能够结合SQL查询语句...

    Oracle 必备FAQ中文手册 chm格式

    服务器进程如SQL*Net处理客户端请求,后台进程如DBWR负责数据缓冲区到数据文件的写入,PGA和SGA是主要的内存区域,分别对应进程私有和全局共享内存。而数据文件、控制文件、重做日志文件和口令文件等构成了磁盘结构...

    Oracle11g的体系架构图

    在共享服务器配置中,分发器会将连接请求放置在连接请求队列中。 9. 事件监视器协调器(Event Monitor Coordinator): 协调数据库中的事件管理和通知活动,包括流事件通知、持续查询通知和快速应用程序通知等。 ...

    Oracle 9i10g编程艺术

    10. **RAC(Real Application Clusters)**:Oracle的集群技术,允许多个服务器共享同一数据库,提高可用性和可扩展性。 11. **物化视图和快照**:用于数据刷新和远程数据同步,是数据仓库和OLAP应用的关键技术。 ...

    oracle体系结构

    实例是Oracle数据库的核心组成部分,它包括了共享全局区(SGA)和一组后台进程。SGA是所有数据库进程共享的一块内存区域,主要用于存储数据库的各种信息。后台进程则负责数据库的各种后台操作,如数据写入、日志记录...

    济南市公安局oraclerac据库实施.pdf

    Oracle RAC允许多个服务器(节点)共享同一个数据库实例,实现并行处理和故障切换,确保数据服务的连续性和高性能。在Oracle 10g RAC中,主要组件包括: 1. **共享磁盘存储**:Oracle RAC依赖于共享磁盘架构,这...

Global site tag (gtag.js) - Google Analytics