在Oracle中session和process的区别(转)

  • 对应元数据表

v$resource_limit。

  • 相互关系

sessions=1.1 * processes + 5 ,至于开多少个进程和你的用户并发数有关。

如果修改要修改数据库初始化参数,processes 和session

  • 在Oracle中session和process的区别

问:在Oracle中session和process的区别是什么?
答:一、一个process可以有0个、1个或者多个session,一个 session也可以存在若干个process中,并行同样是一个session对应一个process,主session是coordinator session,每个parallel process同样会对应数据库里一个单独的session。可以从v$px_session和v$session中验证这点。;
二、连接connects,会话sessions和进程pocesses的关系
每个sql login称为一个连接(connection),而每个连接,可以产生一个或多个会话,如果数据库运行在专用服务器方式,
一个会话对应一个服务器进程(process),如果数据库运行在共享服务器方式,一个服务器进程可以为多个会话服务。

三、A session is a specific connection of a user to an Oracle server.The session starts when the
user is validated by the Oracle server, and it ends when the user logs out or when there is an
abnormal termination.
In the UNIX environment, most Oracle processes are threads of one master Oracle
process rather than being individual processes. On Windows NT, all processes
consist of at least one thread.

  • 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.

    trace:http://fusnow.itpub.net/post/681/214188

    trace:http://searchdatabase.techtarget.com.cn/tips/459/3063959.shtml

[@more@]

时间: 2024-11-10 00:30:24

在Oracle中session和process的区别(转)的相关文章

Oracle中的Connect/session和process的区别及关系介绍_oracle

Session:在计算机中,尤其是在网络应用中,称为"会话". Session:在计算机专业术语中,Session是指一个终端用户与交互系统进行通信的时间间隔,通常指从注册进入系统到注销退出系统之间所经过的时间. Connect.session.process的区别: 一个数据库的Connect可以有一个或多个session,同时connect也可以有一个或多个process. 在专业服务器连接方式中,一个session对应一个process,在共享服务器方式中,一个process可以

ASP.NET中Session和Cache的区别总结

  这篇文章主要介绍了ASP.NET中Session和Cache的区别总结,本文结合使用经验,总结出了5点Session缓存和Cache缓存的区别,需要的朋友可以参考下 以前实现数据的缓存有很多种方法,有客户端的Cookie,有服务器端的Session和Application.其中Cookie是保存在客户端的一组数据,主要用来保存用户名等个人信息.Session则保存对话信息.Application则是保存在整个应用程序范围内的信息,相当于全局变量.通常使用最频繁的是Session,那么Sess

浅析Oracle中char和varchar2的区别

以下是对Oracle中char和varchar2的区别进行了分析介绍,需要的朋友可以过来参考下   char是定长的 char(10)   varchar2(10)  同样存 a ,char占用了10个字符,varchar2 只占用了 一个字符(一个中文占两个字符,英文占一个). 但是char的查询速度要比varchar2快.varchar2,Oracle还要进行语法分析,这个字段是多少位的,所以慢一些.相对于上千万的记录来说. 一般的项目 没什么区别,随便用.

Oracle 中 Object_iD 和 Data_Object_ID 的区别

Oracle 中 Object_iD 和 Data_Object_ID 的区别 转译自Aman Sharma的blog:http://blog.aristadba.com/?tag=data_object_id 是否有1个东西叫Data_object_id, 如果有的话,它是用来做什么的呢? 正巧,在OTN论坛也有人问这个问题.我当时并不清楚Data_object_id 是什么,但它的确在视图ALL_OBJECTS里存在. Hmmm..有趣,它到底是什么.ASK Tom最现在那个论坛里回答了,

【面试虐菜】—— Oracle中CHAR、VARCHAR的区别

1.CHAR. CHAR存储定长数据很方便,CHAR字段上的索引效率级高,比如定义char(10),那么不论你存储的数据是否达到了10个字节,都要占去10个字节的空间,不足的自动用空格填充,所以在读取的时候可能要多次用到trim(). 2.VARCHAR. 存储变长数据,但存储效率没有CHAR高.如果一个字段可能的值是不固定长度的,我们只知道它不可能超过10个字符,把它定义为 VARCHAR(10)是最合算的.VARCHAR类型的实际长度是它的值的实际长度+1.为什么"+1"呢?这一个

浅析php中session和cookie的区别和联系

首先谈谈cookie吧,百度百科是这样定义的:是网站为了辨别用户身份.进行session跟踪而存储在用户本地终端上的数据(通常经过加密).     php中生成一个cookie的方法很简单:setcookie(name, value, expire, path, domain);     name:cookie中定义的名字.     value:cookie中对name所保存的值.这个值保存在了用户的终端:不要保存敏感信息(个人重要信息,金钱).     expire:cookie中名值对保存的

Oracle中会话与事务的区别

一个会话可以启动多个事务,会话是session,指一次连接. 事务是指一个操作单元,要么成功,要么失败,没有中间状态. 会话中可以完成多个事务. 例如: 会话好比,在应用程序中连接数据库要执行连接,然后会关闭,这算一次会话. 事务呢,就好比在打开会话后要执行程序中的某一个或多个对数据库进行的操作. 事物的最好例子就是转账,从一个账户赚钱到另一个账户,两张表的数据修改,要么全成功,要门全变回原样. 会话看 v$session 事务看 v$transaction 这两张视图通过 v$session.

Oracle中sys和system的区别小结_oracle

1. SYS用户具有DBA权限,并且拥有SYS模式,只能通过SYSDBA登陆数据库.是Oracle数据库中权限最高的帐号 SYSTEM具有DBA权限.但没有SYSDBA权限.平常一般用该帐号管理数据库就可以了. 2. (1)sys -- sysdba system --sysoper (2)startup/shutdown/dba管理两个都能做 (3)sys拥有数据字典(dictionay),或者说dictionay属于sys schema (4)sysdba比sysoper多了一个create

ASP.NET中Session和Cache的区别总结_实用技巧

以前实现数据的缓存有很多种方法,有客户端的Cookie,有服务器端的Session和Application.其中Cookie是保存在客户端的一组数据,主要用来保存用户名等个人信息.Session则保存对话信息.Application则是保存在整个应用程序范围内的信息,相当于全局变量.通常使用最频繁的是Session,那么Session和Cache又有什么区别呢? 本节结合使用经验,详细介绍Session缓存和Cache缓存的区别. (1)最大的区别是Cache提供缓存依赖来更新数据,而Sessi