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

Oracle进程结构

2020-06-07 05:18 127 查看
进程监视进程(PMON)
进程监视进程负责在下列过程失败后释放相关对象:
§ 事务回退
§ 释放相关锁
§ 释放相关资源
§ 重新分配发生错误的调度
PMON周期性的检查调度状态和服务进程,并重新使除Oracle有意终止以外的已停止的进程运行;PMON同样也注册关于实例和调度进程用于网络监听的信息。
如果这个进程在数据库系统实例启动时出现故障,那么数据库系统也将无法开始工作。[@more@]

Oracle的进程主要分为用户进程、服务进程和后台进程三类。用户进程运行在应用或Oracle工具中;服务进程在一个Oracle数据库实例启动后当一个用户建立连接后创建的;后台进程则完成不同特定任务的一些进程。

Oracle的后台进程如下:
§ 写数据DatabaseWriter(DBW0或DBWn);
§ 写日志LogWriter(LGWR);
§ 检查点Checkpoint(CKPT);
§ 系统监视SystemMonitor(SMON);
§ 进程监视ProcessesMonitor(PMON);
§ 归档Archive(ARCn);
§ 恢复Recover(RECO);
§ 锁管理服务LockManagerServer(LMS)–仅在RealApplicationClusters;
§ 队列监视QueueMonitor(QMNn);
§ 调度Dispatcher(Dnnn);
§ 服务Server(Snnn);

[图片无法显示]
各后台进程之间的逻辑关系图

写数据(DBWn)
数据写进程负责将重写块(dirtyblock)从数据高速缓存中写到磁盘上的数据文件里。为了使数据库的性能受I/O限制降到最低,DBWn不是每一个块修改时立即写到磁盘上,而是等到符合一定条件后读取高速缓存中的重写块列表,并将其指定的块成批地写到数据文件中。
数据写进程活动的条件如下:
§ 服务进程无法发现可用缓存
§ 检查点出现
§ 重写块到达极限
§ 超时
§ ARC发出需求
§ 表空间脱机
§ 表空间只读
§ 表丢弃或表截断
§ 表空间开始备份
虽然一个数据库写进程(DBW0)对大多数系统是足够的,但是如果你的系统修改数据量很大要提高些性能你可以配置更多的写进程(DBW1到DBW9和DBWa到DBWj)。这些增加的DBWn进程无法在单处理系统中使用。
初始化参数DB_WRITER_PROCESSES指定了DBWn进程的序号,此参数最大允许值为20。

写日志(LGWR)
写日志进程是负责管理重做日志缓存的——将重做日志从缓存区写到磁盘重做日至文件中。LGWR写从上次写后开始到最后复制到缓存中的所有重做条目。
要记住Oracle数据库系统直到LGWR将重做信息从缓存器中写到在线重做日志才认为事务完成并发送成功代码。LGWR进程对数据库性能的影响不大。
写日志在下列条件中活动:
§ 在COMMIT;
§ 缓存器使用达到三分之一时
§ 缓存器使用达到1M时
§ 每隔3秒
§ 在DBWn活动之前

检查点进程(CKPT)
检查点进程是负责向DBWn发送信号;用检查点的信息更新数据文件头;用检查点信息更新控制文件信息。
检查点频繁出现、日志频繁切换或数据库有很多数据文件时,该进程可以减少LGWR的工作量。数据库管理员可以通过设置初始化参数CHECKPOINT_PROCESS为TRUE或FALSE来确定这个数据库实例是否使用检查点进程。在初始化参数中LOG_CHECKPOINT_INTERVAL和LOG_CHECKPOINT_TIMEOUT来改变检查点出现的频率。设置这两个参数要小心,多检查点虽然能使LGWR进程工作量下降,但是过多的检查点会导致系统处理时间和I/O时间浪费在不必要的开启和关闭检查点的执行上。

系统监视进程(SMON)
系统监视进程是有规律的周期性活动。它负责的目的如下:
§ 在实例启动中如果需要执行恢复;
§ 重新分配临时段;
§ 每隔3秒合并表空间中相邻的自由区;
§ 根据需要将表空间或数据文件回复到联机状态;
§ 对于应用集群系统,它执行恢复一个失败的CPU或Oracle实例。
系统监视这进程在数据库系统实例启动时如果出现故障,那么数据库系统将无法开始工作。如果任何停止的事务因为文件只读或脱机错误导致实例恢复过程中跳过,SMON将使表空间或文件回复到联机状态。SMON进程对于一个实例能执行实例应用集群,一个SMON对于一个实例能执行实例恢复为一个失败CPU或实例。

进程监视进程(PMON)
进程监视进程负责在下列过程失败后释放相关对象:
§ 事务回退
§ 释放相关锁
§ 释放相关资源
§ 重新分配发生错误的调度
PMON周期性的检查调度状态和服务进程,并重新使除Oracle有意终止以外的已停止的进程运行;PMON同样也注册关于实例和调度进程用于网络监听的信息。
如果这个进程在数据库系统实例启动时出现故障,那么数据库系统也将无法开始工作。

恢复进程(RECO)
恢复进程负责自动解决恢复分步式数据库系统中陷于失败的分布式事务。关于此进程的详细将在分布式数据库章节中介绍。

归档进程(ARCn)
这是一个可选的后台进程。只有当Oracle数据库实例运行在归档模式时出现。归档进程负责在日志文件切换时将所有重做日志信息复制到指定的设备文件中。
一个Oracle数据库实例最多可以拥有(ARC0到ARC9)10个归档进程。

其他Oracle的后台进程,如锁管理服务、队列监视、调度等均不是一个Oracle数据库实例必须的。

服务器进程
在一个用户进程连接到Oracle实例后将创建一个服务器进程来指定请求的句柄。有些时候一个用户进程和服务器进程运行在同一台机器中,这时候为了减少系统的开销Oracle将用户进程和服务器进程合并在一个进程中。无论如何,大多数用户在不同的机器使用,这时就需要通过服务器进程来进行他们之间的通信。
服务器进程负责分析和运行来自应用的SQL语句;如果在SGA的数据缓存中没有,将从数据文件中读必要的数据块到共享的数据缓存器中;向应用程序的用户进程返回处理结果。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/671866/viewspace-825710/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/671866/viewspace-825710/

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: