Oracle共享服务器体系结构

在共享服务器体系结构中,一个dispatcher分派器将传入网络的多个会话请求定向到一个共享服务器进程池,消除了为每个连接分配一个专用服务器进程的需要。作为一般的指导原则,仅当系统需要并发连接到数据库的数量超过操作系统的处理能力时,才能使用共享服务器。

共享服务器模式必须使用net services.也就是必须配置tns信息(即使客户端与服务端为同一台机器,也要配置TNS,且通过IPC协议进行通讯)。它适合用于高并发,事务量小,如果此时采用了共享模式,可以大大减少由于高度并发对于ORACLE服务器的资源消耗。

1,共享服务器模式优缺点

优点:

(1)减少了实例中的进程数

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

(3)实现动态负载均衡

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

(5)减少了实例PGA内存

缺点:

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

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

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

(4)共享服务器模式限制了某些数据库特性,例如:不能单独启动和关闭实例,不能进行介质恢复。

2,在共享服务器体系结构中需要的进程

(1)将客户端进程连接放到 dispatcher 或者 专有服务器进程的 网络监听器(PS:监听器是Oracle网络服务的一分部,而不是Oracle数据库的一部分)。

(2)一个或多个分派器进程(Dnnn)

(3)一个或多个共享服务器进程(Snnn)

3,请求处理流程

分派器将请求放入请求队列,然后共享服务器进程检查公共请求队列并取出处理,最后服务器进程将响应结果置于分派器的响应队列。(每一个分派器都有一个响应队列)

4,分派器进程(Dnnn)

分派器进程使得客户端进程可以共享数量有限的服务器进程。可以为单个数据库实例创建多个分派器进程。分派器进程的最佳个数取决于操作系统的限制和每个进程的连接数。

当客户端进程发出连接请求时,监听器将确定客户端进程是否应使用共享服务器进程,这个在配置文件里面有配:

○ 如果明确配置的是server = shared 并且建立了和dispatcher的通信,则使用共享服务器模式。

○ 如果配置的是server = shared但是无法建立和任何dispatcher的通信,或者配置的是server = dedicated,则使用专有服务器模式。

一个典型的实例分派器设置如下(参数文件中设置):

dispatchers="(protocol=TCP)(serv=orcl)(list=orcl)(poo=on)(disp=5)(conn=33)(sess=224)"

protocol=tcp--协议

list=orcl--监听器别名,并非监听器的名字,实际是一个tnsnames.ora中的网络服务名

serv=orcl--网络服务名

poo=on--是否启用共享池

disp=5--初始调度进程数

sess=224--每个调度进程的最大会话数

max_dispatchers=19--最大调度进程的数

通过v$dispatcher视图可以查看数据库实例目前存在多少个调度器进程(分派器):select * from v$dispatcher;

修改调度进程数量:alter system set dispatchers="(protocol=tcp)(disp=6)" scope=both;

也可以手动的杀掉一个指定的调度器进程:ALTER SYSTEM SHUTDOWN IMMEDIATE ‘D000‘;

5,共享服务器进程(Snnn)

在共享服务器配置中,每个共享服务器进程为多个客户端请求服务。除了共享服务器进程不与特定客户端进程相关联外,共享服务器进程和专用服务器进程提供相同的功能。

(1)共享服务进程的设置主要受三个参数的影响:

○ shared_servers

指定了当instance启动的时候share_servers启动的数量(可通过shared server process查看),不要将这个参数设置得太大,否者启动数据库instance的时候就会花更多时间,Oracle启动过后会根据负载来动态调整shared_servers。如果为0,表示数据库没有启动共享服务模式。这个参数是配置shared server必须的,而且只有这个参数是必须的。

修改参数:  alter system set shared_servers=1;

○ max_shared_servers

ORACLE在同一个时刻最大能够使用的share_servers数量,不要将这个参数设置小于shared_servers,如果动态修改shared_servers大于max_shared_servers,ORACLE会覆盖max_shared_servers的值,此时你需要修改max_shared_servers,同时也不能大于processes的值。这个参数是为了给占用很大资源操作而设的(批处理),为了预留一些process给DBA任务(rman备份)。

○ shared_server_sesions:

指定了总共允许的的shared server session的数量。如果设置了这个参数,那么就不要将这个值超过sessions,如果没有设置这个值,那么只要还有空闲的session,就可以被使用。设置这个值是为专有连接预留user sessions的。

(2)把服务器从共享服务器模式改为专用服务器模式

alter system set shared_servers = 0 scope = both;   --已经存在的共享进程需要等到会话结束才能结束

alter system set max_share_servers=0 scope=both; --立即强制结束所有共享服务器进程

6,判断当前session的连接模式

数据库可以同时支持共享服务器连接和专用服务器连接。因此如果参数shared_servers=0 ,可以确定所有连接均是专用模式。但是如果shared_servers>0,那么就需要通过v$session视图的SERVER字段来进一步判断当前连接模式了。

补充:Oracle11gR2安装后初始设置shared_servers=1;同时,数据库还创建了一个调度器进程,在参数文件中有如下配置:dispatchers=‘(PROTOCOL=TCP) (SERVICE=orclXDB)‘,service "orclXDB"是Oracle9i后创建数据库时默认包含的XML DB特性,提供http、ftp等服务。通过lsnrctl service可以查看监听器监听的网络服务:(orclXDB是Oracle网络体系中的一个服务,而不是操作系统层面的服务)

转载请注明出处:http://www.cnblogs.com/pengineer/p/4516014.html

时间: 2024-11-08 05:52:57

Oracle共享服务器体系结构的相关文章

Oracle基础 Oracle的体系结构

一.Oracle体系结构概述: Oracle的体系结构是指数据库的组成.工作过程与原理,以及数据在数据库中的组织与管理机制.要了解Oracle数据库的体系结构,必须理解Oracle系统的重要概念和主要组件. Oracle系统体系结构由三部分组成:内存结构,进程结构,存储结构..如下图所示:   1.内存结构(SGA.PAG) 内存结构包括系统全局区(System Global Area,SGA)和程序全局区(Program Gloabl Area,PGA). 2.进程结构(process) 进程

oracle的体系结构

刚刚出道,在这里希望各位大牛指导,希望这里成为一个我成长的平台!本篇博客我给大家讲述一下oracle的体系结构,同时也是对自己学习的一种检查! oralce内存由SGA+PGA所构成. oracle服务器由oracle实例和oracle数据库组成.下面详细说一下 oracle 实例: 用户必须通过oracle实例才能访问到oracle数据库 一个oracle实例只能对应一个oracle数据库 oracle实例由内存结构与后台进程结构所组成. 内存结构:SGA(system global area

【转载:Oracle基础知识】Oracle数据库体系结构

先来看张直观的图:                                            oracle 11g 体系结构图 理解Oracle体系结构要充分理解三个概念:数据库(database),数据库实例(instance),会话(session),一定不要把这三个概念弄混. 数据库的概念 (A)    物理存储结构由数据文件.控制文件.重做日志文件组成: 1.       数据文件(datafile) select * from dba_data_files; 数据文件包括存

Oracle数据库体系结构、启动过程、关闭过程

一.Oracle数据库体系结构体系结构由下面组件组成:1.Oracle服务器(Server):由数据库实例和数据库文件组成,另外在用户建立与服务器的连接时启动服务器进程并分配PGA(程序全局区) (1)数据库实例(Instance) 数据库实例由一些内存区和后台进程组成. (a)内存区:共享池.数据库高速缓存.重做日志缓存.流池以及其他可选内存区 (b)后台进程:系统监控进程(SMON).进程监控(PMON).数据库写进程(DBWR).日志写进程(LGWR).检验点进程(CKPT).其他进程 (

Oracle数据库体系结构总结

Oracle DB 体系结构 Oracle DB 服务器由一个 Oracle DB 以及一个或多个数据库实例组成.实例由内存结构和后台进程构成.每当启动一个实例时,都会分配一个称为系统全局区 (SGA) 的共享内存区,并启动后台进程. 数据库包括物理结构和逻辑结构.由于物理结构和逻辑结构是分开的,因此管理数据的物理存储时不会影响对逻辑存储结构的访问. Oracle的体系结构确保将逻辑结构从物理结构中抽象出来 Oracle DB 内存结构 Oracle DB 针对各种用途创建和使用内存结构.例如,

Oracle数据库------体系结构

ORACLE体系结构包括:实例(Instance),数据库文件,用户进程(User process),服务器进程以及其他文件. 1.ORACLE实例(instance)     1).要访问数据库必须先启动实例,实例启动时先分配内存区,然后再启动后台进程,后他进程执行数据库的输入,输出以及监控其他进程.      在数据库启动的过程中 一下五个进程必须启动:         1.SMON(系统监控进程) 2.PMON(进程监控) 3.DBWR(数据库写进程) 4.LGWR(日志写进程) 5.CK

oracle 11g体系结构

Oracle体系结构详解 一.oracle数据库的整体架构 由上图可知,oracle数据库由实例和数据库组成. 二.数据库存储结构: 2.1数据库存储结构 Oracle数据库有物理结构和逻辑结构.数据库的物理结构是数据库中的操作系统文件的集合.数据库的物理结构由数据文件.控制文件和重做日志文件组成. 数据文件:数据文件是数据的存储仓库. 联机重做日志文件:联机重做日志文件包含对数据库所做的更改记录,在发生故障时能够恢复数据.重做日志按时间顺序存储应用于数据库的一连串的变更向量.其中仅包含重建(重

oracle 数据库体系结构图解

工作之后,一直忙着搞前端开发:基本忘却了,oracle的所有东西:回想当初的"DBA"梦想;想想现在的境况,一言难尽,感慨万千:为了捡起数据库的知识,一直在看大牛们的博客:为了加深记忆,便与复习:后面将不断摘抄大牛的博客内容:拾人牙慧: 下面是一张oracle体系结构: 参考地址:http://blog.chinaunix.net/uid-7589639-id-2974642.html

Oracle 11g 体系结构 --SGA PGA 前后台进程

Oracle服务器主要由实例.数据库.程序全局区.前台进程 实例:用来提供管理数据库的功能 数据库:由Oracle数据库文件组成,用来存储系统数据 ;一般有:数据文件.控制文件.重做日志文件 而实例可以进一步划分为:系统全局区(SGA)和 后台进程(PMON,SMON等) 而SGA 是操作系统的内存资源,后台进程使用CPU和内存资源  程序全局区(PGA)是一个非共享的内存区域,用于管理用户进程的私有资源 系统全局区(SGA) System Global Area 是所有用户进程共享的一块内存区