暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

oracle 服务器进程详解(一)

运维笔记本 2017-03-31
1864

专有服务器模式

1.概念

专有服务器模式是指oracle为每个用户进程启动一个专门的服务器进程,该服务器进程仅为该用户进程提供服务,直到用户进程断开连接,服务器进程才终止。服务器进程与用户进程是一对一的,新增一个服务器进程,大约需要的内存是: AIX 5-10M  ;LINUX 3-5M内存--实测是1M多。

2.工作过程

(1)用户进程向一个数据库发出连接请求

(2)位于数据库服务器中的oracle监听程序检测到用户进程请求后,首先验证用户进程提供的用户名和口令,验证通过后建立一个专用服务器(dedicated server)进程为该用户提供服务

(3)用户提交一条sql语句

(4)专用的服务器进程首先判断在shared sql area中是否存在类似的sql语句。如果不存在,将为这条sql语句分配新的shared sql area,然后解析该语句。在解析的过程中,服务器进程将检查该语句的语法正确性,同时,该语句的私有信息和数据保存到服务器的PGA中。

(5)解析完成后,服务器进程开始在数据高速缓冲区寻找sql语句所要查询的数据。如果数据不在高速缓冲区,服务器进程需要把数据从数据文件中读取到数据高速缓冲区中。

(6)服务器进程执行sql语句。如果要进行修改,则仅在数据库高速缓冲中进行更改,并将生成的redo记录保存到redo buffer中。将来LGWR进程将重做记录写入redo log,由DBWR进程将data buffer cache脏数据块写入到数据文件。

(7)执行完毕,服务器进程将结果返回给用户进程。

共享服务器模式
1.概念

共享服务器模式下一个Oracle服务器进程可能同时服务多个客户端进程。共享服务器模式必须使用Oracle net,即使客户端和服务器在同一台机器上也不例外,也就是必须通过网络连接数据库如果不实用Oracle TNS监听器,就无法使用共享服务器。

2.工作过程


(1)客户端创建一个用户进程,连接数据库

(2)oracle监听器探测到用户进程请求后,首先检查请求是否可以使用共享服务器进程,其次验证用户进程提供的用户名和口令,如果满足条件监听器将符合条件的负载最小的调度进程地址返回给用户进程,最后用户进程直接和调度程度进行通信。

(3)用户提交一条sql,调度进程对sql进行处理,然后将处理结果放入SGA中的一个先进先出(FIFO)请求队列中,同时将调度程序ID也存入请求队列

(4)当某个共享服务器进程空闲时,从“请求队列”中取出一条处理后的sql语句,并对该语句进行解析和执行,得到它所求的数据。

(5)共享服务器进程将处理结果放入SGA中的有一个“响应队列”

(6)调度程序定期检查“响应队列”,如果发现有自己送出请求的处理结果,则将结果取出。调度程序根据处理结果中保存的调度程序ID来标识该结果是否为自己的

(7)调度程序将处理结果返回给用户进程

如下图所示:

服务器进程的作用

从服务器进程的工作过程可知,服务器进程的作用有:

(1) 解析、执行客户端提交的SQL语句。
(2)从磁盘数据文件中读取必须的数据块到SGA得数据缓存区。
(3)以适当形式返回SQL语句执行结果


文章转载自运维笔记本,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论