1. 怎么查看自己的oracle是共享还是专用服务器

2. 怎么修改设置

3.各有什么优缺点

4.适用环境

对于专用服务器,每一个数据库连接,oracle都会分配一个专门的进程为其服务

oracle@ora10g:~$ ps -aef | grep orcl

oracle    2096  2064  0 08:38 ?        00:00:01 oracleorcl (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
oracle    2252  2251  2 09:09 ?        00:00:00 oracleorcl (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))

对于共享服务器,oracle不会为每个连接建立一个服务进程, 而是通过一个调度程序,从共享进程池中调度一个进程为其服务。

检查你的oracle是专用服务器还是共享,要查看你的tnsnames.ora配置文件 , 如下这个就是用的专用服务器方式连接的。Oracle 网络监听程序会根据这个文件做相应处理,如果是专用服务器就fork, exec一个服务进程。如果是共享服务器,就通过调度程序找到服务进程。

ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = ora10g.localhost.com)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )

专用 一个Server process为一个用户服务,主要用于业务时间较长,用户数不多的情况
共享模式 一个Server process为多个用户服务,主要用于业务时间较短,用户数量比较大的应用

下面是转载来的【http://www.cnblogs.com/programwjy/archive/2010/08/24/1807249.html】

####################################################################

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 体系结构2 - 共享和专用服务器的更多相关文章

  1. Oracle体系结构之进程

    Oracle体系结构之进程 一.概述 Oracle中的每个进程都要执行一个特定的任务(或者一组任务),每个进程都会为自己分配内存(PGA)来完成它的任务.一个Oracle实例主要有以下3类进程: (1 ...

  2. Oracle 体系结构chapter2

    前言:Oracle 体系结构其实就是指oracle 服务器的体系结构,数据库服务器主要由三个部分组成 管理数据库的各种软件工具(sqlplus,OEM等),实例(一组oracle 后台进程以及服务器中 ...

  3. 【转】oracle 体系结构

    前几天面试的时候面试官才问过我Oracle的体系结构,让我在一张白纸上画出来.回头想想当时答得还不错,大部分内容都描述出来了,呵呵,刚才在网上看到一篇讲解ORACLE体系结构的文章,觉得不错,转过来存 ...

  4. oracle11g之Oracle体系结构(理论基础知识)

    第二章 oracle的体系结构 一.oracle体系结构概述1.实例和数据库组成完整的Oracle数据库系统数据库:一系列物理文件的集合(数据文件,控制文件,联机日志,参数文件等)实例:一组oracl ...

  5. 转:oracle 体系结构

    前几天面试的时候面试官才问过我ORACLE的体系结构,让我在一张白纸上画出来.回头想想当时答得还不错,大部分内容都描述出来了,呵呵,刚才在网上看到一篇讲解ORACLE体系结构的文章,觉得不错,转过来存 ...

  6. oracle 体系结构

    oracle 体系结构 数据库的体系结构是指数据库的组成.工作过程与原理,以及数据在数据库中的组织与管理机制. 1. oracle工作原理: 1).在数据库服务器上启动Oracle实例:2).应用程序 ...

  7. Oracle实例和Oracle数据库(Oracle体系结构)

    --========================================== --Oracle实例和Oracle数据库(Oracle体系结构) --==================== ...

  8. 【转载】Oracle实例和Oracle数据库(Oracle体系结构)

    免责声明:     本文转自网络文章,转载此文章仅为个人收藏,分享知识,如有侵权,请联系博主进行删除.     原文作者:Leshami      原文地址:http://blog.csdn.net/ ...

  9. oracle 体系结构解析

    三.oracle 体系结构 1.oracle内存由SGA+PGA所构成 2.oracle数据库体系结构数据库的体系结构是指数据库的组成.工作过程与原理,以及数据在数据库中的组织与管理机制. oracl ...

随机推荐

  1. 《Apache数据传输加密、证书的制作》——涉及HTTPS协议

    首先了解http和https: HTTPS(Secure Hypertext Transfer Protocol)安全超文本传输协议. HTTPS和HTTP的区别: http是超文本传输协议,信息是明 ...

  2. 51nod贪心算法入门-----完美字符串

    约翰认为字符串的完美度等于它里面所有字母的完美度之和.每个字母的完美度可以由你来分配,不同字母的完美度不同,分别对应一个1-26之间的整数. 约翰不在乎字母大小写.(也就是说字母F和f)的完美度相同. ...

  3. centos问题集锦

    一. 为什么新装的centos系统无法使用xshell,putty等工具连接? 原因:sshd服务没有启动. 解决: 1)使用命令rpm -qa | grep ssh查看是否已经安装了ssh 2)使用 ...

  4. ASP 连接 MySQL 数据库两种方法

    一般都是用myodbc来连接.首先,在系统中安装 Mysql 的ODBC数据库驱动.如安装稳定版本是3.51.下载地址是:http://dev.mysql.com/downloads/connecto ...

  5. CLR via C# 计算限制的异步操作读书笔记

    1. 使用线程池搪行简单的计算限制操作 ThreadPool.QueueUserWorkItem(WaitCallback callback) 2.CLR默认情况下自动使初始线程的执行上下文流向辅助线 ...

  6. pyQuery

    pyquery – PyQuery complete API 选择器基本支持jQuery用法 class pyquery.pyquery.PyQuery(*args, **kwargs) The ma ...

  7. 1093. Count PAT's (25)

    The string APPAPT contains two PAT's as substrings. The first one is formed by the 2nd, the 4th, and ...

  8. python之函数式编程

    python提供了支持函数式编程的简单机制: 1. map函数 2. filter函数 3. reduce函数. 典型的M/R计算模型. 但还是有点简单...

  9. [ios]scrollView实现移动与缩放

    实现滑动 1.在viewDidLoad中对scrollview的contentSize属性赋值 告诉他滑动范围. 实现缩放 1.在storyboard的scrollview的attribute标签中设 ...

  10. html和css中的技巧

    1:标签不要忘记带点 2:div是否成对的出现. 3.body 前面不能加点 4.在写css时记住一定要带上class的命名这样就不会出现重复的 5.出现文字的时候下面有下划线或虚线的时候,用padd ...