qmnc,q000:在10g中aq_tm_processes没有办法控制qmnc进程的,无论如何设置aq_tm_processes它还是会存在的
job_queue_processes,无论这个参数如何设置,cjq0都会存
在UNIX中,这些进程可以像其他后台进程一样可见,如果你执行ps命令,就能看到这些进程。在介绍中心后台进程那一节的开始,我列出了ps命令的执行结果(这里列出其中一部分),可以看到,我有以下进程:
q 配置了作业队列。CJQ0进程是作业队列协调器(job queue coordinator)。
q 配置了Oracle AQ,从Q000(AQ队列进程,AQ queue process)和QMNC(AQ监视器进程,AQ monitor process)可以看出。
q 启用了自动设置SGA大小,由内存管理器(memory manager ,MMAN)进程可以看出。
q 启用了Oracle 10g可管理性/诊断特性,由可管理性监视器(manageability monitor,MMON)和可管理性监视器灯(manageability monitor light,MMNL)进程可以看出。
下面来看看根据所用的特性可能会看到哪些进程。
1. CJQ0和Jnnn进程:作业队列
在第一个7.0 版本中,Oracle通过一种称为快照(snapshot)的数据库对象来提供复制特性。作业队列就是刷新快照(或将快照置为当前快照)时使用的内部机制。
作业队列进程监视一个作业表,这个作业表告诉它何时需要刷新系统中的各个快照。在Oracle 7.1中,Oracle公司通过一个名为DBMS_JOB的数据库包来提供这个功能。所以,原先7.0中与快照相关的进程到了7.1及以后版本中变成了“作业队列”。后来,控制作业队列行为的参数(检查的频度,以及应该有多少个队列进程)的名字也发生了变化,从 SNAPSHOT_REFRESH_INTERVAL和SNAPSHOT_REFRESH_PROCESSES变成了JOB_QUEUE_INTERVAL和JOB_QUEUE_PROCESSES。在当前的版本中,只有JOB_QUEUE_PROCESSES参数的设置是用户可调的。
最多可以有1 000个作业队列进程。名字分别是J000,J001,…,J999。这些进程在复制中大量使用,并作为物化视图刷新进程的一部分。基于流的复制(Oracle9i Release 2中新增的特性)使用AQ来完成复制,因此不使用作业队列进程。开发人员还经常使用作业队列来调度一次性(后台)作业或反复出现的作业,例如,在后台发送一封电子邮件,或者在后台完成一个长时间运行的批处理。通过在后台做这些工作,就能达到这样一种效果:尽管一个任务耗时很长,但在性急的最终用户看来所花费的时间并不多(他会认为任务运行得快多了,但事实上可能并非如此)。这与Oracle用LGWR和DBWn进程所做的工作类似,他们在后台做大量工作,所以你不必实时地等待它们完成所有任务。
Jnnn进程与共享服务器很相似,但是也有专用服务器中的某些方面。它们处理完一个作业之后再处理下一个作业,从这个意义上讲是共享的,但是它们管理内存的方式更像是一个专用服务器(其UGA内存在PGA中,而不是在SGA中)。每个作业队列进程一次只运行一个作业,一个接一个地运行,直至完成。正因为如此,如果我们想同时运行多个作业,就需要多个进程。这里不存在多线程或作业的抢占。一旦运行一个作业,就会一直运行到完成(或失败)。
你会注意到,经过一段时间,Jnnn进程会不断地来来去去,也就是说,如果配置了最多1 000个Jnnn进程,并不会看到真的有1 000个进程随数据库启动。相反,开始时只会启动一个进程,即作业队列协调器(CJQ0),它在作业队列表中看到需要运行的作业时,会启动Jnnn进程。如果Jnnn进程完成其工作,并发现没有要处理的新作业,此时Jnnn进程就会退出,也就是说,会消失。因此,如果将大多数作业都调度为在凌晨2:00运行(没有人在场),你可能永远也看不到这些Jnnn进程。
2. QMNC和Qnnn:高级队列
QMNC进程对于AQ表来说就相当于CJQ0进程之于作业表。QMNC进程会监视高级队列,并警告从队列中删除等待消息的“出队进程”(dequeuer):已经有一个消息变为可用。QMNC和Qnnn还要负责队列传播(propagation),也就是说,能够将在一个数据库中入队(增加)的消息移到另一个数据库的队列中,从而实现出队(dequeueing)。
Qnnn进程对于QMNC进程就相当于Jnnn进程与CJQ0进程的关系。QMNC进程要通知Qnnn进程需要完成什么工作,Qnnn进程则会处理这些工作。
QMNC和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体系结构的一部分,用于通知对某些消息感兴趣的队列订购者。通知会异步地完成。可以用一些Oracle调用接口(Oracle Call Interface,OCI)函数来注册消息通知的回调。回调是OCI程序中的一个函数,只要队列中有了订购者感兴趣的消息,就会自动地调用这个函数。EMNn后台进程用于通知订购者,第一次向实例发出通知时会自动启动EMNn进程。然后应用可以发出一个显式的message_receive(dequeue)来获取消息。
4. MMAN:内存管理器(Memory Manager)
这个进程是Oracle 10g 中新增的,自动设置SGA大小特性会使用这个进程。MMAN进程用于协调共享内存中各组件(默认缓冲区池、共享池、Java池和大池)的大小设置和大小调整。
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进程负责维护新的修改跟踪文件,有关内容见第3章的介绍。
7. RVWR:恢复写入器(Recovery Writer)
这个进程也是Oracle 10g数据库中新增的一个可选进程,负责维护闪回恢复区中块的“前”映像(见第3章的介绍),要与FLASHBACK DATABASE命令一起使用。
from:http://book.csdn.net/bookfiles/82/100827116.shtml
[@more@]来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/633084/viewspace-1016793/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/633084/viewspace-1016793/