<ORACLE进程-后台工具进程>
ORACLE体系结构:数据文件、内存、进程
    ORACLE数据库:实例(内存/进程)和数据库(数据文件)
 
    LINUX/UNIX操作系统中,oracle的各个进程都是同一个二进制可执行程序(ORACLE),对于每个中心进程,没有一个单独的可执行文件.这些进程都是ORACLE在启动某个程序时对自已建立了别名,以便更容易标识各个进程.
 
    CJQ0Jnnn进程:作业队列
    JOB_QUEUE_PROCESSES参数的设置是用户可调的
    最多可以有1 000个作业队列进程:J000J001J999
    Jnnn进程处理完一个作业后再处理下一个作业.每个作业队列进程一次只运行一个作业,直至完成.如果需同时运行多个作业,就需多个进程.这里不存在多线程或作业的抢占,一旦运行一个作
业,就会一直运行到完成(或失败),Jnnn进程退出.
    ORACLE在开始时只会启动一个进程,即作业队列协调器(CJQ0),它在作业队列表中看到需要运行的作业时,才会启动Jnnn进程。如果Jnnn进程完成其工作,并发现没有要处理的新作业,此时Jnnn进程就会退出.
 
   QMNCQnnn:高级队列
    基于流的复制QMNC使用AQ来完成复制,因此不使用作业队列进程.QMNC进程对于AQ表来说就相当于CJQ0进程之于作业表.
    QMNC进程会监视高级队列,并警告从队列中删除等待消息的出队进程(dequeuer).
    QMNCQnnn还要负责队列传播(propagation),即能够将在一个数据库中入队(增加)的消息移到另一个数据库的队列中,从而实现出队(dequeueing).
    QMNC进程要通知Qnnn进程需要完成什么工作,Qnnn进程则会处理这些工作.
    参数AQ_TM_PROCESSES指定最多创建10Qnnnn进程:Q000Q009,以及一个QMNC进程.如果AQ_TM_PROCESSES设置为0,就没有QMNCQnnn进程.
    Qnnn进程是持久的.若将AQ_TM_PROCESSES设置为10,数据库启动时可以看到10Qnnn进程和一个QMNC进程,且在实例的整个生存期中这些进程都存在.
 
    EMNn:事件监视器进程(Event Monitor Process
    AQ体系结构的一部分,用于通知对某些消息感兴趣的队列订购者.通知会异步地完成.
    可用Oracle调用接口(Oracle Call InterfaceOCI)函数来注册消息通知的回调为什么oracle网站进不去.回调是OCI程序中的一个函数,只要队列中有了订购者感兴趣的消息,就会自动地调用这个函数.
 
    MMAN:内存管理器(Memory Manager
    自动设置SGA大小特性会使用这个进程.
    MMAN进程用于协调共享内存中各组件(默认缓冲区池、共享池、Java池和大池)的大小设置和大小调整.
    MMONMMNLMnnn:可管理性监视器(Manageability Monitor)
    这些进程用于填充自动工作负载存储库(Automatic Workload RepositoryAWR)
    MMNL进程会根据调度从SGA将统计结果刷新输出至数据库表.
    MMON进程用于自动检测数据库性能问题,并实现新增的自调整特性.MMON进程会请求这些从属进程代表它完成工作.
    Mnnn进程本质上是临时性的,它们将根据需要来来去去。
 
    CTWR:修改跟踪进程(Change Tracking Process
    负责维护新的修改跟踪文件
 
    RVWR:恢复写入器(Recovery Writer
    负责维护闪回恢复区中块的前映像,要与FLASHBACK DATABASE命令一起使用.
 
其他工具后台进程
    Oracle Data Guard相关进程,详细内容请见OracleData Guard Concepts and Administration Guide
    数据泵工具相关进程
    流申请、捕获进程
<ORACLE进程-后台中心进程>
LINUX/UNIX操作系统中,oracle的各个进程都是同一个二进制可执行程序(ORACLE),对于每个中心进程,没有一个单独的可执行文件.
    这些进程都是ORACLE在启动某个程序时对自已建立了别名,以便更容易标识各个进程
 
    PMON(Process Monitor)进程
    负责在出现异常中止的连接之后完成清理
    负责监视其他ORACLE中心进程,在必要时重启这些中心进程,也会在适当时(LGWR失败)
终止实例
    负责定期向TNS注册这个实例(注意若不用默认监听端口时的处理)
    PMOM会回滚未提交的工作,并释放为失败进程分配的SGA资源

    SMON(System Monitor)系统
    随着时间的推移,SMON可能会累积地占用大量的CPU时间
    系统级清理,是数据库的垃圾收集器
    负责清理临时空间
    负责合并空闲空间(使用字典管理的表空间时)
    负责在不可用文件可用时的恢复活动的事务
    负责执行RAC中失败节点的实例恢复复
    负责清理OBJ$
    负责收缩回滚段,需要设置
    负责离线回滚段,在离线使用中的回滚段时,定期偿试真正离线,直到成功为止
    负责刷新输出监视统计信息、SCN-时间戳映射信息等


    CKPT(Checkpoint Process)检查点进程
    负责更新数据文件的文件首部,以辅助DBWn(主要任务为建立检查点)

    LGWR(Log Writer)日志写入器
    负责将SGA中重做日志缓冲区的内容刷新输出到RODO日志文件.在线重做日志用到实例终止时(如断电)自动恢复数据
    需满足以下某个条件:1、每3;2、任何事务提交;3、重做日志缓冲区1/3满或缓冲区已包含1M缓冲数据.
    LGWR通用顺序I/O写入磁盘,尽管带来额外的I/O,只写出有变化的字节,效率更高

    DBWn(Database Block Writer)数据库块写入器
    负责将缓冲区中脏数据块写入磁盘;
    目的:在缓存中腾出更多的空间,推进检查点
    最多可配置20DBWn;
    其方式是通过大量的分散写,速度较慢.最好的方式是使用异步I/O,交给操作系统写入磁盘

    ARCn(Archive Process)归档进程
    负责在线日志填满时,将其复制到另一个位置;归档重做日志用于介质恢复数据(如出现硬盘故障时).
    理想的完整恢复:完整的备份 归档重做日志 在线重做日志

    RECO(Distributed Database Recovery)分布式数据库恢复
    负责在两段提交(two-phase commit2PC)期间,因崩溃或连接丢失等原因,导致有些事务保持准备状态,恢复(提交或回滚)这些事务
    有时可疑的分布式事务可能导致写入器阻塞读取器(Oracle中只有此时会发生写阻塞读的情况)。需要手动提交或回滚,而不再由RECO完成这个任务
 
    启用ASM实例时可见进程
    ASMBAutomatic Storage Management Background)自动存储管理后台进程
    只有使用了ASM数据库实例后才有
    负责与管理存储的ASM实例通信、向ASM实例提供更新的统计信息,并向ASM实例提供一个心跳

    RBAL(Rebalance)重新平衡进程
    只有使用了ASM数据库实例后才有
    在向ASM磁盘组增加或去除磁盘时,RBAL负责处理重新平衡请求(即重新分布负载的请求)
 
    RAC环境中可见进程
    LMONLock monitor)锁监视器
    只有在RAC中可见
    LMON监视集中的所有实例,检测是否有实例失败。这有利于恢复失败实例持有的全局
锁。它还负责在实例离开或加入集时重新配置锁和其他资源(实例失败时会离开集,恢复为在线时又会加入集,或者可能有新实例实时地增加到集中)

    LMDLock manager daemon)锁管理器守护进程
    只有在RAC中可见
    LMD进程为全局缓存服务(保持块缓冲区在实例间一致)处理锁管理器服务请求。它主要作为代理(broker)向一个队列发出资源请求,这个队列由LMSn进程处理。LMD会处理全局死锁的检测/解析,并监视全局环境中的锁超时

    LMSnLock manager server)锁管理器服务器进程
    只有在RAC中可见
    RAC环境中,各个Oracle实例在集中的不同机器上运行,它们都以一种读写方式访问同样的一组数据库文件。为了达到这个目的,SGA块缓冲区缓存相互之间必须保持一致
    利用LMSn,可以在集的高速连接上通过非常快速的缓存到缓存交换来完成数据交换。每个实例可以有多达10LMSn进程


    LCK0Lock)锁进程
    只有在RAC中可见
    这个进程的功能与LMD进程非常相似,但是它处理所有全局资源的请求,而不只是数据库块缓冲区的请求

    DIAGDiagnosability daemon)可诊断性守护进程
    只有在RAC中可见
    负责监视实例的总体健康情况,并捕获处理实例失败时所需的信息
<ORACLE进程-从属进程>
I/O从属进程
    I/O从属进程用于为不支持异步I/O的系统或设备模拟异步I/O。这样可以得到更高的吞吐量,因为会由I/O从属进程来等待慢速的设备,而原来的调用进程得以脱身,可以做其他重要的工作来收集下一次要写的数据。
    I/O从属进程在Oracle中有两个用途。DBWnLGWR可以利用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从属进程的名字是I1nnLGWR I/O从属进程的名字是I2nn,这里nn是一个数。
 
    并行查询从属进程
    使用并行查询时,会看到名为Pnnn的进程,这些就是并行查询从属进程。处理一条并行语句时,服务器进程则称为并行查询协调器(parallel query coordinator)。操作系统上服务器进程的名字并不会改变,如果提到了协调器进程,你应该知道这就是原来的服务器进程。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。