Oracle数据库在进程中是,Oracle数据库的启动——Oracle的后台进程

1.3 Oracle的后台进程

Oracle的实例(Instance)是指一组后台进程(在Windows上是一组线程)和一块共享内存区域。图1即为Oracle数据库的实例概要图,可以看到实例的内存区域SGA和一系列的后台进程示意:

8ba1c1a71dc54c2fb93ffd18efbb0e8b.gif

图1 Oracle实例示意图

通过上一节提到的日志信息,可以清晰的看到后台进程启动的过程,这里对于数据库运行最为至关重要的进程主要有:PMON、DBWn、LGWR、CKPT、SMON、VKTM等。如果这些进程出现异常终止,则数据库将会崩溃。

下面简要介绍一些这些进程的作用。

PMON – 其全名为Process Monitor – 进程监控进程,用于监控其他用户进程,当出现用户进程失败时,执行进程恢复工作。PMON的主要恢复职责在于释放失败进程未能正常释放的内存锁和其他资源,如清理事务表状态等。

作为实例第一个启动的后台进程,PMON还肩负监控其他Oracle后台进程的职责,在必要时重启这些后台进程;此外,PMON还负责向TNS监听器注册实例。

DBWn – 其全名为 DataBase Writer Process – 数据库写进程,有时也被写作DBWR进程,该进程负责将内存中变更的数据写入磁盘数据文件。由于可以存在多个进程,所以增加 n 作为后缀,虽然大多数情况下一个数据库写进程(DBW0)就足够了,但是Oracle允许配置最多20个写进程,名称为:DBW0DBW9,DBWaDBWj。对于多处理器的系统,多个DBWR进程可以提升写性能。

DBWn进程在满足以下条件时执行脏数据(Dirty Buffer)写出:

当一个Server进程扫描一定量的Buffer后仍然不能发现可用的Buffer时,通知DBWn执行写出;

DBWn会自动阶段性的执行写出,增进检查点。

由于内存中数据块的变更是零散的,所以DBWn执行批量写出才能有利于性能提升,LGWR进程通过日志写操作,延迟DBWn的写操作,从而实现了协同与性能促进。

LGWR – 其全名为Log Writer Process – 日志写进程,LGWR进程管理SGA中的Redo Log Buffer,将其中的内容连续写出到在线的日志文件中。Oracle的Redo中记录的是可以重演事务变更的必要信息,在事务提交时,日志必须写出到日志文件中。通过LGWR对于日志文件的连续写出,就可以推延了DBWR对于脏数据的写出,从而保证DBWR可以实现批量写出的性能提升。

在以下条件下,LGWR将执行写出操作:

用户提交事务

在线日志发生切换(Log Switch)

距上次写操作3秒

Redo Log Buffer 1/3 满或者具备1 MB数据

在DBWn执行写出前,需要确保相关Dirty Buffer的对应日志都已写出,此时会通知LGWR写出此前未完成写出的相关日志。

CKPT – 其全名为Checkpoint Process – 检查点进程,它负责更新控制文件和数据文件头的检查点信息,CKPT进程还会通知DBWn进程去执行写操作。检查点信息包括检查点位置、SCN、Redo的恢复位置等。

SMON – 其全名为System Monitor Process – 系统监控进程,负责执行一系列的系统级别的清理和其他工作,包括:

在数据库启动时,执行必要的实例恢复。在RAC数据库中,SMON进程负责为失败实例执行实例恢复。

执行在实例恢复时跳过的中断事务,如由于读文件或表空间离线等错误,在实例恢复时无法执行,SMON则可以在表空间或文件在线时执行事务恢复。

回滚死事务,当一个进程异常中断,它的未提交事务就成为死事务,由SMON进程负责回滚。

清理不再使用的临时段,例如当索引创建失败时产生的遗留临时段。

在字典管理表空间中,执行连续自由区间的合并。

维护SMON_SCN_TIME系统表。SMON_SCN_TIME表记录了SCN与时间的对应关系,由SMON定期进行定新,并将一些较老的数据定期删除。

维护col_usage数据字典表、维护mod_mods系统表。

定期OFFLINE多余的回滚段。

清理obj$数据字典表中的垃圾数据。

VKTM – 其全名为Virtual Keeper of TiMe – 虚拟时钟进程,这个进程是在Oracle Database 11g中引入的进程,用于提供一个数据库内部的虚拟时钟,以计算各种时间间隔量度等,VKTM的引入降低和操作系统之间的交互,从而提高了性能。

VKTM有两种运行模式:

基础模式,秒级间隔更新;

或者作为参考时间计数器,这种方式每20毫秒更新一次,仅在高优先级时可用。

对于不同的版本,VKTM的设定模式可能不同,具体可以从告警日志文件中查知。

在Oracle 11g启动的过程中,信息提示:

VKTM running at (100ms) precision

在Oracle 12c中,信息提示:

VKTM started with pid=3, OS id=13900 at elevated priority

VKTM running at (20)ms precision

这个进程作为一个必选进程,对于数据库运行变得必不可少。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值