`
LJ你是唯一LT
  • 浏览: 243435 次
社区版块
存档分类
最新评论

oracle的主要进程

 
阅读更多
[size=small]oracle的主要进程
Oracle实例:
      Oracle实例包括一组后台进程以及这些进程所共享的内存,这些后台进程及其共享内存合起来就构成了Oracle实例.
Oracle数据库服务器:
      Oracle实例和数据库合起来又构成了Oracle数据库服务器.

[oracle@oratest archivelog]$ ps -ef|grep ora
oracle    5136     1  0 Dec15 ?        00:00:04 /u01/oracle/bin/tnslsnr tinadb -inherit
oracle    8292     1  0 Dec15 ?        00:00:08 ora_pmon_tinadb    --pmon进程
oracle    8294     1  0 Dec15 ?        00:00:08 ora_psp0_tinadb
oracle    8296     1  1 Dec15 ?        00:11:56 ora_vktm_tinadb
oracle    8300     1  0 Dec15 ?        00:00:01 ora_gen0_tinadb
oracle    8302     1  0 Dec15 ?        00:00:03 ora_diag_tinadb
oracle    8304     1  0 Dec15 ?        00:00:02 ora_dbrm_tinadb
oracle    8306     1  0 Dec15 ?        00:00:26 ora_dia0_tinadb
oracle    8308     1  0 Dec15 ?        00:00:04 ora_mman_tinadb
oracle    8310     1  0 Dec15 ?        00:00:02 ora_dbw0_tinadb    --dbwn进程
oracle    8312     1  0 Dec15 ?        00:00:10 ora_lgwr_tinadb    --lgwr进程
oracle    8314     1  0 Dec15 ?        00:00:11 ora_ckpt_tinadb    --ckpt进程
oracle    8316     1  0 Dec15 ?        00:00:02 ora_smon_tinadb    --smon进程
oracle    8318     1  0 Dec15 ?        00:00:00 ora_reco_tinadb    --reco进程
oracle    8320     1  0 Dec15 ?        00:00:11 ora_mmon_tinadb
oracle    8322     1  0 Dec15 ?        00:00:20 ora_mmnl_tinadb
oracle    8324     1  0 Dec15 ?        00:00:00 ora_d000_tinadb
oracle    8326     1  0 Dec15 ?        00:00:00 ora_s000_tinadb
oracle    8423     1  0 Dec15 ?        00:00:01 ora_arc0_tinadb    --ARCn进程
oracle    8425     1  0 Dec15 ?        00:00:00 ora_arc1_tinadb    --ARCn进程
oracle    8427     1  0 Dec15 ?        00:00:01 ora_arc2_tinadb    --ARCn进程
oracle    8429     1  0 Dec15 ?        00:00:00 ora_arc3_tinadb    --ARCn进程
oracle    8448     1  0 Dec15 ?        00:00:02 ora_smco_tinadb
root      9883  9838  0 10:25 pts/0    00:00:00 su - oracle
oracle    9884  9883  0 10:25 pts/0    00:00:00 -bash
oracle    9904     1  0 10:25 ?        00:00:01 oracletinadb (LOCAL=NO)  ---
oracle    9908     1  0 10:26 ?        00:00:00 oracletinadb (LOCAL=NO)
oracle    9937  9884  0 10:48 pts/0    00:00:00 sqlplus   as sysdba
oracle    9938  9937  0 10:48 ?        00:00:00 oracletinadb (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
root      9944  9854  0 10:50 pts/1    00:00:00 su - oracle
oracle    9945  9944  0 10:50 pts/1    00:00:00 -bash
root      9969  9870  0 10:51 pts/2    00:00:00 su - oracle
oracle    9970  9969  0 10:51 pts/2    00:00:00 -bash
oracle    9993     1  0 10:51 ?        00:00:00 ora_w000_tinadb
oracle   10004  9945  0 10:55 pts/1    00:00:01 rman target /
oracle   10009 10004  0 10:55 ?        00:00:00 oracletinadb (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
oracle   10011 10004  0 10:55 ?        00:00:00 oracletinadb (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
oracle   10012 10004  0 10:55 ?        00:00:00 oracletinadb (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
oracle   10039     1  0 11:01 ?        00:00:00 ora_w001_tinadb

这些都是oracle后台进程,不同的进程有不同的任务,对应不同的日志。
一、命名规则:ora_进程名称_SID

二、简单归纳:
SMON     系统监控进程
CKPT     检查点进程
LGWR     写日志进程
PMON     程序监控进程
ARCH     归档日志进程
DBW0     数据写进程

三、进程详细作用:
1、 PMON (The Process Monitor) 进程监控器:
    PMON进程负责监视数据库的处理情况,并负责清除死掉的进程。PMON还负责重启失败的调度进
程(dispatcher process)

    主要负责连接非正常中断后的清除工作,PMON负责释放相应的资源。PMON将回滚没有提交的工作,释放锁,释放分配给这个失败进程的Free SGA资源。
除了清理失败的连接之外,PMON还负责监控所有其它的Oracle后台进程,在必要的时候恢复或撤销其他进程,释放资源。比如一个 shared server或者
一个dispatcher fail的话, PMON将跟进,重起另一个相应的进程。如我们kill 掉oracle日志写进程,PMON会及时监控到,并shutdown数据库。

    另一个作用是向Oracle TNS 监听器注册实例。实例启动时,PMON进程会询问公认的端口地址(除非直接指定),来查看是否启动并运行了一个监听器

2、 SMON (The System Moniter) 系统监控器
    SMON进程负责在实例启动时恢复实例,包括清除临时段以及恢复因系统崩溃而中断的事物。
SMON还可以通过合并空闲分区的方式清除数据库中的碎片

    主要负责其它进程不想处理的工作的进程,是数据库的一种“垃圾回收站”,主要包括:
2.1)临时空间的清除;
    比如创建索引失败时,SMON将负责清除在创建索引过程当中分配出来的Temporary extent.
2.2)崩溃恢复;
2.3)Coalescing free space;
    这个是在字典管理的表空间才会有的,SMON将表空间中连续的空闲的extent,合并成一个大的free extent.这只能发生在字典管理的表空间,
    并且pctincrease 被设置成非零的时候。  
2.4)Recovering transactions active against unavailable files;
2.5)OPS中失败节点的实例恢复;在OPS中,当一个节点Fail,其它节点将打开失败节点的重做日志,对失败节点执行恢复(注意:实例恢复和崩溃恢复的区别)。
2.6)清除OBJ$;
2.7)Shrinks 回滚段;如果设置了Optimal,那么SMON将执行自动 Shrink 回滚段到Optimal 大小。
2.8)脱机 回滚段;
    举个例子,比如在切换回滚表空间的时候,由于可能之前的回滚表空间中有活动的事务,所以回滚表空间中的一些回滚段可能并不是真正的脱机,而只是标志为" Pending offline",
    要等到活动事务提交或回滚之后,相应的回滚段才算真正的脱机,而SMON则周期性的在后台去真正的脱机回滚段,直到回滚段真正的脱机为止。

3、CKPT (Checkpoint Process)
   CKPT进程并不像它的名字暗示的那样会进行一个checkpoint事件,它只是更新数据文件头。
   Oracle 8.0之前,CKPT是一个可选进程,之后就总是开启的了,更新数据文件头在CKPT出现之前这是LGWR的任务,但是后来随着文件数量增大,
   这个LGWR的附加任务变得太大而成为负担。于是就出现了CKPT,由CKPT分担着这部分任务。

   进程负责向DBWR进程发送信号,要求执行一次检查点,并更新数据库的所有数据和控制文件。
   CheckPoint(检查点),是指有DBWR进程将所有修改过的数据缓冲区写回数据文件,以辅助真正建立检查点的进程(DBWn)

4、DBWn (Database Block Writer)
   DBWn是一个负责将dirty blocks写到磁盘的后台进程,通常将dirty blocks写到磁盘是为了腾空更多的空闲空间(为了其它数据的读而释放缓冲区),
或者advance 一个检查点事件(也就是在发生故障实例恢复时, 将联机重做日志中Oracle开始读取的位置前移以节省实例恢复的时间),Log Switch
会触发一个Checkpoint,Oracle需要advance这个Checkpoint以至于在实例恢复时不需要这个刚被填满的online redo log,假如在重用这个日志之前,
不能完成这个advance Checkpoint的操作,则我们在alert将发现"Checkpoint not Compelete"信息,并且必须等待这个事件的完成。

    当一个事务修改数据块中的数据以后,不需要立即将数据块写回磁盘。由于Oracle所采用的先进机制,修改后的数据可以不用立即写回,
并且及时出现故障也不会丢失。因此,DBWR可以采取更有效写回方式,而不用再事务提交完之后立即写回。DBWR通常定时写回数据,除非数据缓冲区
需要清空或已满。
    数据写回时,采用了最近最少使用原则(least-recently-used).对于支持异步I/O的系统,只需使用一个BWR进程即可,对不支持
异步IO的可以通过增加DBWR的个数来提升效率。


5、LGWR (Log Writer)
    LGWR负责将日志缓冲区中的数据Redo log buffer (位于SGA中)写入重做日志。由于COMMIT操作依赖于LGWR写回日志(commit操
作触发LGWR将日志缓冲区数据写入UNDO日志),因此系统性能容易受到LGWR的影响。

   下面几种情况将会触发LGWR写log buffer:
5.1每三秒会刷新输出一次;
5.2当用户commit时;
5.3当重做日志缓冲区 1/3满 或者包含1M 的缓冲数据时。
    由于上面的原因,使用一个大于3M的重做日志缓冲区是不实际的——Oralce永远无法完全使用它。与DBWn必须执行分散的I/O 不同,
    重做日志是以顺序写入的方式写入的,这样执行大量的批写入更加有效率。

6、ARCn (Archive Process)
   ARCH(the Archiver Process )负责将在线重做日志online redo log复制到归档存储器。这些归档日志可以用来处理Media Recovery.
   比如你的system01.dbf文件丢失,那么你可以利用你一周前的备份,Restore 该数据文件。然后请求数据库应用从备份开始后的所有的归档日志和在线
   日志文件,这样的话,该数据文件就可以“追”上数据库中的其它的数据文件,然后我们可以继续processing,而不会丢失数据。
   实际上,备份是baseline,而日志是一种数据流,指向到系统crash的点,两者共同使用才能回到当前点  

   进档RDBMS运行在ARCHIVELOG模式时ARCH才有效,如果
   系统没有运行在ARCHIVELOG模式,则系统失效后可能无法恢复。系统运行在ARCHIVELOG模式下,此时归档进程可能有多个。
   SQL>archive log list  //查看是否为归档模式
   可以再数据库Mount 模式下开启归档
   SQL>alter database archivelog; //开启
   SQL>alter database noarchivelog;//关闭 

7、RECO (Distributed Database Recovery)
   RECO (the Recovery Process)进程用于清除分布式数据库中的未决(pending)事务,它负责分布式事务中本地部分的提交与回滚

8、cjq0 Job Queue Processes
        用于对job的协调,管理
       (1)当配置job_queue_processes时,会有Jnnn和CJQ0进程;
       (2)Jnnn进程最多可有1000个;
       (3)Jnnn进程在job之间是共享的,但同时每个Jnnn只能执行一个job,并且它使用的内存是在UGA中;
       (4)物化试图的刷新一般要用到job;
       (5)streams一般用到AQ;
       (6)CJQ0,做为jnnn的coordinator,它来控制jnnn的启动和关闭;
       (7)Jnnn进程只会在有job需要处理时才会启动;

9、 MMON,MMNL,Mnnn:Manageability Monitors
       (1)用于AWR(autmatic workload repository);
       (2)MMNL负责将SGA中的统计信息写入到表中;
       (3)MMON监控数据库性能,进行自动调优;
       (4)Mnnn属于MMON的帮手,帮助进行调优工作。

10、QMNC and Qnnn Processes:Job Queue
       (1)用于AQ功能;
       (2)Qnnn处理每个message queue,QMNC做为Qnnn的coordinator;
       (3)如果配置了aq_tm_processes,就会启动QMNC和Qnnn进程,不论有没有queue要处理,Qnnn都会全部启动;

11、Pnnn 并行进程,启动了并存处理的时候会有(并行查询,并行dml,并行ddl,并行回滚)    
 

[/size]
分享到:
评论

相关推荐

    Oracle服务进程如何处理用户进程的请求.doc

    ### Oracle服务进程如何处理用户进程的请求 Oracle数据库系统中,服务器进程负责处理来自客户端的各种请求,特别是SQL语句的执行。为了确保高效且安全地完成这些任务,Oracle设计了一系列复杂的内部机制。以下是对...

    oracle手动启动进程

    oracle手动启动,希望可以减少开机速度慢的问题

    Oracle 12c完整后台进程&内存结构图 DBA必备

    以下是 Oracle 12c 的主要后台进程: 1. PMON (Process Monitor):负责监控和管理数据库进程的生命周期。 2. PSP0 (Process Spawner):负责 spawn 新的服务器进程以响应客户端的连接请求。 3. Dnnn (Dispatchers):...

    oracle杀僵死进程

    ### Oracle杀僵死进程 在Oracle数据库管理过程中,经常会遇到僵死进程的问题,这些问题可能会导致数据库性能下降甚至无法正常运行。本文将详细介绍如何通过SQL查询定位僵死进程,并提供具体的解决方案,帮助解决如...

    如何解决Oracle杀死死锁进程

    解决 Oracle 杀死死锁进程 Oracle 杀死死锁进程是数据库管理员经常遇到的问题,本文将介绍解决 Oracle 杀死死锁进程的方法。 在 Oracle 中,死锁是指两个或多个会话在等待对方释放资源,从而导致互相阻塞的情况。...

    Oracle 简明进程架构

    本章节将详细介绍Oracle进程体系结构的基本概念、主要组件及其工作原理。 #### 二、进程简介 在操作系统中,**进程**是一种能够运行一系列步骤的机制。这一机制的具体实现形式依赖于所使用的操作系统。例如: - ...

    Oracle进程结构和后台进程简介

    Oracle进程结构及后台进程简介简单介绍Oracle进程一些概念。

    查看oracle进程,杀进程pb源程序

    在Oracle数据库中,进程主要分为用户进程和服务器进程。用户进程是由数据库用户启动的,用于执行SQL语句和PL/SQL块。服务器进程则是由数据库实例管理的,它们与用户进程交互,处理用户请求。有时,进程可能会陷入...

    Oracle进程及相关示意图

    下面我们将详细探讨其中的一些主要后台进程。 首先,数据库写进程(DBWRn)是负责将内存中的脏缓存块(即被修改但还未写入磁盘的数据块)写入数据文件的。DBWR进程使用LRU(最近最少使用)算法来决定哪些脏缓存块...

    Oracle服务进程启动或关闭批处理文件

    当安装好Oracle数据库之后,会自动运行几个Oracle服务进程,这些进程占用大量的内存空间,导致计算机运行卡顿甚至崩溃,直接运行批处理文件启动或关闭Oracle关联的服务进程,非常方便!

    oracle手动关闭进程

    oracle手动关闭进程,希望可以减少开机速度慢的问题

    oracle杀进程

    Oracle 杀进程 Oracle 杀进程是数据库管理员在日常工作中经常遇到的问题,特别是在数据库性能不佳或会话被锁死的情况下。因此,了解如何杀掉 Oracle 会话非常重要。本文将从 Oracle 数据库系统和操作系统两个方面...

    Oracle 11gR2 RAC 进程说明

    在深入探讨Oracle 11gR2 RAC(Real Application Clusters)的进程说明之前,我们首先需要理解Oracle Clusterware的基础概念以及它如何利用投票磁盘(Voting Disks)和Oracle Cluster Registry(OCR)来确保集群的...

    Oracle进程结构及后台进程简介

    多进程结构包括用户进程和Oracle进程,后者又细分为服务器进程和后台进程。 用户进程是用户应用程序的一部分,如PRO*C或SQL*PLUS,它们与服务器进程通信以执行SQL语句。服务器进程负责处理来自用户进程的请求,包括...

    Oracle后台进程

    日志写入进程(LGWR),又称为Log Writer Process,是Oracle数据库中至关重要的进程之一,主要负责将事务提交后的重做日志(redo log)从内存中的重做日志缓冲区写入到物理重做日志文件中。LGWR的触发时机包括但不...

    有效关闭Oracle死锁进程,和释放状态为killed的session

    在Oracle数据库管理中,处理死锁进程和释放状态为killed的session是一项关键技能,尤其对于维护数据库性能和稳定性至关重要。以下将详细阐述如何通过一系列步骤有效地关闭Oracle死锁进程,以及如何释放状态为killed...

    Oracle GoldenGate进程的合并与拆分规范

    在Oracle GoldenGate实施过程中,抽取进程的合并与拆分是十分重要的一个环节。抽取进程(Extract process)是GoldenGate中的核心组件之一,负责捕获源数据库的事务日志,并生成用于数据复制的数据提取文件。为了满足...

    oracle kill 进程

    ### Oracle Kill 进程详解 #### 一、概述 在Oracle数据库管理中,有时会遇到因为某些进程长时间运行导致系统响应变慢的情况。在这种情况下,管理员可能需要采取措施来终止这些进程,即“Kill”进程。本文将详细...

    oracle数据库所有进程官方文档

    Oracle数据库所有进程官方文档 Oracle数据库是一个复杂的关系数据库管理系统,它由多个进程组成,每个进程都承担着特定的任务。了解这些进程的作用和特点对于数据库的管理和维护非常重要。本文档将对Oracle数据库的...

Global site tag (gtag.js) - Google Analytics