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)调度进程定时检查响应队列,如果发现响应就将响应发回用户请求进程。
本公众号是个人学习工作笔记,希望大家发现问题能及时和我本人沟通,希望你与我共同成长。个人微信zgtj12306。
欢迎关注“自学Oracle”