Oracle数据库创建服务器进程来处理连接到该实例的客户端进程的请求。客户端进程始终通过单独的服务器进程与数据库通信。
作用:
服务器进程主要有两种
在专用服务器连接中,客户端连接仅与一个服务器进程关联。服务器进程在其PGA中存储特定于进程的信息和UGA。oralce就是专有服务器进程,每一个连接对应一个服务器进程
PMON 进程监控进程
检测其他后台进程的终止
执行异常终止的后台进程恢复
CLMN 清理主要进程
CLMN会定期清除终止的进程,终止的会话,事务,网络连接,空闲会话,分离的事务以及已超过其空闲超时的分离的网络连接。
CLnn 清理辅助进程
CLMN将清理工作委托给CLnn协助清理进程。辅助进程的数量与要完成的清理工作量和当前的清理效率成正比。
这些进程负责监视和清除其他进程, 数据库必须确保释放已终止进程所拥有的资源,以便其他进程可以使用它们
数据库资源隔离,PMON组可以自动隔离损坏的不可恢复的资源,以便不会立即强制终止数据库实例。PMON组继续对保存隔离资源的进程或会话执行尽可能多的清除。
ProcessMonitor (PMON): 该进程在用户进程出现故障时执行进程恢复,负责清理内存储区和释放该进程所使用的资源。例:它要重置活动事务表的状态,释放封锁,将该故障的进程的ID从活动进程表中移去。PMON还周期地检查调度进程(DISPATCHER)和服务器进程的状态,如果已死,则重新启动(不包括有意删除的进程)。
PMON有规律地被呼醒,检查是否需要,或者其它进程发现需要时可以被调用。
PMON进程还负责在反常中断的连接之后的清理工作。例如,如果因某些原因专用服务“故障”或被kill掉,PMON就是负责处理(恢复或回滚工作)和释放你的资源。PMON将发出未提交工作的回滚,释放锁,和释放分配给故障进程的SGA资源。
除了在异常中断之后的清理外,PMON监控其他oracle后台进程,如果有必要(和有可能)重新启动他们。如果共享服务或一个分配器故障(崩溃),PMON将插手并且重启另一个(在清理故障进程之后)。PMON将观察所有Oracle进程,只要合适或重启他们或中止进程。例如,在数据库日志写进程事件中,LGWR故障,实例故障。这是一个严重的错误,最安全的处理方法就是去立即终止实例,让正常的恢复处理数据。(注意这是很少发生的事情,应该立即报告oracle支持)。
PMON为实例做的另一件事是去使用OracleTNS监听器登记。当一个实例开启的时候,PMON进程投出众所周知的端口地址,除非指向其他,来看是否监听器正在开和运行着。众所周知/默认端口是使用1521。现在,如果监听器在一些不同端口开启会发生什么?这种情况,机制是相同的,除了监听器地址需要被LOCAL_LISTENER参数明确指定。如果监听器运行在库实例开启的时候,PMON和监听器通讯,传到它相关参数,譬如服务器名和实例的负载度量。如果监听器没被开启,PMON将周期性的试着和它联系来登记自己。
If abackground process fails, the PMON process performs the cleanup operations byperforming the following tasks:
- Rolls back the user’s current transaction
- Releases all the locks that are held on tables or rows
- Frees other resources used by the users
- Restarts the dead dispatcher
PMAN监视,产生并停止以下类型的过程
PMAN监督几个后台进程,包括共享服务器,池化服务器和作业队列进程。
监听器登记处理(LREG)有关数据库实例和调度程序进程与Oracle网络监听信息。
实例启动时。LREG会轮询侦听器以确定它是否正在运行。如果侦听器正在运行,则LREG会传递相关参数;反之,LREG会定期尝试与它联系。
System Monitor (SMON): 该进程在实例启动时执行实例恢复,还负责清理不再使用的临时段。在具有并行服务器选项的环境下,SMON对有故障CPU或实例进行实例恢复。SMON进程有规律地被呼醒,检查是否需要,或者其它进程发现需要时可以被调用。
SMON还负责做所有系统级的工作。相对于PMON对单个进程感兴趣,SMON是一个系统级别的观点,是一种用于库的“垃圾收集者”。它做的工作包括如下7件:
If an Oracle instance crashes, any changes that are made in the SGA are notwritten to the data files. When you restart the instance, the SMON backgroundprocess automatically performs instance recovery by performing the followingtasks:
- Rolling forward changes that are made in the online redo log files but not inthe data files. Since all the committed transactions are written to the onlineredo log files, these are successfully recovered as result of rolling forwardchanges from the online redo log files to the data files.
- Opening the database. After the database is opened, users can log on and accessany data that is not locked by un-recovered transaction.
- Rolling back all the uncommitted transactions.
DBW进程将数据库缓冲区高速缓存中的已修改缓冲区写入磁盘。(数据量大时会增加进程数DBW0~DBW99)。
在以下情况下,DBW进程将脏缓冲区写入磁盘:
如果无法访问日志文件,则LGWR继续写入组中的其他文件,并将错误写入LGWR跟踪文件和警报日志。如果组中的所有文件都已损坏,或者该组由于尚未归档而无法使用,则LGWR无法继续运行
日志写进程(LGWR)管理联机重做日志缓冲区。
在以下情况下,LGWR将自上次写入以来已复制到缓冲区的所有重做条目写入:
DBWn可以写入脏缓冲区之前,数据库必须将与更改缓冲区相关联的重做记录写入磁盘(预写协议)。如果DBW发现某些重做记录尚未写入,他将通知LGWR将记录写入磁盘,并等待LGWR完成,然后再讲数据缓冲区写入磁盘。
检查点进程(CKPT)更新控制文件和数据文件头与检查点信息和DBW到写入块到磁盘的信号。
检查点信息包括检查点位置,SCN和联机重做日志中开始恢复的位置。
MMAN内存管理,如果设定了 SGA自动管理,MMAN用来协调SGA内各组件的大小设置和大小调整。
在Oracle不同的文档中,对这两个进程的解释存在歧义。MMON应该是 Memory Monitor 的缩写,但是在有的文档中被记录为Manageability Monitor,这应当是10g早期版本中的称呼,只不过后来发生了变更。
这个进程的主要作用如下:
The memory monitor (MMON) process was introduced in10g and is associated with the Automatic Workload Repository new features used for automatic problem detection and self-tuning. MMON writes out the requiredstatistics for AWR on a scheduled basis.
MMON主要用于AWR,ADDM,MMON会从SGA将统计结果写到系统表中
MMON(Manageability Monitor Process,可管理性监视器进程)和它的slave进程(Mnnn)主要用来维护AWR信息和各种与可管理性相关的后台任务,具体包括:
启动slave进程Mnnn去做AWR快照。若MMON进程HANG住,则AWR不可用。
当某个测量值(metrics)超过了其度量阀值(threshold value)时发出alert告警。
为最近改变过的SQL对象捕获指标信息。
this process is a new process in 10g which works with the Automatic Workload Repository new features (AWR) to write out full statistics buffers to disk as need
(这个as need怎么理解呢?mmon进程主要是内存中sql信息,ash信息的收集工作,如果这些信息需要写入到磁盘(即一些数据字典表)中,那么就需要MMNL进程负责写入。)
另外一个进程是 MMNL ,是 Memory Monitor Light (MMNL)的缩写,在部分文档中记录为 Manageability Monitor Light
对mmon和mmnl进程的一个协调工作总结:
MMON、MMNL和Mnnn这些进程用于填充自动工作负载存储库(Automatic Workload Repository,AWR),这是Oracle 10g中新增的一个特性。MMNL进程会根据调度从SGA将统计结果刷新输出至数据库表。MMON进程用于“自动检测”数据库性能问题,并实现新增的自调整特性。Mnnn进程类似于作业队列的Jnnn或Qnnn进程;MMON进程会请求这些从属进程代表它完成工作。Mnnn进程本质上是临时性的,它们将根据需要来来去去。
由此可见,MMON和MMNL进程宕掉是awr不能自动收集的根本原因。
若MMON或MMNL进程被kill掉了,则Oracle会自动启动这两个进程,也可以通过执行如下命令来手动启动这两个进程:
ALTER SYSTEM ENABLE RESTRICTED SESSION; -- 启用 ALTER SYSTEM DISABLE RESTRICTED SESSION; -- 取消 -- Oracle自动启动MMON进程时的告警日志: Fri Oct 13 02:06:43 2017 Restarting dead background process MMON Fri Oct 13 02:06:43 2017 MMON started with pid=42, OS id=7647 -- 执行“ALTER SYSTEM ENABLE RESTRICTED SESSION;”时的告警日志: Fri Oct 13 02:13:14 2017 Stopping background process MMNL Stopping background process MMON Starting background process MMON Starting background process MMNL Fri Oct 13 02:13:15 2017 MMON started with pid=16, OS id=7853 ALTER SYSTEM enable restricted session; Fri Oct 13 02:13:15 2017 MMNL started with pid=42, OS id=7855
在分布式数据库中,恢复程序(RECO)自动解决分布式事务中的故障。
一个归档进程程序(ARCn)副本联机重做日志文件到离线存储重做日志切换发生后。
这些过程还可以收集事务重做数据并将其传输到备用数据库目标。仅当数据库处于ARCHIVELOG模式并且启用自动归档时,ARC n进程才存在。
动态作业队列进程可以在给定的时间间隔内同时运行许多作业:
闪回数据存档进程(FBDA)是后台进程,提供了在表的整个生命周期内跟踪和存储表中事务性更改的功能。这样,您可以及时向后闪回表,以恢复表的状态。
提交修改跟踪表的事务时,FBDA会检查是否正在⽣成新的Undo,过滤与标记为存档的对象相关的内容,并将Undo信息复制到闪回数据存档表空间中。FBDA维护当前行上的元数据,并跟踪已存档的数据量。
FBDA还负责自动管理闪回数据存档的空间,组织(分区表空间)和保留时间。FBDA还跟踪已跟踪交易的归档进度。
FBDA可以作为线程或操作系统进程运行。
SMCO流程协调各种与空间管理相关的任务的执行。
典型的任务包括主动空间分配和空间回收。SMCO动态产生从属进程(W nnn)以执行任务。
I / O从属进程(Innn)为不支持异步I/O的系统和设备模拟异步I / O,异步I / O中,传输没有时序要求,从而使其他进程可以在传输完成之前启动数据库支持不同类型的I / O从站,包括:
查询协调器
在并行执行中服务器进程充当查询协调器(也称为并行执行协调器)
负责以下工作:
生产和使用
生产者负责处理其数据,然后将其分发给需要它的使用者
并行执行中,多个进程同时运行以运行单个SQL语句。通过在多个进程之间划分工作,Oracle数据库可以更快地运行该语句。