Oracle后台进程
Oracle后台进程
后台进程
Oracle数据库中的主要后台进程包括:
-
SMON - 系统监控进程,负责实例和数据库恢复。
-
PMON - 进程监控进程,负责进程控制和故障转移。
-
DBWn - 数据库写进程,负责将缓冲区数据刷新到数据文件。
-
LGWR - 日志写进程,负责将日志缓冲区数据写入日志文件。
-
CKPT - 检查点进程,负责进行数据文件和控制文件的检查点更新。
-
MMON - 内存监控进程,负责监控和优化SGA内存。
-
ARCn - 归档进程,负责存档和备份填满的日志文件。
-
RECO - 恢复进程,负责控制和协调数据库恢复操作。
-
MMAN - 内存管理进程,管理数据库内存结构。
-
MMNL - 共享服务器监视进程,管理共享服务器进程。
这些关键进程对于维护Oracle数据库的可靠性、性能和高可用性起着非常重要的作用。
SMON
smon(System Monitor)是Oracle数据库中的一个重要后台进程,主要负责进行数据库恢复和实例恢复相关的工作。
smon进程的主要功能包括:
-
进行闪回数据库的恢复 - 如果数据库发生故障,smon会根据存档日志文件中的信息恢复数据库。
-
进行介质(Media)恢复 - 如果数据文件损坏或丢失,smon可以用备份文件进行恢复。
-
进行实例恢复 - 如果实例异常关闭,smon会重新启动实例。
-
清理数据库文件 - smon会自动清理不再使用的回滚段、临时段等数据库文件。
-
管理表空间 - smon负责监控表空间的使用情况。
-
空闲空间回收 - smon会自动回收对象删除后产生的空闲空间。
-
字典管理 - smon会监控数据字典的一致性。
smon进程对保证Oracle数据库的高可用性非常重要,需要持续运行并周期性地执行上述恢复和清理任务。
PMON
pmon(Process Monitor)是Oracle数据库中的后台进程,主要负责进程控制和恢复相关的工作。
pmon进程的主要功能包括:
-
进程控制 - 负责启动和结束所有Oracle后台进程,以及进程故障转移。
-
进程恢复 - 如果有进程异常终止,pmon负责重新启动该进程。
-
清理进程产生的临时文件 - pmon会定期清理因进程运行而产生的临时文件。
-
跟踪和记录警告 - pmon会跟踪和记录各种警告信息,如参数文件错误等。
-
监控进程状态 - pmon定期监控检查所有Oracle进程的状态。
-
执行进程故障转移 - 当实例失败时,pmon负责将进程转移到另一个实例。
-
执行原始磁盘恢复 - pmon负责根据存档日志执行数据库恢复。
-
管理和监控属性文件 - 监视属性文件的参数设置。
pmon对于保证Oracle实例和数据库的正常运行非常重要,需要持续运行并进行各种监控、恢复和故障转移的工作。
DBWn
DBWn(Database Writer)是Oracle数据库中的后台进程,主要负责将数据从SGA(System Global Area,系统全局区域)刷新到数据文件中的工作。
DBWn进程的主要功能包括:
-
将脏数据块刷新到数据文件 - 当一个数据块在SGA中被修改后,DBWn将其写回磁盘。
-
编写整表扫描的数据块 - 当全表扫描读取数据块时,DBWn会及时将扫描过的数据块写回磁盘。
-
日志写操作 - DBWn按需执行Redo日志文件块的写入。
-
数据文件异步IO - DBWn根据需要进行数据文件异步IO操作。
-
保证写一致性 - 如果写操作出现故障,DBWn会负责重做写操作。
-
执行检查点操作 - DBWn定期执行检查点,将脏数据块刷新到数据文件。
-
空闲空间回收 - DBWn会将Drop操作释放的空间标记为空闲以供重用。
DBWn对于提高数据库性能非常重要,合理配置DBWn进程可以减少IO瓶颈,改善 OLTP系统的响应时间。
LGWR
LGWR(Log Writer)是Oracle数据库中的后台进程,负责管理重做日志缓冲区并将其内容刷新到联机重做日志文件中。
LGWR进程的主要功能包括:
-
将日志缓冲区的日志记录刷新到重做日志文件。
-
执行日志文件的切换操作。当当前重做日志文件填满时,LGWR会切换到下一个日志文件。
-
保证事务日志记录写入磁盘。LGWR会确保事务提交前将相关的日志记录刷新到磁盘中。
-
执行日志文件的ARCHIVE操作。LGWR会在日志切换时,将已存档的日志文件拷贝到存档目录中。
-
在实例恢复时应用存档日志文件来重做变更操作。
-
管理存储系统中的日志文件。如添加、删除重做日志文件的文件管理工作。
-
跟踪当前使用的日志文件和存档日志文件。
LGWR对保证Oracle数据库的事务和恢复机制至关重要。合理配置LGWR可以优化日志写入性能,减少数据丢失的风险。
CKPT
CKPT(CheckPoint)是Oracle数据库中的一个后台进程,主要负责执行检查点来更新数据文件头和控制文件中的信息。
CKPT进程的主要功能包括:
-
定期执行检查点 - 在日志切换或满足一定条件时,CKPT会创建一个检查点,将相关信息写入数据文件头和控制文件。
-
记录SCN - 在检查点时,CKPT会保存当前的系统变更号(SCN),用于恢复。
-
写入datafile文件头 - 在检查点时,CKPT会保存datafile文件的相关信息,如文件序号、块数量等。
-
写入控制文件 - CKPT会保存检查点创建时间、SCN号、数据文件信息等 metadata 到控制文件。
-
支持实例恢复 - 如果实例失败,可以根据控制文件中的信息进行实例恢复。
-
跟踪表空间使用 - CKPT会跟踪表空间的空闲空间信息。
-
管理存档日志 - CKPT负责标记存档日志是否可被覆写。
CKPT进程对保证数据库可以恢复至最近的一致性检查点非常重要。合理配置CKPT可以减少故障恢复时间。
MMON
MMON(Memory Monitor) 是Oracle数据库中的后台进程,主要负责监控和调节SGA(System Global Area)的内存使用情况。
MMON进程的主要功能包括:
-
监控SGA组件的内存使用 - 跟踪共享池、缓冲区高速缓存等SGA组件的内存分配和使用情况。
-
调节共享池的大小 - 根据内存使用情况,自动调整共享池大小以释放或申请更多SGA内存。
-
跟踪缓冲区缓存的使用情况 - 监控缓冲区缓存中脏块的数量,并发出写回请求。
-
优化内存的分配和使用 - 将未使用的内存重新分配给需要的SGA组件。
-
生成内存监控报告 - 收集内存使用情况并生成相关报告。
-
跟踪共享池锁等待 - 找出导致共享池争用的SQL语句。
-
优化执行SQL语句的内存 - 分析SQL语句的内存需求并优化内存分配。
MMON通过主动监控和调节SGA的使用,从而优化Oracle数据库的内存性能,防止不必要的内存争用。
MMNL
MMNL(Shared Server Monitor Light)是Oracle数据库中负责共享服务器连接管理和监控的后台进程。
MMNL进程的主要功能包括:
-
监控共享服务器进程的连接和会话 - 跟踪每个服务器进程处理的用户连接和会话数量。
-
均衡调度会话请求 - 根据服务器进程的负载情况,将新的用户会话请求分配给负载较轻的进程。
-
监控服务器进程状态 - 检测和报告服务器进程的异常终止等问题。
-
共享服务器进程管理 - 在需要时启动或终止服务器进程。
-
参数和规则管理 - 根据配置和规则动态调整共享服务器的相关参数。
-
性能统计 - 收集服务器进程的性能和统计数据。
-
问题诊断 - 分析并报告共享服务器相关的性能或故障问题。
-
共享池管理 - 与MMON协同,管理共享池的内存使用情况。
MMNL使得共享服务器模式可以灵活管理和优化资源使用情况,更好地支持多用户连接。
MMAN
MMAN(Memory Manager)是Oracle数据库中的后台进程,主要负责数据库内存管理和分配的工作。
MMAN进程的主要功能包括:
-
大内存分配 - 负责分配大于1M的大内存,比如共享池、数据缓冲区等。
-
SGA内存管理 - 管理系统全局区(SGA)的内存结构和分配。
-
跟踪SGA组件内存使用 - 监控各个SGA组件如共享池、缓冲区的内存分配情况。
-
动态SGA调整 - 根据总体内存使用情况,优化和调整SGA各组件的大小。
-
大内存释放 - 收回未使用的大内存给操作系统,避免浪费。
-
内存碎片整理 - 通过整合释放空间减少内存碎片。
-
内存分配策略 - 根据不同的内存分配需求采用不同的内存分配算法。
-
Out of Memory监控 - 监控和报告内存不足的情况。
MMAN通过主动内存管理和优化,使得Oracle数据库可以高效稳定地运行,避免不必要的内存开销。
LREG
LREG(Listener Registration) 是Oracle数据库中的一个后台进程,主要负责管理监听器进程(Listener)的注册信息。
LREG进程的主要功能包括:
-
维护监听器注册数据 - 在本地实例中维护哪些数据库服务可通过监听器访问。
-
处理服务注册请求 - 将新启动的数据库实例服务注册到监听器中。
-
服务下线通知 - 将数据库实例关闭时发出的服务下线通知传递给监听器。
-
连接服务请求转发 - 将监听器收到的连接请求转发给相应的数据库实例。
-
高可用性支持 - 在RAC环境下,管理多个实例对同一服务的注册。
-
信息同步 - 在RAC中,同步集群中各节点的监听器注册信息。
-
注册表管理 - 维护监听器的服务注册表,存储每个数据库服务的信息。
-
安全管理 - 确保只有授权过的数据库实例可以注册服务。
LREG使监听器能够动态感知数据库服务的运行状态,是Oracle数据库跟监听器集成的关键组件。
ARCn
ARCn(Archiver Process)是Oracle数据库中的后台进程,主要负责存档重做日志文件。
ARC进程的主要功能包括:
-
归档重做日志 - 当日志文件切换时,将填满的日志文件存档到指定的存档目录中。
-
验证存档 - 验证重做日志是否正确写入到存档文件中。
-
优化归档操作 - 根据重做日志大小,调整存档的参数,以优化性能。
-
异步存档模式 - 支持重做日志的异步归档。
-
跟踪存档状态 - 记录存档进程的状态,是否遇到错误等。
-
删除过期存档 - 在存档成功后,可以删除源重做日志文件释放空间。
-
满足恢复需求 - 确保所有需要的存档日志都可用于恢复。
-
故障转移支持 - 在RAC环境下,进行存档操作的容错和转移。
ARC进程对于保证重做日志的完整性以支持恢复至关重要。合理配置可以大幅优化存档过程中的性能。
RECO
RECO(Recoverer Process)是Oracle数据库中的一个后台恢复进程,主要负责处理恢复相关的操作。
RECO进程的主要功能包括:
-
协调恢复操作 - 协调并行恢复多个数据块的操作。
-
应用重做日志 - 根据存档的重做日志应用变更来恢复数据库。
-
跟踪恢复进度 - 记录数据库对象的恢复进度和状态。
-
介质恢复 - 使用备份文件来恢复因介质故障导致的数据丢失。
-
数据库完全恢复 - 将数据库恢复到指定时间点或系统变更号(SCN)。
-
阻塞回滚 - 在特定情况下阻止事务回滚的恢复操作。
-
跟踪Bad Block - 记录数据库恢复过程中发现的坏块。
-
收集统计信息 - 收集有关恢复操作的统计和性能指标。
RECO进程对于保证Oracle数据库可以可靠地进行数据恢复至关重要。