前面提到oralce数据库实例包括两部分:一组进程与进程所使用的内存(SGA)。其实更准确的说是:SGA与一组后台进程。那么后台进程是为了完成些什么功能呢?后台进程执行保证数据库运行所需的实际维护任务。我的理解是:就像一个管家,搞后勤的。
例如,有一个进程为我们维护块缓冲区缓存,根据需要将块写出到数据文件。另一个进程负责当 在线重做日志文件写满时将它复制到一个归档目标。另外还有一个进程负责在异常中止进程后完成清理,等等。
后台进程分成两类:中心任务进程和工具进程。我的理解是:中心任务进程是必不可少的,工具进程相当于起个辅助作用,是可选的。
首先,先来了解中心任务进程,参考如下图片:
下面介绍一些主要的后台任务进程:
1.PMON:进程监视器(Process Monitor)
负责在出现异常终止的连接之后完成清理,PMON会回滚未提交的工作,并释放为失败进程分配的SGA资源。其二监视其他Oracle后台进程,并在必要时重启这些进程。其三可以对实例进行两个动作:其一使实例失败,其二向Oracle TNS监听器注册这个实例。
2.SMON:系统监视器(System Monitor)
PMON感兴趣的是单个进程,而SMON与之不同,他以系统级为出发点,这是一种数据库“垃圾收集器”。主要工作如下:
清理临时空间
合并空闲空间
针对原来不可用的文件恢复活动的事务。例如:磁盘上的文件可能不可用或者未装载,当文件确实可用时, SMON就会恢复与之相关原先失败的事务。
执行RAC失败节点的实例恢复:在一个Oracle RAC配置中,集群中一个数据库实例失败时,集群中另外一个节点会打开该失败实例的重做日志文件,并为该失败实例完成所有的数据的恢复。RAC是什么?参考如下文章:http://liwenshui322.iteye.com/blog/685526
清理OBJ$:OBJ$是一个低级数据字典表,其中几乎对每个对象(表、索引、触发器、视图等)都包含一个条目。很多情况下,有些条目表示的可能是已经删除的对象,或者表示“not there”(不在那里)对象(“not there”对象是Oracle依赖机制中使用的一种对象)。要由SMON进程来删除这些不再需要的行。数据字典介绍参考如下文章:http://liwenshui322.iteye.com/blog/685532
收缩回滚段
“离线”回滚段
更多后台进程介绍参考下节。
参考书籍:oracle9i&10g编程艺术