通过V$BGPROCESS视图查看所有可能的Oracle后台进程。
SQL> select paddr,name,description
from v$bgprocess
order by paddr desc
中心后台进程
查看Linux系统上的进程
ps -aef | grep 'ora_.*_ORCL$'
注:1.命名约定:进程名都以ora_开头,后面是4个字符,表示进程的具体名字,再后面是_ORCL。(我的ORACLE_SID是ORCL)
2.这些进程实际上都是同一个二进制可执行程序,对于每个“程序”,并没有一个单独的可执行文件。这些进程实际上都是oracle(即二进制可执行程序的名字)。它们只是在启动时对自己建立别名,以便更容易的标识各个进程。
PMON:进程监视器(Process Monitor)
功能:1)在出现异常中止的连接之后完成清理;2)监视其他的Oracle后台进程,并在必要时(如果可能的话)重启这些后台进程;3)向Oracle TNS监听器注册这个实例。(Oracle使用的公认/默认的监听器端口为1521,如果监听器在另外某个端口启动,则需要设置LOCAL_LISTENER参数显式指定监听器地址。)
SMON:系统监视器(System Monitor)
SMON进程要完成“系统级”任务。PMON感兴趣的是单个的进程,而SMON以系统级为出发点,是一种数据库“垃圾收集器”。
功能:1)清理临时空间;2)合并空闲空间;3)针对原来不可用的文件恢复活动的事务;4)执行RAC中失败节点的实例恢复;5)清理OBJ$;6)收缩回滚段;7)离线回滚段。
RECO:分布式数据库恢复(Distributed Database Recovery)
功能:由于两段提交(two-phase commit,2PC)期间的崩溃或连接丢失等原因,有些事务可能会保持准备状态,这个进程就是要恢复这些事务。
如果在 N 个数据库之间采用2PC,其中一个数据库( 通常是客户最初登录的那个 数据库, 但也不一定) 将成为协调器(coordinator)。这个站点会询问其他N-1个站点是否准备提交。实际上,这个站点会转向另外这N-1 个站点,问它们是否准备好提交。这 N-1 个站点都会返回其“准备就绪状态”,报告为YES 或NO。如果任何一个站点投票(报告)NO,整个事务都要回滚。如果所有站点都投票YES,站点协调器就会广播一条消息,使这N-1个站点真正完成提交(提交得到持久地存储)。如果某个站点投票YES,称其准备好要提交,但是在此之后,并且在得到协调器的指令真正提交之前, 网络失败了,或者出现了另外某个错误,事务就会成为一个可疑的分布式事务(in-doubt distributed transaction) 。此时RECO 会试图联系事务的协调器来发现协调的结果。在此之前,事务会保持未提交状态。当再次到达事务协调器时,RECO 可能会提交事务,也可能将事务回滚。
可疑的分布式事务可能会导致写入器阻塞读取器(Oracle中发生“写阻塞读”的唯一情况)
CKPT:检查点进程(Checkpoint Process)
功能:CKPT只是更新数据文件的文件首部,以辅助真正建立检查点的进程(DBWn)。建立检查点主要是DBWn的任务。
DBWn:数据库块写入器(Database Block Writer)
功能:负责将脏块写入磁盘,以便在缓存中腾出更多的空间或者推进检查点(将在线重做日志文件中的位置前移,如果出现失败,Oracle会从这个位置开始读取来恢复实例)。
可以配置多个DBWn。最好的情况下,DBWn使用异步I/O将块写至磁盘。( 采用异步 I/O,DBWn 会收集一批要写的块,并把它们交给操作系统。DBWn 并不等待操作系统真正将块写出;而是立即返回,并收集下一批要写的块。当操作系统完成写操作时,它会异步地通知 DBWn 写操作已经完成。 )
DBWn会做大量的分散写(scattered write),而LGWR则是向重做日志完成大量的顺序写(sequential write)。分散写比顺序写慢多了,通过在 SGA 中缓存脏块,并由 LGWR 进程完成大规模顺序写(可能重建这些脏缓冲区),这样可以提升性能。尽管从技术上讲这样会使Oracle 执行更多不必要的I/O(写日志以及写数据文件),但整体性能还是会提高。从理论上讲,如果提交期间 Oracle 已经将已修改的块物理地写出到磁盘,就可以跳过写在线重做日志文件。但在实际中并不是这样:LGWR 还是会把每个事务的重做信息写至在线重做日志, DBWn 则在后台将数据库块刷新输出到磁盘。
LGWR:日志写入器(Log Writer)
功能:负责将SGA中重做日志缓冲区的内容刷新输出到磁盘。
时机:1)每3秒会刷新输出一次;2)任何事务发出一个提交时;3)重做日志缓冲区1/3满或者已经包含1MB的缓冲数据。
ARCn:归档进程(Archive Process)
功能:当LGWR将在在线重做日志文件填满时,ARCn就将其复制到另一个位置。此后这些归档的重做日志文件可以用于完成介质恢复。在线重做日志用于在出现电源故障(实例终止)时“修正”数据文件,而归档重做日志文件则不同,它是在出现硬盘故障时用于“修正”数据文件。
ARCn通常将在线重做日志文件复制到至少两个位置(冗余正是不丢失数据的关键所在!)这些位置可能是本地机器的磁盘,或在另一台机器上,以应付灾难性的失败。
工具后台进程
CJQ0和Jnnn进程:作业队列
相关定义:1)作业:一组PL/SQL代码,用于完成特定的功能;2)作业队列:oracle服务器中用于存储作业的一种机制(或逻辑构件);3)Jnnn:执行特定作业的作业进程,nnn是作业进程号(最多可以有1000个作业);4)CJQ0:作业进程调度器,它本身也是作业进程,作用是用于调度作业进程;DBMS_JOB:该包内的procedures用于对作业进行管理。
调度原理:用户通过调用DBMS_JOB包中的procedures向作业队列中增加作业,并设定作业的调度执行时间或周期。CJQ0进程始终监视检查作业队列中是否有作业到了调度时间点,若发现,则指派一个作业执行进程Jnnn来执行该作业。
相关参数:JOB_QUEUE_PROCESSES:若设为0,则关闭作业调度功能,作业队列中的作业将不会自动执行;若设为n(n>0),启动调度功能,n指作业进程的数量(注:如果配置了最多1 000个Jnnn进程,并不会看到真的有1 000个进程随数据库启动。相反,开始时只会启动一个进程,即作业队列协调器(CJQ0),它在作业队列表中看到需要运行的作业时,会启动Jnnn进程。如果Jnnn进程完成其工作,并发现没有要处理的新作业,此时Jnnn进程就会退出,也就是说,会消失。)
QMNC和Qnnn:高级队列
QMNC进程对于AQ(Advanced Queue)来说就相当于CJQ0进程之于作业表。QMNC进程会监视高级队列,并警告从对列中删除等待消息的“出队进程”:已经有一个消息变为可用。QMNC和Qnnn还要负责队列传播,即将在一个数据库中入队的消息移到另一个数据库队列中。
Qnnn进程对于QMNC进程就相当于Jnnn进程与CJQ0进程的关系。
参数AQ_TM_PROCESSES可以指定最多创建10个这样的进程(分别为Q000,...,Q009)以及一个QMNC进程。不同于Jnnn进程,Qnnn进程是持久的,参数设为10,则可以看到10个Qnnn进程和一个QMNC进程。
EMMn:事件监视器进程(Event Monitor Process)
EMNn进程是AQ体系结构的一部分,用于通知对某些消息感兴趣的队列订购者。
MMAN:内存管理器(Memory Manager)
自动设置SGA大小特性,用于协调共享内存中各组件(默认缓冲区池、共享池、Java池和大池)的大小设置和大小调整。
MMON、MMNL和Mnnn:可管理性监视器(Manageability Monitor)
用于填充自动工作负载存储库(Automatic Workload Repository,AWR)。 MMON:用于“自动检测”数据库性能问题,并实现新增的自动调整特性,会请求从属进程代表它完成工作;Mnnn:类似于作业队列的Jnnn或Qnnn进程,是临时性的。
CTWR:修改跟踪进程(Change Tracking Process)
负责维护新的修改跟踪文件。
RVWR:恢复写入器(Recovery Writer)
负责维护闪回恢复区的“前”映像,要与FLASHBACK DATABASE命令一起使用。
- I/O从属进程
功能:为不支持异步I/O的系统或设备模拟异步I/O。DBWn和LGWR可以利用I/O从属进程模拟异步I/O;RMAN写磁带时也可能利用I/O从属进程。
相关参数:1)BACKUP_TAPE_IO_SLAVES:指定RMAN是否使用I/O从属进程将数据备份、复制或恢复到磁带上。若设为TRUE,则使用一个I/O从属进程从磁带设备读写,若为FALSE(默认值),则不用I/O从属进程,此时完成备份的专用服务器进程会直接访问磁带设备。2)DBWR_IO_SLAVES:指定DBW0进程所用I/O从属进程的个数。若设为0,则不使用I/O从属进程,否则使用I/O从属进程,LGWR和ARCH最多允许4个I/O从属进程。(DBWR I/O从属进程的名字是I1nn,LGWR I/O从属进程的名字是I2nn,nn是一个数)。
并行查询从属进程
使用并行查询时,会看到名为Pnnn的进程,这些就是并行查询从属进程。处理一条并行查询时,服务器进程则称为并行查询协调器(parallel query coordinator)。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/17014649/viewspace-608882/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/17014649/viewspace-608882/