每个oracle进程都有自己的任务,oracle会给进程分配内存(PGA)让进程更好的完成任务。oracle进程可以分为三类:服务器进程,后台进程,从属进程。
1 服务器进程
服务器进程是执行客户端会话指令的进程。负责将客户端的指令发送到oracle服务端执行,然后将服务端的结果返回给客户端。可分为专用服务器进程和共享服务器进程。
1.1 专用服务器进程
使用专用服务器连接时,用户在登录oracle数据库时,数据库会创建专用服务进程服务用户的会话请求。这个专用服务进程在整个用户的登录会话周期内,专门为这个会话服务。所以一个会话对应一个专用服务器进程。
1.2 共享服务器进程
使用共享服务器连接时,用户在登录oracle数据库时,数据库会使用共享服务进程服务用户的会话请求。用户的请求会放在一个请求队列中,当数据库有空闲的共享服务器进程时,这个共享服务器进程就会处理用户的请求,处理完成后会将处理结果放在响应队列中,当处理结果出列后就返回给用户。所以,一个会话可能有多个共享服务器进程处理请求。
2 后台进程
后台进程可以通过v$bgprocess视图查看,名字都是以ora_开头,以实例名结束,中间是进程自身名称。
2.1 PMON:进程监视器
负责在连接出现异常中止后进行清理工作。例如,一个专用服务器“失败”或者出于某种原因被结束掉,就要由PMON进程负责善后(恢复或撤销工作),并释放资源。PMON会回滚未提交的工作,释放锁,并释放之前为失败进程分配的SGA资源。
2.2 LREG:监听注册进程
LREG进程负责将数据库实例和服务注册到监听器中
2.3 SMON:系统监视器
SMON进程用来做所有“系统级”的任务。
- 清理临时表空间
- 维护V$OBJ字典
- 管理undo
- 帮助实例恢复
2.5 CKPT:检查点进程
检查点触发后,当DBWn把对应的脏块写入磁盘后,CKPT更新数据文件以及控制文件的检查点。
2.6 DBWn:数据库块写入器
负责将脏块(修改过的块)写入磁盘的后台进程。
2.7 LGWR:日志写入器
LGWR进程负责将SGA中重做日志缓冲区的内容刷新输出到磁盘。如果满足以下条件之一时,就会做这个工作:
- 每过3秒;
- 一个提交或回滚发起时;
- LGWR被告知进行日志文件切换时;
- 重做日志缓冲区1/3满,或者已经包含1 MB的缓冲数据。
2.8 ARCn:归档进程
当一个在线重做日志文件填满时,ARCn就将其复制到另一个位置。
3 从属进程
Oracle中有两类从属进程:I/O从属进程和并行査询从属进程。
3.1 I/O从属进程
I/O从属进程用于在不支持异步I/O的系统或设备上模拟异步I/O,DBWn和LGWR可以利用I/O从属进程来模拟异步I/O
3.2 Pnnn:并行查询执行服务器
使用并行查询功能时,会使用到Pnnn。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库