Oracle 的三种服务方式:
专 用 服 务 器 (Dedicated
Server)
共享服务器(Shared Server) 数据库持久连接池(DRCP)
客户端请求到来时,会为客
户端建立新的进程与会话
当 第 一 个 请 求 到 达
时,Dispatch 进程将请求放
入到 common 队列中,然后
被可用的共享服务器进程拾
起,Dispatch 进程负责两者
之间的交互
当请求到达时, Connection
Broker 拾起一个可用的池服
务器进程并移交客户端连接
到池服务器进程上。如果池
中无进程可用, Connection
会创建一个。若池到达最大
大小时,客户端请求被放到
等待队列中直到池中有可用
进程
释放包括终止会话和服务器
进程的数据库资源
释放包括终止会话的数据库
资源
释放包括池进程的数据库资
源
内存使用与请求有关,一个
客户端对应一个服务器进程
和一个会话。
内存与共享服务器进程数及
会话有关。一个客户端对应
一个会话
内存与池中服务进程数量及
会话数有关,一个会话对应
一个进程
会话内存从 PGA 中分配 会话内存从 SGA 中分配 会话内存从 PGA 中分配
关天三种服务方式内存占用举例:
假设在一个应用中对于每个 session 的内存需求是 400KB,对于每个服务进程的内存需求是
4MB。池大小为 100,共享服务进程为 100,如果有 5000 个客户端连接,针对每一配置,
内存使用如下:
专用服务器模式:
使用内存=5000*(400KB+4MB)=22GB
共享服务器模式:
内存使用=5000*400KB+100*4MB=2.5GB
DRCP 模式:
内存使用=100*(400KB+4MB)=615MB
Oracle 后台进程:
DBWn:数据库写进程.从数据库缓冲区内将修改过的数据块写入到数据文件中。最大数量为
36 个,编号从 DBW-0-DBW9 和 DBWa-DBWj.o 默认情况下,数据库会基于 CPU 的使用情
况和进程组的数量选择一个合适的 DB_WRITER_PROCESSES 初始化参数,或者根据用户的定义来
指定。
LGWR:日志写进程。写重做日志条目到硬盘上(重做日志文件中),重做日志条目产生于 SGA 的重做日
志缓冲区里。如果有多个重做日志文件,会写入到一组日志文件中。
CKPT:检查点进程。在某一时刻,所有 SGA 中修改过的数据库缓冲数据会被 DBWn 写入数据文件中这个
事件被称为检查点。检查点进程负责在各检查点通知 DBWn 更新所有的数据文件与控制文件以表明最近的
检查点。
SMON:系统监控进程。当一个已经失败的实例再次启动时,系统监控进程完成实例的恢复。在 ORACLE 应
用集群环境中,一个实例的监控进程能完成对其它已失败实例的恢复。SMON 清除不再使用的临时段,恢
复在由于文件读取或者离线错误引起的系统失败及实例恢复期间被中止跳过的事务。
PMON:进程监控进程。当用户进程失败时,它负责完成进程的恢复。PMON 负责完成清理缓冲区及释放相