Oracle11g 后台进程说明

2019-07-10  本文已影响0人  Silent_U

1、后台进程有:

DBWR(Database Write) : 数据库写入程序

LGWR(Log Write) : 日志写入程序

CKPT(Checkpoint) : 检查点

SMON (System Monitor): 系统监控

PMON(Process Monitor) : 进程监控

ARCH(Archive) : 归档

RECO : 恢复

LCKn : 封锁;

2、RAC启动后台进程的顺序:

PMON started with pid=2, OS id=18042

DIAG started with pid=3, OS id=18044

PSP0 started with pid=4, OS id=18051

LMON started with pid=5, OS id=18053

LMD0 started with pid=6, OS id=18055

LMS0 started with pid=7, OS id=18057

MMAN started with pid=8, OS id=18061

DBW0 started with pid=9, OS id=18063

LGWR started with pid=10, OS id=18065

CKPT started with pid=11, OS id=18067

SMON started with pid=12, OS id=18069

RECO started with pid=13, OS id=18071

CJQ0 started with pid=14, OS id=18073

MMON started with pid=15, OS id=18075

MMNL started with pid=16, OS id=18077

3、进程详细说明

3.1. DBWR进程

       该进程执行将缓冲区写入数据文件,是负责缓冲存储区管理的一个ORACLE后台进程。当缓冲区中的一缓冲区被修改,它被标志为“弄脏”,DBWR的主要任务是将“弄脏”的缓冲区写入磁盘,使缓冲区保持“干净”。由于缓冲存储区的缓冲区填入数据库或被用户进程弄脏,未用的缓冲区的数目减少。当未用的缓冲区下降到很少,以致用户进程要从磁盘读入块到内存存储区时无法找到未用的缓冲区时,DBWR将管理缓冲存储区,使用户进程总可得到未用的缓冲区。

       ORACLE采用LRU(LEAST RECENTLY USED)(最近最少使用算法)保持内存中的数据块是最近使用的,使I/O最小。

触发DBWR进程的条件有:

              1.  DBWR超时,大约3秒

              2.  系统中没有多余的空缓冲区来存放数据

              3.  CKPT 进程触发DBWR(alter system checkpoint)

3.2. LGWR进程

       该进程将日志缓冲区写入磁盘上的一个日志文件,它是负责管理日志缓冲区的一个ORACLE后台进程。

触发LGWR进程的条件有:

  1. 用户提交

  2. 有1/3重做日志缓冲区未被写入磁盘

  3. 有大于1M的重做日志缓冲区未被写入磁盘

  4. 3秒超时

  5. DBWR 需要写入的数据的SCN大于LGWR记录的SCN,DBWR 触发LGWR写入。

       日志缓冲区是一个循环缓冲区。当LGWR将日志缓冲区的日志项写入日志文件后,服务器进程可将新的日志项写入到该日志缓冲区。LGWR 通常写得很快,可确保日志缓冲区总有空间可写入新的日志项。

有时候当需要更多的日志缓冲区时,LWGR在一个事务提交前就将日志项写出,而这些日志项仅当在以后事务提交后才永久化。

       ORACLE使用快速提交机制,当用户发出COMMIT语句时,一个COMMIT记录立即放入日志缓冲区,但相应的数据缓冲区改变是被延迟,符合条件时才将它们写入数据文件。当一事务提交时,被赋给一个系统修改号(SCN),它同事务日志项一起记录在日志中。由于SCN记录在日志中,以致在并行服务器选项配置情况下,恢复操作可以同步。

3.3. CKPT进程

       该进程在检查点出现时,对全部数据文件的标题进行修改。负责在每当缓冲区高速缓存中的更改永久地记录在数据库中时,更新控制文件和数据文件中的数据库状态信息。

3.4. SMON进程

       SMON是Oracle数据库至关重要的一个后台进程, 该进程实例启动时执行实例自动恢复,还负责清理不再使用的临时段, 是一种用于库的“垃圾收集者”。在具有并行服务器选项的环境下,SMON对有故障CPU或实例进行实例恢复。SMON进程有规律地被呼醒,检查是否需要,或者其它进程发现需要时可以被调用。

它做的工作包括如下7件:

       (1)清理临时表空间:当建立一个索引,在创建期间分配给索引的扩展区被标志为TEMPORARY。如果Create Index会话因某些原因异常中断,SMON负责清理他们。其他操作创建的临时扩展区,SMON同样会负责清理。

       (2)接合空闲空间:如果你使用数据字典管理表空间,SMON负责把那些在表空间中空闲的并且互相是邻近的extent接合成一个较大的空闲扩展区。这发生仅在带有默认的pctincrease设置为非零的存储子句的字典管理表空间。

       (3)把对于不可用文件的事务恢复成活动状态:文件可能已经在不可用或没装载的磁盘上。当文件变可用了,SMON将恢复它。

       (4)执行一个RAC中故障节点的实例恢复:在一个oracle RAC配置中,当群集中的一个库实例失败(例如,实例正执行的机器故障了),一些群集中的其他节点将开启故障的实例的重做日志文件,为故障实例执行所有数据的恢复。

       (5)清理OBJ$:OBJ$是一个包含库中几乎每一个对象(表,索引,触发器,视图等等)的记录的行级数据字典表。许多次,这儿存在的记录代表已删对象,或代表不在这儿的对象,在oracle的信赖机制中被使用。SMON是删除这些不在被需要的行的进程。

       (6)收缩回滚段:SMON将执行回滚段的自动收缩到它的optimal尺寸,如果它被设置。

       (7)“脱机”回滚段:对于DBA来,让一个有active事务的回滚段,脱机或不可用,是可能的。Active事务正使用这脱机回滚段是可能的。在这情况下,回滚不是真正的脱机;它被标志为“悬挂offline”。在后台进程中,SMON将周期性尽力让它真正脱机,直到成功。

       SMON做许多其他事情,譬如存在DBA_TAB_MONITORING视图中的监控统计数据的洗刷,在SMON_SCN_TIME表中发现的时间戳定位信息的SCN的洗刷,等等。SMON在期间能消耗很多CPU,这应该被认为是正常的。SMON周期性的苏醒(或被其他后台进程叫醒)来执行这些管家的家庭杂事。

3.5. PMON进程

       用于恢复失败的数据库用户的强制性进程,它先获取失败用户的标识,释放该用户占有的所有数据库资源。PMON有规律地被呼醒,检查是否需要,或者其它进程发现需要时可以被调用。

       PMON进程负责在反常中断的连接之后的清理工作。例如,如果因某些原因专用服务“故障”或被kill掉,PMON就是负责处理(恢复或回滚工作)和释放你的资源。       PMON将发出未提交工作的回滚,释放锁,和释放分配给故障进程的SGA资源。除了在异常中断之后的清理外,PMON监控其他oracle后台进程,如果有必要(和有可能)重新启动他们。如果共享服务或一个分配器故障(崩溃),PMON将插手并且重启另一个(在清理故障进程之后)。

       PMON将观察所有Oracle进程,只要合适或重启他们或中止进程。例如,在数据库日志写进程事件中,LGWR故障,实例故障。这是一个严重的错误,最安全的处理方法就是去立即终止实例,让正常的恢复处理数据。

       PMON为实例做的另一件事是去使用Oracle TNS监听器登记。当一个实例开启的时候,PMON进程投出众所周知的端口地址1521,除非指向其他,来看是否监听器正在开和运行着。   现在,如果监听器在一些不同端口开启会发生什么?这种情况,机制是相同的,除了监听器地址需要被LOCAL_LISTENER参数明确指定。如果监听器运行在库实例开启的时候,PMON和监听器通讯,传到它相关参数,如果监听器没被开启,PMON将周期性的试着和它联系来登记自己。

The background process PMON cleans up after failed processes by:

       1. Rolling back the user’s current transaction

       2. Releasing all currently held table or row locks

       3. Freeing other resources currently reserved by the user

       4. Restarts dead dispatchers

3.6. RECO进程

       负责在分布式数据库环境中自动恢复那些失败的分布式事务,保证分布式事务的一致性,在分布式事务中,要么同时commit,要么同时rollback; 

3.7. ARCH进程

       该进程将已填满的在线日志文件拷贝到指定的存储设备。当数据库运行在归档模式下,归档进程负责在日志切换后将已经写满的重做日志文件复制到归档目标.

3.8. LCKn进程

       是在具有并行服务器选件环境下使用,可多至10个进程(LCK0,LCK1……,LCK9),用于实例间的封锁。  

3.9. MMAN 进程

       内存管理,如果设定了 SGA自动管理,MMAN用来协调SGA内各组件的大小设置和大小调整。

3.10. MMON 进程

       管理性监视器(Manageability Monitor),MMON主要用于AWR,ADDM。MMON会从SGA将收集统计结果并且写到系统表中。

---------------------

作者:东方不败-

来源:CSDN

原文:https://blog.csdn.net/flawless_521/article/details/12832339

版权声明:本文为博主原创文章,转载请附上博文链接!

上一篇下一篇

猜你喜欢

热点阅读