3->oracle 后台进程详解

来源:互联网 发布:淘宝降权 编辑:程序博客网 时间:2024/04/28 12:29

在linux查询 oracle所有的 后台进程


 ps -ef | grep ora_   

输出结果:

[oracle@localhost /root]$ ps -ef | grep ora_
oracle    6285     1  0 Feb05 ?        00:01:39 ora_pmon_ypcg
oracle    6287     1  0 Feb05 ?        00:00:22 ora_psp0_ypcg
oracle    6289     1  0 Feb05 ?        00:00:20 ora_mman_ypcg
oracle    6291     1  0 Feb05 ?        00:30:58 ora_dbw0_ypcg
oracle    6293     1  0 Feb05 ?        00:30:38 ora_dbw1_ypcg
oracle    6295     1  0 Feb05 ?        00:10:53 ora_lgwr_ypcg
oracle    6297     1  0 Feb05 ?        00:02:22 ora_ckpt_ypcg
oracle    6299     1  0 Feb05 ?        00:00:49 ora_smon_ypcg
oracle    6301     1  0 Feb05 ?        00:00:00 ora_reco_ypcg
oracle    6303     1  0 Feb05 ?        00:01:58 ora_cjq0_ypcg
oracle    6305     1  0 Feb05 ?        00:01:19 ora_mmon_ypcg
oracle    6307     1  0 Feb05 ?        00:02:04 ora_mmnl_ypcg
oracle    6309     1  0 Feb05 ?        00:00:00 ora_d000_ypcg
oracle    6311     1  0 Feb05 ?        00:00:00 ora_s000_ypcg
oracle    6317     1  0 Feb05 ?        00:00:01 ora_qmnc_ypcg
oracle    6327     1  0 Feb05 ?        00:00:14 ora_q000_ypcg
oracle    6335     1  0 Feb05 ?        00:00:03 ora_q001_ypcg
oracle    8795     1  0 21:17 ?        00:00:00 ora_j000_ypcg


其中 PMON,SMON,CKPT,DBWn(其中 n是个数字) LGWR 为必须启动的进程 其他 进程为可选启动进程

下面具体介绍 :(转载)


后台进程

 

可以使用一个V$视图查看所有可能的Oracle后台进程,确定你的系统中正在使用哪些后台进程:select paddr, name, description from v$bgprocess order by paddr desc

 

有两类后台进程:有一个中心(focused)任务的进程(如前所述)以及完成各种其他任务的进程(即工具进程)。

 

主要的Oracle后台进程:

1. PMON:进程监视器(Process Monitor)

这个进程负责在出现异常中止的连接之后完成清理。PMON会回滚未提交的工作,并释放为失败进程分配的SGA资源。PMON还负责监视其他的Oracle后台进程,并在必要时(如果可能的话)重启这些后台进程。PMON还会为实例做另一件事,这就是向Oracle TNS监听器注册这个实例。实例启动时,PMON进程会询问公认的端口地址(除非直接指定),来查看是否启动并运行了一个监听器。

 

2. SMON:系统监视器(System Monitor)

SMON进程要完成所有“系统级”任务。是一种数据库“垃圾收集器”。SMON所做的工作包括:

l         清理临时空间:例如,建立一个索引时,创建时为索引分配的区段标记为TEMPORARY。如果出于某种原因CREATE INDEX会话中止了,SMON就要负责清理。其他操作创建的临时区段也要由SMON负责清理。

l         合并空闲空间:如果你在使用字典管理的表空间,SMON要负责取得表空间中相互连续的空闲区段,并把它们合并为一个更大的空闲区段。

l         针对原来不可用的文件恢复活动的事务:这类似于数据库启动时SMON的作用:SMON会恢复一些失败的活动事务。

l         执行RAC中失败节点的实例恢复:在一个Oracle RAC配置中,集群中的一个数据库实例失败时,为该失败实例完成所有数据的恢复。

l         清理OBJ$:OBJ$是一个低级数据字典表,SMON进程删除这些不再需要的行。

l         收缩回滚段:如果有设置,SMON会自动将回滚段收缩为所设置的最佳大小。

l         “离线”回滚段。

除此之外,它还会做许多其他的事情,如将DBA_TAB_MONITORING视图中的监视统计信息刷新输出,将SMON_SCN_TIME表中的SCN-时间戳映射信息刷新输出等。

 

3. RECO:分布式数据库恢复(Distributed Database Recovery)

RECO有一个很中心的任务:由于两段提交(two-phase commit,2PC)期间的崩溃或连接丢失等原因,有些事务可能会保持准备状态,这个进程就是要恢复这些事务。可疑的分布式事务可能导致写入器阻塞读取器(Oracle中只有此时会发生“写阻塞读”的情况)。

 

4. CKPT:检查点进程(Checkpoint Process)

检查点进程并不像它的名字所暗示的那样真的建立检查点,建立检查点主要是DBWn的任务。CKPT只是更新数据文件的文件首部,以辅助真正建立检查点的进程(DBWn)。

 

5. DBWn:数据库块写入器(Database Block Writer)

数据库块写入器(DBWn)是负责将脏块写入磁盘的后台进程。DBWn会写出缓冲区缓存中的脏块,通常是为了在缓存中腾出更多的空间(释放缓冲区来读入其他数据),或者是为了推进检查点(将在线重做日志文件中的位置前移,如果出现失败,Oracle会从这个位置开始读取来恢复实例)。

 

6. LGWR:日志写入器(Log Writer)

LGWR进程负责将SGA中重做日志缓冲区的内容刷新输出到磁盘。如果满足以下某个条件,就会做这个工作:

l         每3秒会刷新输出一次

l         任何事务发出一个提交时

l         重做日志缓冲区1/3满,或者已经包含1 MB的缓冲数据

 

7. ARCn:归档进程(Archive Process)

ARCn进程的任务是:当LGWR将在线重做日志文件填满时,就将其复制到另一个位置。

 

8. 其他中心进程

自动存储管理后台(Automatic Storage Management Background,ASMB)进程。

重新平衡(Rebalance,RBAL)进程。

 

以下进程是RAC环境所特有的,如果不是RAC环境,则看不到这些进程。

锁监视器(Lock monitor,LMON)进程:LMON监视集群中的所有实例,检测是否有实例失败。这有利于恢复失败实例持有的全局锁。

锁管理器守护(Lock manager daemon,LMD)进程。

锁管理器服务器(Lock manager server,LMSn)进程。

锁(Lock, LCK0)进程。

可诊断性守护(Diagnosability daemon, DIAG)进程。

 

5.2.2  工具后台进程

 

1. CJQ0和Jnnn进程:作业队列

Jnnn进程会不断地来来去去,也就是说,如果配置了最多1 000个Jnnn进程,并不会看到真的有1 000个进程随数据库启动。相反,开始时只会启动一个进程,即作业队列协调器(CJQ0),它在作业队列表中看到需要运行的作业时,会启动Jnnn进程。如果Jnnn进程完成其工作,并发现没有要处理的新作业,此时Jnnn进程就会退出,也就是说,会消失。

 

2. QMNC和Qnnn:高级队列

QMNC进程对于AQ表来说就相当于CJQ0进程之于作业表。Qnnn进程对于QMNC进程就相当于Jnnn进程与CJQ0进程的关系。QMNC进程要通知Qnnn进程需要完成什么工作,Qnnn进程则会处理这些工作。

参数AQ_TM_PROCESSES 可以指定最多创建10个这样的进程(分别名为Q000,…,Q009),以及一个QMNC进程。如果AQ_TM_PROCESSES设置为0,就没有QMNC或Qnnn进程。不同于作业队列所用的Jnnn进程,Qnnn进程是持久的。如果将 AQ_TM_PROCESSES设置为10,数据库启动时可以看到10个Qnnn进程和一个QMNC进程,而且在实例的整个生存期中这些进程都存在。

 

3. EMNn:事件监视器进程(Event Monitor Process)

EMNn进程是AQ体系结构的一部分,用于通知对某些消息感兴趣的队列订购者。

 

4. MMAN:内存管理器(Memory Manager)

这个进程是Oracle 10g 中新增的,自动设置SGA大小特性会使用这个进程。

 

5. MMON、MMNL和Mnnn:可管理性监视器(Manageability Monitor)

这些进程用于填充自动工作负载存储库(Automatic Workload Repository,AWR),这是Oracle 10g中新增的一个特性。MMNL进程会根据调度从SGA将统计结果刷新输出至数据库表。MMON进程用于“自动检测”数据库性能问题,并实现新增的自调整特性。Mnnn进程类似于作业队列的Jnnn或Qnnn进程;MMON进程会请求这些从属进程代表它完成工作。Mnnn进程本质上是临时性的,它们将根据需要来来去去。

 

6. CTWR:修改跟踪进程(Change Tracking Process)

这是Oracle 10g数据库中新增的一个可选进程。CTWR进程负责维护新的修改跟踪文件。

 

7. RVWR:恢复写入器(Recovery Writer)

这个进程也是Oracle 10g数据库中新增的一个可选进程,负责维护闪回恢复区中块的“前”映像,要与FLASHBACK DATABASE命令一起使用。

 

5.3  从属进程

从属进程(slave process)。Oracle中有两类从属进程:I/O从属进程和并行查询从属进程。

 

5.3.1  I/O从属进程

 

I/O从属进程用于为不支持异步I/O的系统或设备模拟异步I/O。采用这种方式,可以得到更高的吞吐量,这是因为会由I/O从属进程来等待慢速的设备,而原来的调用进程得以脱身,可以做其他重要的工作来收集下一次要写的数据。

I/O从属进程在Oracle中有两个用途。DBWn和LGWR可以利用I/O从属进程来模拟异步I/O,另外RMAN写磁带时也可能利用I/O从属进程。

 

有两个参数控制着I/O从属进程的使用:

BACKUP_TAPE_IO_SLAVES:这个参数指定RMAN是否使用I/O从属进程将数据备份、复制或恢复到磁带上。这个参数是一个布尔值,而不是所用从属进程的个数(这可能出乎你的意料)。

DBWR_IO_SLAVES:这个参数指定了DBW0进程所用I/O从属进程的个数。

DBWR I/O从属进程的名字是I1nn,LGWR I/O从属进程的名字是I2nn,这里nn是一个数。

 

5.3.2  并行查询从属进程

使用并行查询时,会看到名为Pnnn的进程,这些就是并行查询从属进程。处理一条并行语句时,服务器进程则称为并行查询协调器(parallel query coordinator)。操作系统上服务器进程的名字并不会改变,如果提到了协调器进程,你应该知道这就是原来的服务器进程。


原创粉丝点击