您的位置:首页 > 数据库 > Oracle

Backgroud process oracle后台进程

2014-01-08 23:59 381 查看
·         Process Monitor Process (PMON)

 
进程监视器进程(PMON) 在用户进程失败时执行进程恢复。PMON 负责清除数据库缓冲区高速缓存以及释放该用户进程使用的资源。例如,它重置活动事务处理表的状态,释放锁,并且从活动进程列表中删除该进程ID。
PMON 定期检查分派程序和服务器进程的状态,并重新启动任何已停止运行(但并非Oracle DB 故意终止)的分派程序和服务器进程。PMON 还将有关实例和分派程序进程的信息注册到网络监听程序
与SMON 一样,PMON 定期检查以查看是否需要执行;如果其它进程检测到需要该进程,也可以调用它。
·         System Monitor Process (SMON)

系统监视器进程(SMON) 在实例启动时执行恢复(如果需要)。
SMON 还负责清除不再使用的临时段。如果在实例恢复过程中由于文件读取或脱机错误跳过任何已终止的事务处
理,则SMON 将在表空间或文件重新联机时恢复这些事务处理。
SMON 定期检查以查看是否需要该进程。其它进程在检测到需要SMON 时也可以调用它。
 
 

·         Database Writer Process (DBWn)

 

 

数据库写进程(DBWn) 可以将缓冲区的内容写入数据文件。DBWn进程负责将数据库缓冲区高速缓存中经过修改的缓冲区(灰数据缓冲区)写入磁盘。虽然对于大多数系统来说,一个数据库写进程(DBW0) 已经足够,但如果系统需要频繁修改数据,则可以配置附加进程(DBW1到DBW9以及DBWa到DBWj)以改进写性能。这些附加DBWn进程在单处理器系统中没有用。
 
当数据库缓冲区高速缓存中的某个缓冲区被修改时,系统会将其标记为灰数据缓冲区,并将其添加到按SCN 顺序存放的灰数据缓冲区的LRUW(LRU
写)列表中。因此,该顺序与为这些更改的缓冲区写入重做日志的重做操作的顺序相匹配。当缓冲区高速缓存中的可用缓冲区的数量低于某个内部阈值(达到服务器进程发现很难获取可用缓冲区的程度)时,DBWn会将灰数据缓冲区写入数据文件,写入顺序与按照LRUW 列表的顺序修改灰数据缓冲区的顺序相同。
 
SGA 包含的内存结构具有重做流中的某个位置的重做字节地址(RBA),当实例发生故障时,将从该位置开始恢复。此结构充当指向重做的指针,并且由CKPT 进程按照每三秒一次的频率写入控制文件。由于DBWn按照SCN 顺序写入灰数据缓冲区,而重做按照SCN 顺序执行,因此每当DBWn从LRUW 列表写灰数据缓冲区时,还会将SGA 内存结构中保持的指针前移,以便实例恢复(如果需要)从近似正确的位置开始读取重做,并避免不需要的I/O。这称为“增量检查点”。
 
注:还有其它一些DBWn可能会执行写操作的情况,例如,当表空间被设置为只读或被置于脱机状态时。在这些情况下,不会出现增量检查点,因为仅属于相应数据文件的灰数据缓冲区在写入数据库时的顺序与SCN 顺序无关。
 
LRU 算法将更频繁访问的块保存在缓冲区高速缓存中,这样,在将缓冲区写入磁盘时,缓冲区不大可能包含将很快有用的数据。
DB_WRITER_PROCESSES初始化参数指定DBWn进程数。DBWn进程的最大数目为20。
 
如果用户在启动过程中未指定该进程数,Oracle DB 将根据CPU 和处理器组的数量来决定如何设置DB_WRITER_PROCESSES。
在以下情况下,DBWn进程将灰数据缓冲区写入磁盘:
• 当服务器进程在扫描阈值数目的缓冲区之后找不到干净的可重用缓冲区时,通知DBWn执行写操作。DBWn在执行其它处理的同时,将灰数据缓冲区异步写入磁盘。
•DBWn定期写缓冲区以推进检查点。检查点是重做线程(日志)中开始执行实例恢复的位置。该日志位置由缓冲区高速缓存中最旧的灰数据缓冲区确定。
在所有情况下,DBWn均执行成批(多块)写操作以提高效率。多块写操作中写入的块数因操作系统而异。
 

·         Log Writer Process (LGWR)

 

日志写进程(LGWR) 负责管理重做日志缓冲区,方法是将重做日志缓冲区条目写入磁盘上的重做日志文件。LGWR 会写入自上次写入以来复制到缓冲区中的所有重做条目。
重做日志缓冲区是循环缓冲区。当LGWR 将重做日志缓冲区中的重做条目写入重做日志文件后,服务器进程可以将新条目复制到重做日志缓冲区中的那些已写入磁盘的条目之上。
 
 
LGWR 的写入速度通常足够快,可以确保缓冲区中始终有空间可供新条目使用,即使对重做日志的访问量很大时也是如此。LGWR 将缓冲区的一个连续部分写入磁盘。
LGWR
在以下情况下执行写操作:


用户进程提交事务处理时


重做日志缓冲区的三分之一已满时


重做日志缓冲区达到1M的redo条目


在DBWn进程将经过修改的缓冲区写入磁盘(如果需要)之前


每隔3 秒

必须在与缓冲区更改相关联的所有重做记录写入磁盘后,DBWn才可以向磁盘写入经过修改的缓冲区(先行写协议)。
如果DBWn发现一些重做记录尚未写入,则会通知LGWR将这些重做记录写入磁盘,并等待LGWR 完成重做日志缓冲区的写入操作,然后再写数据缓冲区。LGWR 将向当前的日志组进行写入。如果该组中的某个文件已损坏或不可用,LGWR 将继续写入该组中的其它文件,并在LGWR 跟踪文件和系统预警日志中记录一个错误。如果某个组中的所有文件均已损坏,或者该组由于尚未归档而不可用,则LGWR无法继续工作。
 
 
当用户发出COMMIT语句时,LGWR 会将一条提交记录放在重做日志缓冲区中,并立即将该记录随同事务处理的重做日志一起写入磁盘中。对数据块进行的相应更改将延迟,直到能够更为高效地写入这些更改时才会执行。这称为“快速提交机制”。包含事务处理提交记录的重做条目的原子写是单个事件,该事件可以确定事务处理是否已提交。OracleDB
为提交的事务处理返回一个成功代码,尽管数据缓冲区尚未写入磁盘中。
 
如果需要更多缓冲区空间,LGWR 有时会在提交事务处理之前写入重做日志条目。仅当稍后提交了该事务处理之后,这些条目才会成为永久条目。当用户提交事务处理时,该事务处理将被分配一个系统更改号(SCN),Oracle DB 将该号码与事务处理的重做条目一起记录在重做日志中。SCN 记录在重做日志中,以便可以在Real Application Clusters 和分布式数据库之间同步恢复操作。
 
当活动比较频繁时,LGWR 可以通过使用组提交来写入重做日志文件。例如,假设用户提交一个事务处理。LGWR 必须将该事务处理的重做条目写入磁盘。发生该情况时,其他用户将发出COMMIT语句。但是,LGWR 在完成其上一个写操作之前,无法写入重做日志文件以提交这些事务处理。在第一个事务处理的条目写入重做日志文件之后,可以在一次操作中将正在等待(尚未提交)的事务处理的整个重做条目列表写入磁盘,这比分别处理各个事务处理条目所需的I/O
要少。因此,Oracle DB 可以将磁盘I/O 降至最少,并最大限度地提高LGWR 的性能。如果提交请求的速率一直较高,则从重做日志缓冲区进行的每个写操作(由LGWR 执行)都可能包含多个提交记录。
 

·         Checkpoint Process (CKPT)

 

“检查点”是一种数据结构,用于定义数据库的重做线程中的系统更改号(SCN)。
检查点被记录在控制文件和每个数据文件头中。它们是恢复操作的关键元素。
 
出现检查点时,Oracle DB 必须更新所有数据文件的头,以记录该检查点的详细信息。这是由CKPT 进程完成的。CKPT 进程不会将块写入磁盘;该工作都是由DBWn执行。文
件头中记录的SCN 可保证将该SCN 之前对数据库块进行的所有更改写入到磁盘中。
Oracle Enterprise Manager 中的SYSTEM_STATISTICS监视器将显示统计信息DBWR 检查点,由其指示已完成的检查点请求的数目。
 
 

·         Manageability Monitor Processes (MMON and MMNL)

 

MMON:执行与可管理性相关的后台任务
可管理性监视器进程(MMON),可执行各种与可管理性相关的后台任务,例如:
• 每当给定的度量超过其阈值时发出预警
• 通过衍生附加进程(MMON 从属进程)获取快照
• 捕获近期已做修改的SQL 对象的统计值
轻量可管理性监视器进程(MMNL),可执行与轻量可管理性相关的频繁任务,例如会话历史记录捕获和度量计算。
 

·         Recoverer Process (RECO)

·         ARCN归档进程

 

发生日志切换之后,归档进程(ARCn)
会将重做日志文件复制到指定的存储设备,可以收集事务重做数据,并将该数据传输到备用目标位置

仅当数据库处于ARCHIVELOG模式且已启用自动归档时,才会存在ARCn进程。
如果预计归档的工作负荷很重(例如在成批加载数据期间),则可以使用LOG_ARCHIVE_MAX_PROCESSES初始化参数增加最大归档进程数。
ALTER SYSTEM语句可以动态更改该参数的值,以增加或减少ARCn进程数。
 
 
内存管理器进程(MMAN),用于内部数据库任务。它管理自动内存管理处理,以帮助在需要内存时动态分配内存,以避免发生内存不足或缓冲区高速缓存性能下降的情况。
 
重新平衡进程(RBAL) 协调自动存储管理实例中的磁盘组的重新平衡活动。它负责对自动存储管理磁盘执行全局打开操作。
 
ARBn执行自动存储管理实例中的实际重新平衡数据区移动。可能同时存在多个这样的进程,这些进程名为ARB0、ARB1 等等。
 
自动存储管理进程(ASMB) 存在于使用自动存储管理磁盘组的数据库实例中。它与自动存储管理实例通信。
 
作业队列进程用于批处理。它们运行用户作业,可将它们视为调度程序服务,用于将作业作为Oracle DB 实例上的PL/SQL 语句或过程来调度。
 
CJQ0的协调程序进程定期从系统JOB$表中选择需要运行的作业。CJQ0 进程动态衍生作业队列从属进程(J000 到J999)以运行作业。作业队列进程运行由CJQ0 进程选择执行的作业之一。这些进程一次运行一个作业。
 
队列监视器进程(QMNC) 是监视消息队列的Oracle Streams Advanced Queuing 的可选后台进程。最多可以配置10 个队列监视器进程。
 
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息