oracle进程

在oracle实例中有3类进程:

1>服务器进程(server process)---这些进程基于客户端的请求来执行工作。我们已经在某种程度上研究了专用 的和共享 的服务器。这些都是服务器进程。

2>后台进程(background processes)--这些进程是伴随着数据库的启动而启动的,并执行各种维护工作,例如将块写入磁盘、维护联机重做日志、清理进程,等等。

3>从属进程(slave process)--这些进程类似于后台进程,但它们是代表后台进程或服务器进程执行额外工作的进程。

1.服务器进程

       专用服务器和共享服务器都有相同的作用---它们处理给予它们所有SQL。当给数据库提交一个“select * from emp”查询时,正是一个oracle专用/共享服务器,将分析那个查询,并将它放在共享池中(或已经从共享池中找到,共赢如此)。就是这个进程将提出查询方案。就是这人进程执行查询方案,也许是在缓冲区高速缓存 中查找需要的数据,或将数据从磁盘读取取缓冲区高速缓存里。这些服务器进程都是骨干进程。这些进程成为系统 上cpu时间的最大消耗者,是它们在进行排序,进程累计进行连接-- 几乎要完成所有的工作。

      在专用服务器模式下,在客户端会话和服务器进程(或线程,有时候会是线程)之间在在一对一的映射关系。如果在unix机器上有100个会话,那么将有100个进程在执行。

2.后台进程

      oracle实例由两个部分组成:SGA和一系列的后台进程。后台进程执行维持数据库运行所需的日常维护任务。例如,有一个维护块高速缓冲区高速缓存的进程,它将数据按需要从块中写入到数据文件中。另外一个进程负责将联机重做日志文件在它充满时将之复制到一个归档目标中。由另外一个进程负责将联机重做日志文件在它充满时将之复制到一个归档目标中。由另外一个进程负责在中断的进程后进行清除,诸如此类。这些进程中的每一个都很好地专注于它的工作上,但又能和全部其他的进程配合工作。

       有两类后台进程:正在完成集中任务的后台进程和做了大量其他工作的后台进程。

1>集中的后台进程

      在启动实例时,所有这些进程不是都 能看到的,但是它们中的多数将呈现出来。如果在归档日志模式中,并已经启用了自动归档,那么将只看到ARCn(归档器)。将只看到LMD0、LCKn、LMON和BSP进程,如果正在运行oracle并行服务器(Oracle的一种配置,允许许多实例在一个群集中的不同机器上装载),并打开相同的物理数据库。

     PMON---进程监控器

     这个进程负责在连接非正常中断的清除工作。例如,如果专用服务器“失败”或由于某种原因被破坏,PMON是负责释放资源的进程PMON将回流未提交的工作,释放锁,释放分配给失败进程的SGA资源。

      除了在中断连接后的清除工作以外,PMON负责监控其他oracle后台进程,并在需要的时候重新启动它们。如果一个共享服务器或分配器失败(崩溃),PMON将介入,并重新启动另一个信斯言也服务器或分配器(在清除失败的进程之后)。PMON将监控所有这些oracle进程,不是重新启动它们,就是在适当的时候中断实例。

      SMON----系统监控器

      SMON是完成其他进程不能完成的那些工作的进程。它是数据库的一种“垃圾回收器”。它负责的部分工作包含:

<1>清除临时空间----随着“真正”的临时表空间的出现,这个工作已经减少了,但并没有完全消失。例如,当构建一个索引时,在创建期间分配给索引的盘区标记为TEMPORARY(临时的)。如果CREATE INDEX(创建索引)会话由于某种原因中断,SMON将负责将它们清除。也有一些其他的操作可以创建由SMON负责的临时盘区。

<2>崩溃恢复----在启动时,SMON负责实施失败袜的崩溃恢复。

<3>聚结空闲空间----如果正在使用字典管理的表空间,SMON负责获得在表空间中空闲的盘区,将它们相互连接到一起,并将它们聚结成为一个“较大”的空闲盘区。这只能在字典管理的表空间中,使用默认的将pctncrease设置为非零的存储子句时才能发生。

<4>从不可用的文件中恢复事务的活动---这类似于在数据库启动期间的作用。SMON恢复失败的事务,这些事务在实例/崩溃恢复期间,由于 文件对于恢复不可用而忽略。例如文件可能在一个不可用的或没有装载的磁盘上。当文件变得 可用时,SMON将恢复它。

<5>OPS中失败节点 的实例恢复----在oracle并行服务器配置中,当聚簇中的一个节点宕机,实例中其他一些节点将打开失败节点的物是做日志文件,对那个失败的节点执行他问数据的恢复。

<6>清除OBJ$-----OBJ$是一个低级 的数据字典表,它对数据库中几乎所有的对象(表、索引、触发器、视图等)都包含一个入口。很多时候,这里的入口代表删除对象,或代表着“不在那里”的对象,于oracle的依赖机制。SMON是删除不再使用的行的进程

<7>缩减回滚段-----如果已经设置,SMON是执行将回滚段“脱机”或使其变得不可用,对DBA来说是可能的。活动事务可以使用脱机的回滚段。在这种情况下,回滚段不是真正脱机:它被标记为“挂起脱机(pending offline)”。SMON将周期性地在后台试图“真正地”使之脱机,直到它可以脱机为止。

      RECO------分布式的数据库恢复

       RECO有一个非常集中的工作,它恢复那些在两阶段提交(2pc)过程中,由于崩溃或斩首丢失而遗留在准备状态 的事务。2PC是一个分布式协议,它允许影响许多独立的数据库的修改能自动提交。它在提交前试图将尽可能多的分布式失败的窗口关闭。在N个数据库之间的2PC中,这些数据库中的一个,通常是(但不总是)客户端最初注册的那个数据库,将成为协调者。如果这些站点准备提交 的话,这个站点将请求其他的N-1个站点。该站点将进入N-1个站点,并要求它们做好提交 的准备。N-1站点中的每一个都向它报告它们的“准备状态”, 是YES或是NO.如果其中有一个站点报告为NO,那么,整个事务就被回滚。

      CKPT-----检查点进程

       CKPT并不像它的名字所暗示的那样处理检查点(那大多是DBWn的工作)。它是通过更新数据文件的头文件的头文件来协助检查点进程。

      DBWn----数据库块写入器

      数据库块写入器(DBWn)是一个后台进程,它负责将脏块写入磁盘。DBWn从缓冲区高速缓存中写出脏块,通常是为了在高速缓存 中腾出更多的空间,或增进一个检查点。

       DBWn的性能 是到头重要的。如果它将块写出的速度不能足够快地释放缓冲区,那么将等待FREE_BUFFER_WAITS,而且'write complete waits'开始增长。

      LGWR ------日志写入器

      LGWR进程负责将位于SGA中的重做日志缓冲区的内存刷新到磁盘。它以如下方式运行: <1>每3秒<2>提交时<3>当重做日志缓冲区1/3满时,或包含了1MB的缓存数据时。

      由于这些原因,拥有一个巨大的重做日志缓存是不实际的---oracle永远无法完全使用它。与DBWn必须执行的分散I/O不同,日志以顺序写入的方式写入。与分散地写入到文件中的不两只部分相比,像这样执行大量的批写入更加有效率。这是首先要有LGWR和重做日志的主要原因之一。使用顺序的I/O将更改的字节写出的效率起过了所带来的附加I/O。当提交时,oracle可以将数据库块直接写到磁盘上。但那样会需要 大量分散的、满的块I/O---这会明显慢于让LGWR顺序地将更改写出。

      ARCn---归档进程

      ARCn进程的工作是当LGWR填满联机重做日志是地,将其复制到另外的位置上。这些归档的联机重做日志文件将随后 用于实施介质恢复。然而,联机重做日志是在万一电源发生故障(在实例被终止时)时“修改”数据文件用的,归档重做日志是在万一硬盘发生故障时“修改”数据文件用的。如果丢失了包含数据文件/d01/oradata/ora8i/system.dbf的磁盘驱动器,可以找到上星期的备份,恢复文件的旧副本,并请求数据库应用所有的归档重做日志和在备份发生之后生成的联机重做日志。这将用数据库中数据文件的其他部分来“弥补”那个文件,可以继续处理,而不会数据损失。

      ARCn参演将联机重做日志文件复制到至少两个其他位置(冗余是使数据不丢失的一个关键)。这些其他位置可能是本机器上的磁盘,或者,至少有一个磁盘完全位于另外一台机器上,后者更为合适。这样即使发生灾难性的故障也不怕。在许多情况下, 这些归档的重做日志文件由一些其他的进程复制到一些三级存储设备,如磁带上。它们也可 以发送到另外一台机器上,应用为“备用数据库”,备用数据库是由Oracle提供的故障恢复选项。

     BSP----块服务器进程

     本进程专门用于oracle并行服务器(ops)环境。ops是oracler 的一个配置,籍此,一个以上的整合装载并打开相同的数据库。在此情况下,每一个oracle的实例在聚簇中不同的机器上运行,它们都 以读写 的方式访问完全相同的数据库文件组。

      为此,SGA块缓冲区必须保持相互一致。这是BSP的主要目标。在OPS的早期版本中,这是能过ping来完成 的。也就是说,如果簇中的每一个节点需要一个块的读取的一致的视图,且此块被另一个节点锁定为独占模式,那么,数据的交换就通过磁盘刷新来完成(块己被ping)。这是一个非常昂贵的操作,它只是读取数据。现在,通过BSP,此数据互换在聚簇之间的高速连接上通过非常快的高速缓冲存储器对高速缓冲存储器间交换来完成。

     LMON---锁定监控进程

     本进程专门用于OPS环境。LMON进程监控聚簇中的所有进程,检测实例 的失败。它随后,通过与聚簇硬件使用的分布式锁定管理器(DLM,distrbuted lock manager)配合,实现由失败实例保存的全局块的恢复。

     LMD--- 锁定管理器守护程序

     本进程专门用于OPS环境。LMD进程控制聚簇环境中的块缓冲区缓存高速的全局锁和全局资源。其他实例将本地LMD发出请求,请求它释放锁,或帮助找出谁拥有锁。LMD也处理全局死锁 的检测与解决。

     LCKn----锁定进程

     LOCn进程专门用于OPS环境。此进程非常类似于上面 LMD所描述的功能。但它处理所有全局资源的请求,而不是数据库块缓冲区的请求。

3.实用程序后台进程

     这些后台乾全部都 是可选的,根据对它们的需求进程选择。它们提供的功能 并不是日常运行数据库所需要的。

4.从属进程

oracle有两种类型的人性进程即I/O从属进程和并行查询人性进程。

 

 

 

 

 

 

 

 

 

 

     

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值