Oracle进程

1、用户进程:当用户连接数据库时,就会产生用户进程。

1.1 连接:用户要与服务器进行交互,首先要建立起连接。连接是用户进程与服务器进程之间的通信通道。

1.2 会话:用户与服务器之间连接的一种保持机制。

用户进程有以下几个特点

1)用户进程运行在客户机上。

2)用户进程与服务器进程在同一台机器上,用户进程与服务器可以合在一起,以节省系统资源。

3)在专用服务器配置中,用户向服务器发送一个服务请求,服务器就相应建立一个服务器进程。

2、服务器进程

服务器进程有以下特点:

1)运行在服务器上,对专用服务器,一个用户请求建立一个服务器进程。在专用服务器上,服务器进程由用户进程激发,随用户进程的产生而产生,随用户进程的断开而消失。

2)对共享服务器,有可能多个用户共享一个服务器进程。

3)每一个服务器进程占用一个PGA。

服务器进程的作用有以下几点:

1)服务器进程对应用所发出的SQL语句进行语法分析和执行。

2)服务器进程从磁盘(数据文件)中读入必要的数据块到SGA的共享数据库缓存区(该块不在缓存区时)。

3)服务器进程将结果返回给应用程序处理。

3、专用服务器和共享服务器

3.1 专用服务器:一个用户请求一个服务器进程

(1)客户机启动用户进程。

(2)客户机通过Oracle Net将请求发送给服务器,服务器的监听器检测到请求。

(3)服务器验证用户发来的用户名和口令。

(4)验证用户名和口令正确后,用户发送SQL语句。

(5)专用服务器进程确定共享SQL区是否有同样的SQL,如果没有,则为SQL分配新的共享SQL区,同时进行语法分析、编译,生成执行计划,创建PGA存放当前进程的私有信息。

(6)专用服务器进程从数据库缓冲区中读数据块,如果没有所需数据块,就从磁盘读取。

(7)专用服务器进程执行SQL语句。

(8)专用服务器进程将结果返回给用户进程。

3.2 共享服务器配置:一个服务器进程管理多个用户进程,降低系统开销,增加用户个数。

共享服务器进程和专用服务器进程提供相同的功能,但共享服务器进程的PGA不包含与用户相关的数据,它仅包含栈空间。所有与用户有关的信息都包含在SGA中。每一个共享服务器进程可以存取全部会话的数据空间,从而使任何服务进程都可以处理任何会话的请求。

共享服务器处理用户请求的过程如下:

(1)服务器启动实例时也启动多个共享服务器进程和一个调度进程,同时在SGA中创建请求队列和响应队列。

(2)客户机产生用户进程并用Oracle Net将请求通知服务器。服务器Oracle Net监听检测到请求后,识别请求使用的协议,然后将用户进程连接到该协议的调度进程。如果用户请求的协议没有可用的分配器,服务器就启动专用服务器进程处理请求。

(3)用户身份确认后用户发出SQL语句,服务器调度进程分析请求,把请求和调度进程的ID一起放入到请求队列队尾。

(4)共享服务器进程确定共享SQL区是否有同样的SQL,如果没有,则为SQL分配新的SQL区,同时进行语法分析、编译、生成执行计划,创建PGA存放当前进程的私有信息。

(5)共享服务器进程从数据库缓冲区中读数据块,如果没有所需数据块,就从磁盘读取。

(6)共享服务器进程执行sql语句。

(7)请求的结果放到调度进程的响应队列。

(8)调度进程定时检查响应队列,如果发现响应就将响应发回用户请求进程。

欢迎关注“自学Oracle”

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180226G0RUUY00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券