Oracle服务器进程

Oracle实例包含三种主要进程:服务器进程(server process)、后台进程(background process)和从属进程(slave process)。服务器进程分为专用服务器和共享服务器。专用服务器为每个连接提供一个单独的进程,而共享服务器允许多个会话共享进程池。在共享服务器模式下,调度器处理连接请求并将任务分配给服务器进程。连接与会话是独立的,一个连接可以有多个会话,但一个会话也可以独立于连接存在。选择专用服务器还是共享服务器取决于事务的性质和系统需求。
摘要由CSDN通过智能技术生成

Oracle中的各个进程要完成某个特定的任务或一组任务,每个进程都会分配内部内存(PGA内存)来完成它的任务。

Oracle实例主要有3类进程:

A 服务器进程 server process
根据客户的请求来完成工作。专用/共享服务器,就是服务器进程

B 后台进程 background process
随数据库而启动,完成各种维护任务,如将块写至磁盘、维护在线重做日志、清理异常中止的进程等。

C 从属进程 slave process

类似于后台进程,不过它们要代表后台进程或服务器进程完成一些额外的工作。


A服务器进程

代表客户会话完成工作的进程。应用向数据库发送的SQL语句最后就要由这些进程接收并执行。

dedicated server连接
会在服务器上得到针对这个连接的一个专用进程。数据库连接与服务器上的一个进程之间存在一对一的映射。

shared server
多个会话可以共享一个服务器进程池,其中的进程由Oracle实例生成和管理。

你所连接的是一个数据库调度器(dispatcher),而不是特意为连接创建的一个专用服务器进程。


专用or共享 服务器进程的任务是一样的:要处理你提交的所有SQL。当你向数据库提交一个SELECT * FROM EMP查询时,会有一个Oracle专用/共享服务器进程解析这个查询并把它放在共享池中(或者最好能发现这个查询已经在共享池中)。这个进程要提出查询计划,如果必要,还要执行这个查询计划可能在缓冲区缓存中找到必要的数据,或者将数据从磁盘读入缓冲区缓存中。这些服务器进程是干重活的进程。在很多情况下,你都会发现这些进程占用的系统CPU时间最多,因为正是这些进程来执行排序、汇总、联结等等工作,几乎所有工作都是这些进程做的。

------------------------------------------------------------------------专用服务器

客户应用中链接着Oracle库,这些库提供了与数据库通信所需的API。这些API知道如何向数据库提交查询,并处理返回的游标。它们知道如何把你的请求打包为网络调用,专用服务器则知道如何将这些网络调用解开。这部分软件称为Oracle Net,这是一个网络软件/协议,Oracle利用这个软件来支持客户/服务器处理(即使在一个n层体系结构中也会“潜伏”着客户/服务器程序)。不过,即使从技术上讲没有涉及Oracle Net,Oracle也采用了同样的体系结构。也就是说,即使客户和服务器在同一台机器上,也会采用这种两进程(也称为两任务)体系结构。这个体系结构有两个好处:
1.远程执行(remote execution):客户应用可能在另一台机器上执行(而不是数据库所在的机器)
2.地址空间隔离(address space isolation):服务器进程可以读写SGA。如果客户进程和服务器进程物理地链接在一起,客户进程中一个错误的指针就能轻松地破坏SGA中的数据结构。

可以在同一台机器上运行客户和服务器,就能很清楚地看出这种父/子进程的创建

scott@ORCL>select a.spid dedicated_server,
  2  b.process clientpid
  3  from v$process a, v$session b
  4  where a.addr = b.paddr
  5  and b.sid = (select sid from v$mystat where rownum=1)
  6  /

DEDICATED_SERVER         CLIENTPID
------------------------ ------------------------
5748                     1408:3388

查询与专用服务器相关联的进程ID(PID),从V$PROCESS得到的SPID是执行该

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值