Oracle 安装在Windows操作系统下会各种进程,Linux进程编码同windows版。本文简单介绍各进程的作用及产生的条件。
进程查询语句:
select program from v$session where program like 'ORACLE.EXE%';
进程查询结果:
ORACLE.EXE (q001)
ORACLE.EXE (q000)
高级队列进程:使消息入队和出队。
ORACLE.EXE (QMNC)
高级队列协调器:监视数据库中的队列,分配以上提到的Qnnn进程使消息入队和出队。
ORACLE.EXE (ARC1)
ORACLE.EXE (ARC0)
(1)归档进程,当数据库处于归档模式时(archive mode), ARCn 负责将 online redo file归档到目标存储位置,用于数据库的恢复,当在线日志切换时,会触发 ARCn 进程将在线日志文件归档。
(2)ARCn 进程在 data guard 下,负责将日志向 standby 服务器发送。
ORACLE.EXE (J000)
job 具体执行进程,接受 CJQ0 分发的 job 任务。
ORACLE.EXE (CJQ0)
job 任务协调进程,负责数据库中 JOB 的自动执行。
ORACLE.EXE (RECO)
分布式事务的恢复进程。
ORACLE.EXE (MMNL)
是MMON的辅助进程,收集活动会话的历史采样。
ORACLE.EXE (MMON)
可管理型监视器:收集有关活动和性能的统计数据,用于自我监视和调整。
ORACLE.EXE (SMON)
(1)数据库启动时的实例恢复,在 RAC 环境下,一个节点的 SMON 可以对另外一个节点做实例恢复。
(2)清理和释放临时段上的数据(排序,临时表等)
(3)对于 DMT( 字典管理表空间) ,SMON 可以合并连续空闲的 extent.
(4)维护回滚段的 online,offline 以及空间的回收。
ORACLE.EXE (CKPT)
(1)checkpoint 的目的:
– 减少数据库实例恢复的时间
– 让内存中的脏数据及时的写到磁盘上。
– 在安全关闭数据库时,保证所有提交的数据被写到磁盘上。
(2)checkpoint 的触发
– database checkpoint
Consistent database shutdown
ALTER SYSTEM CHECKPOINT statement
Online redo log switch
ALTER DATABASE BEGIN BACKUP statement
– Tablespace and data file checkpoints
tablespace read only
tablespace offline normal
shrinking a data file
alter tablespace begin backup
– Incremental checkpoints
(3)CKPT 进程通知 DBWn 进程开始将内存(buffer cache) 中的脏数据写到磁盘的文件上。 CKPT 负责更新文件头和控制文件的信息。
ORACLE.EXE (LGWR)
(1)LGWR 负责将 log buffer 中的数据顺序的写到磁盘上的 online redo file, 由于是顺序的写入,效率要比 DBWn 高很多。
(2)LGWR 触发条件
– 用户提交事务 (commit)
– 日志切换
– 最后一次提交经过了 3 秒。
– redo log buffer 容量达到 1/3 或者达到 1M 的 redo 数据。
– DBWn 进程在把脏数据写入磁盘之前,必须保证这些脏数据对应的日志信息已经被写入磁盘,
(3)如果发现脏数据的日志信息没有吸入磁盘, DBWn 通知 LGWR 进程写日志信息,完成后继续将脏数据写入磁盘。
ORACLE.EXE (DBW0)
(1)负责将 buffer cache 中脏数据(修改过的数据)块写到磁盘上,由于数据块在磁盘上的位置不连续,这个过程会比 LGWR 比较耗时。
(2)DBWn 触发条件
– 当 server process 无法在 buffer cache 中无法找到可用的 buffer 时。
– DBWn 接到 checkpoint 的指令,将脏数据写到磁盘上。
(3)可以通过设置多个 DBWn 进程加快脏数据写入磁盘的速度
– DB_WRITER_PROCESSES
ORACLE.EXE (MMAN)
内存管理进程,主要负责内存的动态管理,分配和收回。
ORACLE.EXE (PSP0)
进程生成器:主要负责创建和管理其它Oracle进程。
ORACLE.EXE (PMON)
进程监督进程,主要用来负责如下清理工作:
(1)进程异常终止
(2)会话被杀掉
(3)事务超过空闲时间
(4)网络连接超时
(5)将实例信息注册到监听器上
(6)回滚未提交的事务,释放事务相关的资源