《Oracle数据库管理与维护实战》——2.3 Oracle进程

2.3 Oracle进程

Oracle数据库管理与维护实战
Oracle数据库中有许多进程,为了便于用户掌握,Oracle中将进程分为3种类型,分别为用户进程、服务器进程、后台进程,如图2-6所示。

2.3.1 用户进程

当用户连接数据库时,就会产生用户进程。如果要理解用户进程,我们必须掌握该类型进程涉及的两个概念,连接和会话。

1.连接
用户要与服务器进行交互,首先要建立起连接。连接是用户进程与服务器进程之间的通信通道。如果用户进程与服务器进程在同一服务器上,它们就通过服务器上的内部进程通信机制建立通信通道;如果用户进程在一个客户端,就通过网络建立通信通道。

2.会话
会话是用户与服务器之间连接的一种保持机制。当服务器确认用户身份后,就开始两者间的会话。用户进程有以下几个特点。

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

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

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

2.3.2 服务器进程

用户进程不能与数据库实例直接交互,而是通过服务器进程与数据库实例交互,服务器进程有以下特点。

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

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

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

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

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

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

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

2.3.3 专用服务器和共享服务器

服务器有两种配置方式,专用服务器配置和共享服务器配置。对不同的要求,用户可能以不同的方式连接数据库。

1.专用服务器配置
专用服务器进程中,一个用户请求对应一个服务器进程,如图2-7所示。专用服务器中的用户请求处理过程如下。

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

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

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

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

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

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

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

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

2.共享服务器配置
如果很多用户连接到专用服务器,会产生大量的服务器进程。大部分时间这些服务器进程是空闲的,这就造成大量资源的浪费。共享服务器就是使一个服务器进程管理多个用户进程,以降低系统开销,增加用户个数。

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

共享服务器配置中,实例启动时会启动一定数量的服务器进程,这些服务器进程以循环方式处理用户进程的请求。共享服务器用“调度进程”(分配器)管理用户请求。如图2-8所示,用户请求时,先加入请求队列。调度进程从请求队列中取出用户请求交给可用的共享服务器进程处理,处理完后将请求放入响应队列。Oracle可以根据请求队列的长度动态地调整共享服务器进程。

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

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

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

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

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

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

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

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

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

需要注意的是,在共享服务器配置的服务器中,可以同时用共享服务器进程和专用服务器进程。

时间: 2024-07-29 15:29:31

《Oracle数据库管理与维护实战》——2.3 Oracle进程的相关文章

《Oracle数据库管理与维护实战》——2.6 Oracle逻辑结构

2.6 Oracle逻辑结构 Oracle数据库管理与维护实战 Oracle逻辑结构是从用户角度来看数据库,对使用Oracle的用户来说,一般只关心数据库的逻辑结构,如关心表.视图等.逻辑结构从操作系统中是看不到的,只能通过数据字典查询到. 2.6.1 逻辑结构概述 从逻辑结构上讲,Oracle包括表空间(Tablespaces).段(Segments).区(Extents).数据块(Data Blocks)以及模式(Schema).数据库由若干个表空间组成,表空间又由若干个段组成,段由区组成,

《Oracle数据库管理与维护实战》——1.3 Oracle 12c新特性

1.3 Oracle 12c新特性 Oracle数据库管理与维护实战 纵观甲骨文全球大会和甲骨文公司的各种资讯,我们可以发现云计算和大数据是两个重要的主题,Oracle 12c则融合了这两大主题.与以往的Oracle数据库相比,Oracle 12c在16个方面进行了更新.本节将详细介绍Oracle 12c数据库中的16个新特性. 1.3.1 支持多线程模式 在Oracle 12c中,Oracle引入了多线程模式,允许在Windows平台之外的UNIX.Linux等系统使用多线程模式.结合多进程与

《Oracle数据库管理与维护实战》——2.7 数据分区

2.7 数据分区 Oracle数据库管理与维护实战 巨型表或索引由于太大,在数据库系统会引起类似以下几条的很多问题. 因为表变得非常大,以至于要花费大量的时间对这张表进行管理. 对巨型表进行全表扫描,会花费系统大量的时间和资源. 一个事务要查询这张巨型表,如果由于磁盘错误,读写一个数据块发生错误,整个表就变得不能用.管理员恢复这张表要耗费很长时间. 为减少这类问题的发生,Oracle使用分区表和分区索引. 2.7.1 分区表 Oracle允许将表的存储分离为一些空间较小的存储单元,这些小的存储单

《Oracle数据库管理与维护实战》——2.2 Oracle内存结构

2.2 Oracle内存结构 Oracle数据库管理与维护实战 Oracle内存存储了数据字典信息(即关于对象.逻辑结构.模式.权限等等的元数据).缓冲的应用数据.SQL语言.PL/SQL和Java程序数据,以及事物.控制.用户请求信息.图2-3是Oracle内存结构图,Oracle内存主要由SGA(系统全局区,System Global Area)和PGA(程序全局区,Program Global Area)两个区组成,此外还有重做日志缓冲区.大池.Java池等. 2-3 2.2.1 系统全局

《Oracle数据库管理与维护实战》——2.4 Oracle后台进程结构

2.4 Oracle后台进程结构 Oracle数据库管理与维护实战 后台进程存在于操作系统中,和实例同时启动,由Oracle服务器管理.后台进程维持数据库的物理结构和内存结构,如图2-9所示. 后台进程运行时会创建一个跟踪文件,用以保存实例的操作.后台进程跟踪文件的命名方法和位置随操作系统和数据库版本的不同而不同.一般来说,跟踪文件含有后台进程名或后台进程的操作系统进程ID.用户可以通过设置初始化参数文件的BACKGROUND_DUMP_DEST参数来规定后台进程跟踪文件的位置,但是有些版本的O

《Oracle数据库管理与维护实战》——2.5 Oracle物理结构

2.5 Oracle物理结构 Oracle数据库管理与维护实战 物理结构就是我们熟悉的一些物理文件,这些文件是数据库的载体,数据库中的所有数据,包括系统数据都存放在这些物理文件中,如图2-11所示. 2.5.1 数据文件 每一个Oracle数据库都有一个或多个物理的数据文件(Data File).一个数据库的数据文件包含全部数据库数据.逻辑数据库结构(如表.索引)的数据也需要存储在数据库的数据文件中.数据文件有下列特征. 一个数据文件只与一个数据库联系. 一旦建立,数据文件不能改变大小. 数据文

《Oracle数据库管理与维护实战》——1.2 Oracle各版本异同

1.2 Oracle各版本异同 Oracle数据库管理与维护实战 Oracle数据库版本众多,为帮助了解这些版本之间的区别,这里专门作一个介绍.我们先介绍Oracle最近几个系列间的异同,然后介绍Oracle最新系列Oracle 12c,最后介绍同一系列各个版本间的异同. 1.2.1 Oracle 8i和Oracle 9i Oracle 8i和Oracle 9i的"i"代表"Internet",Oracle从8i开始提出了Internet计算的概念,表明Oracle

《Oracle数据库管理与维护实战》导读

前言 Oracle数据库管理与维护实战 随着云计算时代的到来,各种类型的互联网应用和大数据层出不穷,从虚拟化技术到自助商业智能工具,这些都给传统数据库带来了新挑战.传统数据库面临着一系列需求,包括海量数据处理.大规模集群管理.建设及运营成本控制等.数据库技术与云计算环境的融合顺应了IT发展的新趋势. 无论是提到云还是数据库,甚至是两者结合的前景,都随着Oracle 的出现而得到了证实.为了方便广大读者学习,本书以Oracle 为基础,详细介绍了Oracle 相关职位所要求的知识结构和管理技能,主

《Oracle数据库管理与维护实战》——第 2 章 Oracle体系结构及其基本概念

第 2 章 Oracle体系结构及其基本概念 Oracle数据库管理与维护实战 第1章介绍了Oracle产品结构,目的是让初学者对Oracle有一些宏观的了解.Oracle是个庞大的体系,结构复杂,内容涉及内存.外存及网络.本章的目的就是让读者了解Oracle的体系结构,知道Oracle的运行机制,为后面的数据库管理打好基础.