一、server process - 服务器进程
- 服务器进程:用来处理相应用户的请求
- 作用:
- 解析和运行应用程序提交的sql语句,包括创建执行计划
- 执行pl/sql代码
- 从数据文件读取数据块到数据库缓冲区中
- 返回结果
- 两种连接
- 如果是dedicated server,那么,每个session都会产生一个server process;
- 如果是shared server,那么oracle server固定产生一定量的server process,所有的会话共享
二、background process - 后台进程
1、中心后台进程
1.1 pmon - 进程监视器
process monitor(进程监视器):
- 进程监视器负责监视其他进程,如果其他的进程出现异常关闭的情况,进程监视器负责进程恢复;
- 进程监视器负责清理客户端进程所对应的server process的数据库缓存和释放资源;
- 进程监视器负责数据库实例的动态注册(数据库把自己的信息告诉监听器–就叫做注册)
1.2 smon - 系统监视器
system monitor(系统监视器):
- 清理临时空间
- 合并空闲空间
- 针对原来不可用的文件恢复活动的事务
- 执行rac中失败节点的实例恢复
- 清理obj$
- 收缩回滚段
- “离线”回滚段
1.3 reco - 分布式数据库恢复
recoverer process(恢复进程):负责分布式数据库的分布式事务的恢复。由于两段提交(2pc)期间的崩溃或连接丢失等原因,有些事务可能会保持准备状态,这个进程就是要恢复这些事务。
1.4 ckpt - 检查点进程
checkpoint process (检查点进程):检查点进程会按照时间先后顺序来更新控制文件和数据文件头部的检查点信息(scn),以辅助真正建立检查点的进程(dbwn);还负责驱动dbwn进程去写脏块
1.5 dbwn - 数据块写入器
database writer process (数据库写进程):负责将数据库缓冲的内容(脏buffer)写入磁盘
数据库写进程触发的条件:
- 当server process扫描了一定数量的buffer之后,仍然没有找到可用的buffer,触发dbwn写;(40%)
- 根据检查点信息,定期的触发dbwn进程;
- 当发生drop 或者 truncate的时候,触发写进程;
- 表空间置为read only;
- 表空间置为offline;
- 当做begin backup的时候,也会触发dbwn进程。
1.6 lgwr - 日志写入器
log writer process(日志写进程):将sga中重做日志缓冲区的内容刷新输出到磁盘。
日志写进程触发的条件:
- 每隔三秒钟触发一次;
- 日志缓冲区达到1/3满,或者容量达到1m,触发lgwr;
- 用户提交;
- 日志切换;
- dbwn进程触发的时候,首先触发lgwr。
lgwr and commits:只有将redo log buffer里的日志信息写回redo log,commit命令才能成功
1.7 arcn - 归档进程
archiver processes(归档进程):当在线重做日志发生切换后,如果数据库是处于归档模式,那么arcn进程负责将在线重做日志拷贝到归档位置;还负责向standby database传递日志。
在线重做日志和归档重做日志区别:前者用于再出现电源故障(实例终止)时“修正”数据文件;而归档日志是在出现磁盘故障时用于”修正“数据文件
1.8 fbda - 闪回数据归档进程
flashback data archiver process(闪回数据归档进程):在事务提交后立即工作,读取该事务生成的und0,并回滚事务做出的改变,然后将回滚的这些行(原来的值)记录在闪回数据归档中。
闪回数据归档功能:能够查询很长时间之前的数据
1.9 dbrm - 数据库资源管理器进程
database resource manager process(数据库资源管理器进程):实现为一个数据库实例配置的资源计划
1.10 gen0 - 通用任务执行进程
general task execution process(通用任务执行进程)主要目标:分担另外某个进程的阻塞处理(这种处理会导致一个进程停止),并在后台完成所阻塞的操作
1.11 其他中心进程
2、工具后台进程
2.1 cjq0 和 jnnn - 作业队列
job queue processes(作业队列):oracle用这个进程来运行用户的作业,经常是处于批处理模式
2.2 qmnc 和 qnnn - 高级队列
2.3 emnc - 时间监视器进程
event monitor process(时间监视器进程):通知某些消息感兴趣的队列订购者
2.4 mman - 内存管理器
memory manager(内存管理器):协调共享内存中各组件(默认缓冲区池、共享池、java池和大池)的大小设置和大小调整。
2.5 mmon、mmnl和mnnn - 可管理性监视器
可管理性监视器:用于填充自动工作负载存储库(automatic workload reposity,awr)。mmnl进程会根据调度从sga将统计结果刷新输出至数据库表;mmon进程用于”自动检测“数据库性能问题,并实现新增的自调整特性
2.6 ctwr - 修改跟踪进程
修改跟踪进程:负责维护新的修改跟踪文件
2.7 rvwr - 恢复写入器
恢复写入器:负责维护闪回回复区中块的”前“映像,要与 flashback database 一起使用
2.8 dwnn/dmnn - 数据泵主进程/工作进程
数据泵主进程从客户进程手机所有输入,然后协调工作进程完成元数据和数据的具体处理
2.9 其他工具后台进程
三、slave process - 从属进程
1、i/o从属进程
用途:
- dbwn 和 lgwr 可以利用 i/o 从属进程来模拟异步 i/o
- rman 写磁带时也可能利用 i/o从属进程
2、pnnn - 并行查询执行服务器
parallel query slaves(并行查询执行服务器):对于select、create table、createindex、update等sql 语句,创建一个执行计划,其中包含可以同时完成的多个(子)执行计划。将每个执行计划的输出合并在一起构成一个更大的结果。其目标是仅用少量的时间来完成操作,这只是串行完成同一操作所需时间的一小部分。