oracle实例进程结构

本文介绍了Oracle数据库实例中的关键后台进程,包括SMON、PMON、DBWn、LGWR和CKPT等,以及随着版本更新新增的MMON和MMAN等进程,详细阐述了这些进程在实例运行中的作用和与SGA内存结构的交互。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实例后台进程在启动实例时启动,在终止实例时终止运行。有这样5个后台进程,oracle使用它们历史长久,系统监视器(System Monitor,SMON)、进程监视器(Process Monitor,PMON)、数据库写入器(Database Writer,DBWn)、日志写入器(Log Writer,LGWR)和检查点进程(Checkpoint Process,CKPT)。在更新的产品版本中,引入了其他多个进程,可管理性监视器(Manageability Monitor,MMON)和内存管理器(Memory Manager,MMAN)是其中两个重要的进程。

1.SMON

SMON起初的任务是安装和打开数据库。简单的讲,SMON通过查找和验证数据库控制文件来安装数据库。此后,它通过查找可验证所有数据文件和联机日志文件打开数据库。一旦打开数据库并使数据库处于使用状态后,SMON就负责执行各种内部管理任务,如合并数据文件中的可利用空间。

2.PMON

用户会话是连接到服务器进程的用户进程。服务器进程在此会话创建时启动,在会话结束时销毁。从会话有序退出涉及用户注销。在这种情况下,用户执行的任何工作都将有序完成,服务器进程将终止。如果以无序方式终止会话(可能是用户计算机重新启动),那么会话将处于一个必须进行清理的状态。PMON监视所有服务器进程,并检测会话中的任何问题。如果会话异常终止,PMON将销毁服务器进程,将其PGA内存返回给操作系统的空闲内存池,并回滚任何尚在进行的未完成任务。
注意:如果会话异常终止,PMON后台进程将回滚活动事务。

3.DBWn

始终注意一点:会话通常并不将数据写入磁盘。会话将数据(或现有数据的更改)写入数据库缓冲区。由数据库写入器负责在随后将缓冲区写入磁盘。一个实例可能有多个数据库写入器(最多不超过20个),依次成为DBW0和DBW1等。因此,使用术语DBWn指代特定的数据库写入器。默认数量是每8个CPU对应一个数据库写入器。
注意:究竟需要多少个数据库写入器?默认数量就很合适,添加多了数据库写入器性能可能会有所提升,但通常需要先考虑调整内存,一般来说,在优化磁盘I/O之前都要问问自己:为什么需要磁盘I/O呢?
DBWn将脏缓冲区从数据库缓冲区缓存写入数据文件中,但也并非缓冲区一旦变脏了,就相应的写入此缓冲区。相反,它会尽可能减少写入缓冲区的数量。通常认为,磁盘I/O会降低性能,因此,除非确有必要,就不要执行磁盘I/O。如果会话已经对缓冲区中的块进行了写操作,那么,该回话或其他会话就有可能再次写入。如果缓冲区近来还会变脏,那么为何要将其写入磁盘呢?DBWn用于选择脏缓冲区来写入磁盘(将清理缓冲区)的算法是:只选择最近未使用的缓冲区。如果由于会话重复执行读写操作,缓冲区处于十分忙碌的状态,DBWn就不会将缓冲区写入磁盘。在DBWn清理缓冲区前,可能有数百条或数千条对缓冲区的写操作。假如一个缓冲区缓存包括100万个缓冲区,其中10万个缓冲区变脏了,但DBWn可能每次直讲数百个缓冲区写入磁盘。可能有这样数百个缓冲区:一段时间来,任何会话都未曾关注过它们。DBWn根据极懒算法执行写入:尽可能少,再尽可能少。 在以下4种情况下,DBWn将执行写操作:没有任何可用缓冲区、脏缓冲区过多、遇到三秒超时和遇到检查点。
首先是没有可用缓冲区的情况。如果服务器进程需要将块复制到数据库缓冲区缓存中,则首先必须查找可用缓冲区。可用缓冲区是指既不脏(更新过,但尚未写回磁
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值