应用和 Oracle Net Services 体系结构
本章定义了应用程序体系结构,并介绍了 Oracle 数据库和数据库应用程序如何在分布式处理环境中工作。此材料适用于几乎所有类型的 Oracle AI Database 环境。
-
Oracle 应用程序体系结构概览在本章的上下文中,应用程序体系结构是指数据库应用程序连接到 Oracle 数据库的计算环境。
-
Oracle Net Services 是一套网络组件,可在分布式异构计算环境中提供企业级连接解决方案。
-
程序界面概述 程序界面是数据库应用程序与 Oracle AI Database 之间的软件层。
-
Oracle True Cache 概述 True Cache 是 Oracle AI Database 前面的内存中只读高速缓存。
Oracle 应用程序体系结构概览
在本章的上下文中,应用程序体系结构是指数据库应用程序连接到 Oracle 数据库的计算环境。
-
客户机/服务器体系结构概览在 Oracle AI Database 环境中,数据库应用程序和数据库被分隔为客户机/服务器体系结构。
-
多层体系结构概览在传统的多层体系结构中,应用服务器为客户机提供数据,并充当客户机与数据库服务器之间的接口。
-
网格体系结构概览 在 Oracle AI Database 环境中,网格计算是一种计算体系结构,可有效将大量服务器和存储池化为灵活的按需计算资源。
客户机/服务器体系结构概览
在 Oracle AI Database 环境中,数据库应用程序和数据库被分隔为客户机/服务器体系结构。
组件如下所示:
-
client 运行数据库应用程序,例如 SQL*Plus 或 Visual Basic 数据输入程序,该程序访问数据库信息并与用户交互。
-
服务器运行 Oracle AI Database 软件并处理对 Oracle 数据库进行并发共享数据访问所需的功能。
虽然客户端应用程序和数据库可以在同一台计算机上运行,但当客户端部分和服务器部分由通过网络连接的不同计算机运行时,通常会提高效率。以下各节讨论了 Oracle AI Database 客户机/服务器体系结构中的变体。
-
分布式处理:使用多个主机处理单个任务称为分布式处理。
-
客户机/服务器体系结构的优点:分布式处理环境中的 Oracle AI Database 客户机/服务器体系结构具有许多优势。
已分配处理
使用多个主机处理单个任务称为分布式处理。
前端和后端处理发生在不同的计算机上。在图 19-1 中,客户机和服务器位于通过 Oracle Net Services 连接的不同主机上。
图 1:客户机/服务器体系结构和分布式处理

图 19-2 是描述分布式数据库的一种变体。在此示例中,一个主机上的数据库访问位于不同主机上的单独数据库上的数据。
图 2:客户机/服务器体系结构和分布式数据库

注:本章的其余部分适用于一个服务器上有一个数据库的环境。
客户机/服务器体系结构的优点
分布式处理环境中的 Oracle AI Database 客户机/服务器体系结构具有许多优势。
优势包括:
-
客户端应用程序不负责执行数据处理。相反,他们请求用户输入,从服务器请求数据,然后使用客户端工作站或终端的显示功能(例如,使用图形或电子表格)分析和呈现此数据。
-
客户机应用程序不依赖于数据的物理位置。即使数据被移动或分发到其他数据库服务器,应用程序仍然可以在很少或没有修改的情况下继续运行。
-
Oracle AI Database 利用其底层操作系统的多任务处理和共享内存功能。因此,它为客户机应用程序提供尽可能高的并发性、数据完整性和性能。
-
客户机工作站或终端可以针对数据呈现进行优化(例如,通过提供图形和鼠标支持),而服务器可以针对数据的处理和存储进行优化(例如,通过具有大量内存和磁盘空间)。
-
在联网环境中,您可以使用廉价的客户机工作站有效地访问服务器的远程数据。
-
数据库可以随系统的增长而扩展。您可以添加多个服务器来将数据库处理负载分布到整个网络(水平缩放),也可以将数据库移动到小型计算机或大型机,以利用更大的系统性能(垂直缩放)。无论哪种情况,数据和应用都很少或根本没有修改,因为 Oracle AI Database 可在系统之间移植。
-
在网络环境中,共享数据存储在服务器中,而不是存储在所有计算机上,这样可以更轻松地管理并发访问。
-
在联网环境中,客户机应用程序使用 SQL 语句向服务器提交数据库请求。收到后,服务器将处理每个 SQL 语句,这将向客户机返回结果。网络流量被最小化,因为只有请求和结果通过网络传输。
另请参阅:Oracle AI Database Administrator’s Guide 以了解有关分布式数据库的更多信息
多层体系结构概览
在传统的多层体系结构中,应用服务器为客户机提供数据,并充当客户机与数据库服务器之间的接口。
此体系结构允许使用应用服务器:
-
验证客户端的凭据,例如 Web 浏览器
-
连接到数据库服务器
-
执行请求的操作
图 19-3 中显示了多层体系结构的示例。
图 3:多层架构环境

-
客户机 客户机启动请求以在数据库服务器上执行操作。
-
Application Servers(应用服务器)应用服务器提供对客户机数据的访问。它用作客户机与一个或多个数据库服务器之间的接口,并托管应用程序。
-
Database Servers(数据库服务器)数据库服务器代表客户机提供应用服务器请求的数据。数据库执行查询处理。
-
面向服务的体系结构 (SOA) 数据库可以在传统的多层或面向服务的体系结构 (SOA) 环境中充当 Web 服务提供商。
客户端
客户机启动请求以在数据库服务器上执行操作。
客户端可以是 Web 浏览器或其他最终用户程序。在多层体系结构中,客户机通过一个或多个应用服务器连接到数据库服务器。
应用程序服务器
应用程序服务器提供对客户机数据的访问。它用作客户机与一个或多个数据库服务器之间的接口,并托管应用程序。
应用程序服务器允许瘦客户机(即配备了最少软件配置的客户机)访问应用程序,而无需对客户机进行持续维护。应用服务器还可以为客户机执行数据重新格式化,从而减少客户机工作站上的负载。
应用服务器在数据库服务器上为此客户机执行操作时,将采用该客户机的身份。最佳做法是限制应用程序服务器的特权,以防止它在客户机操作期间执行不需要和不需要的操作。
数据库服务器
数据库服务器代表客户机提供应用程序服务器请求的数据。数据库执行查询处理。
数据库服务器可以代表客户机和自身审计应用程序服务器执行的操作。例如,客户机操作可以请求要在客户机上显示的信息,而应用服务器操作可以请求与数据库服务器的连接。
在统一审计中,数据库可以将应用程序上下文(特定于应用程序的名称 - 值对)附加到统一审计线索中的记录。您可以配置数据库写入数据库审计记录的应用程序上下文。
另请参阅:Oracle AI Database Security Guide,了解审计简介
面向服务的架构 (Service-Oriented Architecture,SOA)
数据库可以作为传统多层或面向服务的架构 (SOA) 环境中的 Web 服务提供商。
SOA 是一种多层架构,它依赖于支持通过网络进行计算机到计算机交互的服务。在 SOA 的上下文中,服务是一个自给自足的功能端点,它具有定义良好的功能和服务级别协议,可以监视和管理,并有助于强制执行策略合规性。
SOA 服务通常作为可通过 HTTP 协议访问的 Web 服务来实现。它们基于 XML 标准,例如 WSDL 和 SOAP。
作为 Oracle XML DB 的一部分实施的 Oracle AI Database Web 服务功能必须由 DBA 专门启用。然后,应用程序可以通过数据库 Web 服务完成以下操作:
-
提交 SQL 或 XQuery 查询,并以 XML 形式接收结果
-
调用独立 PL/SQL 函数并接收结果
-
调用 PL/SQL 程序包函数并接收结果
数据库 Web 服务提供了向应用程序环境添加 Web 服务的简单方法,而无需使用应用程序服务器。但是,通过应用服务器(例如 Oracle Fusion Middleware)调用 Web 服务可以在 SOA 环境中提供安全性、可扩展性、UDDI 注册和可靠的消息传送。但是,由于数据库 Web 服务与 Oracle Fusion Middleware 轻松集成,因此它们可能适合优化 SOA 解决方案。
另请参见:
-
Oracle XML Developer’s Kit Programmer’s Guide(了解有关启用和使用数据库 Web 服务的信息)
-
有关 SOA 和 Web 服务的详细信息的 Oracle Fusion Middleware 文档
网格体系结构概览
在 Oracle AI Database 环境中,网格计算是一种计算体系结构,可有效将大量服务器和存储池化为灵活的按需计算资源。
模块化的硬件和软件组件可以根据需要进行连接和重新联接,以满足不断变化的业务需求。
另请参阅: Oracle Clusterware Administration and Deployment Guide,了解有关服务器和存储网格的更多详细信息
Oracle Net Services 体系结构概览
Oracle Net Services 是一套网络组件,可在分布式异构计算环境中提供企业级连接解决方案。
Oracle Net Services 支持从应用程序到数据库实例以及从数据库实例到其他数据库实例的网络会话。
Oracle Net Services 提供位置透明度、集中式配置和管理以及快速安装和配置。它还允许您最大限度地利用系统资源并提高性能。共享服务器体系结构可提高应用程序的可伸缩性和同时连接到数据库的客户机数。虚拟接口 (Virtual Interface,VI) 协议将大部分消息传送负担置于高速网络硬件上,从而释放 CPU。
Oracle Net Services 使用由各种网络支持的通信协议或应用程序编程接口 (Application Programming Interface,API) 来提供分布式数据库和分布式处理。建立网络会话后,Oracle Net Services 将充当客户机应用程序和数据库服务器的数据快递员,从而建立和维护连接并交换消息。Oracle Net Services 可以执行这些任务,因为它存在于网络中的每台计算机上。
-
Oracle Net Services 工作原理 Oracle AI Database 协议接受来自 Oracle 应用程序接口的 SQL 语句,然后将其打包以传输到 Oracle AI Database。
-
Oracle Net Listener Oracle Net Listener (监听程序)是一个服务器端进程,用于侦听传入客户机连接请求并管理到数据库的流量。当数据库实例启动时,该实例在其生命周期中的不同时间与监听程序联系,并建立指向此实例的通信路径。
-
专用服务器体系结构在专用服务器体系结构中,代表每个客户机进程创建的服务器进程称为专用服务器进程(或影子进程)。
-
共享服务器体系结构 在共享服务器体系结构中,分派程序将多个传入的网络会话请求定向到共享服务器进程池
-
Database Resident Connection Pooling(数据库驻留连接池)数据库驻留连接池 (Database Resident Connection Pooling,DRCP) 为典型的 Web 应用程序方案提供专用服务器的连接池。另请参阅:Oracle AI Database Net Services Administrator’s Guide,了解 Oracle Net 体系结构概述
Oracle Net Services 的工作原理
Oracle AI Database 协议接受来自 Oracle 应用程序接口的 SQL 语句,然后将其打包以传输到 Oracle AI Database。
通过支持的行业标准更高级别的协议或 API 实现传输。来自 Oracle AI Database 的回复通过相同的更高级别的通信机制进行打包。此工作独立于网络操作系统进行。
根据运行 Oracle AI Database 的操作系统,数据库服务器的 Oracle Net Services 软件可以包含驱动程序软件并启动其他后台进程。
另请参阅: Oracle AI Database Net Services Administrator’s Guide,了解有关 Oracle Net Services 工作原理的更多信息
Oracle Net Listener
Oracle Net Listener (监听程序)是一个服务器端进程,用于侦听传入客户机连接请求并管理到数据库的流量。数据库实例启动时,该实例在其生命周期中的不同时间与监听程序联系,并建立到此实例的通信路径。
服务注册使监听程序能够确定数据库服务及其服务处理程序是否可用。服务处理程序是充当数据库连接点的专用服务器进程或分派程序。在注册过程中,LREG 进程向监听程序提供实例名称、数据库服务名称以及服务处理程序的类型和地址。此信息使监听程序能够在客户机请求到达时启动服务处理程序。
下图显示了两个数据库,每个数据库位于单独的主机上。数据库环境由两个监听程序提供服务,每个监听程序位于一个单独的主机上。在每个数据库实例中运行的 LREG 进程与两个监听程序通信以注册数据库。
图 4:两个监听程序

图 19-5 显示通过监听程序建立 HTTP 连接的浏览器和建立数据库连接的客户机。监听程序不需要驻留在数据库主机上。
图 5:监听程序体系结构

客户机通过监听程序建立连接的基本步骤如下:
-
客户机进程或其他数据库请求连接。
-
监听程序选择合适的服务处理程序来为客户机请求提供服务,并将请求转发给处理程序。
-
客户机进程直接连接到服务处理程序。监听程序不再参与通信。
-
服务名 服务名是用于客户机连接的服务的一种逻辑表示形式。
-
多租户环境中的服务客户机必须使用服务连接到 PDB 或应用程序根。
-
服务注册 在 Oracle Net 中,服务注册是 LREG 进程通过该功能向监听程序动态注册实例信息。另请参阅:“客户端进程概述”和“服务器进程概述”
服务名
服务名称是用于客户机连接的服务的一种逻辑表示形式。
当客户机连接到监听程序时,它将请求与服务的连接。当数据库实例启动时,它会向监听程序注册自身以按名称提供一个或多个服务。因此,监听程序充当客户机与实例之间的中介,并将连接请求路由到正确的位置。
监听程序所知的单个服务可以标识一个或多个数据库实例。此外,单个数据库实例还可以向监听程序注册一个或多个服务。连接到服务的客户机不需要指定它们所需的实例。图 19-6 显示了一个与两个服务 book.example.com 和 soft.example.com 关联的单实例数据库。这些服务允许不同客户机以不同的方式标识同一数据库。数据库管理员可以限制或保留系统资源,从而可以更好地为请求这些服务之一的客户机分配资源。
图 6:与一个数据库关联的多个服务

另请参阅:Oracle AI Database Net Services Administrator’s Guide 以了解有关命名方法的更多信息
多租户环境中的服务
客户机必须使用服务连接到 PDB 或应用程序根。
使用服务名的连接将在 PDB 或应用程序根中启动新会话。前台进程,因此会话,在其生命周期的每个时刻,都有一个唯一定义的当前容器。
下图显示了使用两个不同的监听程序连接到 PDB 的两个客户机。
图 7:CDB 中的服务

-
服务创建执行
CREATE PLUGGABLE DATABASE语句创建 PDB 时,数据库会自动在 CDB 中创建并启动服务。 -
与 CDB 中容器的连接通常,CDB 管理员必须具有相应权限才能预配 PDB 并连接到各种容器。CDB 管理员是公用用户。
服务创建
执行 CREATE PLUGGABLE DATABASE 语句创建 PDB 时,数据库会自动在 CDB 中创建并启动服务。
默认服务具有将 PDB 标识为服务的初始当前容器的属性。该属性显示在 DBA_SERVICES.PDB 列中。
-
Default Services(默认服务)默认服务与 PDB 具有相同的名称。PDB 名称必须是有效的服务名称,该名称在 CDB 中必须唯一。
-
Nondefault Services(非默认服务)可以为每个 PDB 创建其他服务,每个 CDB 最多不超过 10,000 个。每个附加服务都将其 PDB 表示为初始当前容器。
默认服务
默认服务与 PDB 具有相同的名称。PDB 名称必须是有效的服务名称,该名称在 CDB 中必须唯一。
创建需要指定 AS APPLICATION CONTAINER 子句的应用程序容器时,Oracle AI Database 会自动为应用程序根创建新的默认服务。该服务与应用程序容器具有相同的名称。必须正确配置 Oracle Net Services,客户机才能访问此服务。同样,每个应用程序 PDB 都具有自己的默认服务名称,并且应用程序种子 PDB 具有自己的默认服务名称。
示例 19-1 使用默认服务切换到 PDB
此示例使用与 PDB 具有相同名称的默认服务切换到 PDB 名称 salespdb:
ALTER SESSION SET CONTAINER = salespdb;
非默认服务
可以为每个 PDB 创建其他服务,每个 CDB 最多 10,000 个服务。每个附加服务都将其 PDB 表示为初始当前容器。
在图 19-7 中,erppdb 和 hrpdb 存在非默认服务。例如,在图 19-7 中,名为 hrpdb 的 PDB 具有名为 hrpdb 的默认服务。无法删除默认服务。
使用 ALTER SESSION SET CONTAINER 切换到容器时,会话将对该容器使用默认服务。(可选)可以通过指定 SERVICE = service_name(其中 service_name 是服务名称)对容器使用其他服务。您可能希望使用特定服务,以便会话可以利用其服务属性和功能,例如服务度量、负载平衡、资源管理器设置等。
示例 19-2 使用非默认服务切换到 PDB
在此示例中,hrpdb 的默认服务不支持所有服务属性和功能,例如服务度量、FAN、负载平衡、Oracle AI Database Resource Manager、Transaction Guard、Application Continuity 等。您可以按如下方式切换到非默认服务:
ALTER SESSION SET CONTAINER = hrpdb SERVICE = hrpdb_full;
连接到 CDB 中的容器
通常,CDB 管理员必须具有相应权限才能预配 PDB 并连接到各种容器。CDB 管理员是公用用户。
CDB 管理员可以使用以下任一技术:
-
直接连接到 PDB 或应用程序根。
用户需要容器中的
CREATE SESSION特权。 -
使用
ALTER SESSION SET CONTAINER语句可在容器之间切换,这对于连接池和高级 CDB 管理都很有用。语法为ALTER SESSION SET CONTAINER = container_name [SERVICE = service_name]。例如,CDB 管理员可以在一个会话中连接到根,然后在同一会话中切换到 PDB。在这种情况下,用户需要容器中的
SET CONTAINER系统权限。
下表介绍了图 19-7 中涉及 CDB 的方案。每一行描述在前一行中的操作之后发生的操作。公用用户 SYSTEM 查询当前容器的名称和 CDB 中 PDB 的名称。
表 1 CDB 中的服务
| 操作 | 说明 |
|---|---|
|
CDB 中所有容器共有的 SYSTEM 用户使用名为 prod 的服务连接到根。 |
|
SYSTEM 使用 SQL*Plus 命令 SHOW CON_NAME 列出用户当前连接到的容器的名称。CDB$ROOT 是根容器的名称。 |
|
对 V$SERVICES 的查询显示存在三个 PDB,其中包含与 PDB 名称匹配的服务名称。hrpdb 和 erppdb 都具有附加服务。 |
|
SYSTEM 使用 ALTER SESSION 连接到 hrpdb。 |
|
查询确认当前容器现在为 hrpdb。 |
另请参阅: Oracle AI Database SQL Language Reference,了解 ALTER SESSION SET CONTAINER 的语法和语义
服务注册
在 Oracle Net 中,服务注册是 LREG 进程通过此功能向监听程序动态注册实例信息。
此信息使监听程序能够将客户机连接请求转发到相应的服务处理程序。LREG 向监听程序提供有关以下内容的信息:
-
数据库提供的数据库服务的名称
-
与服务关联的数据库实例的名称及其当前和最大负载
-
可供实例使用的服务处理程序(分派程序和专用服务器),包括其类型、协议地址以及当前和最大负载
服务注册是动态的,不需要在 listener.ora 文件中进行配置。动态注册可降低多个数据库或实例的管理开销。
初始化参数 SERVICE_NAMES 列出实例所属的服务。在启动时,每个实例都会向属于相同服务的其他实例的监听程序注册。在数据库操作期间,每个服务的实例将有关 CPU 使用和当前连接计数的信息传递给同一服务中的所有监听程序。此通信支持动态负载平衡和连接故障转移。
另请参见:
-
Oracle AI Database Net Services Administrator’s Guide(了解有关服务注册的更多信息)
-
Oracle Real Application Clusters Administration and Deployment Guide,了解 Oracle RAC 中的实例注册和客户机/服务连接
专用服务器体系结构
在专用服务器体系结构中,代表每个客户机进程创建的服务器进程称为专用服务器进程(或影子进程)。
专用服务器进程与客户机进程分离,并且仅代表专用服务器进程执行操作,如 Figure 19-8 所示。
图 8:使用专用服务器进程的 Oracle AI Database

客户机进程与服务器进程之间存在一对一的比率。即使用户没有主动发出数据库请求,专用服务器进程仍然处于不活动状态,并且可以在某些操作系统上分页。图 19-8 显示在联网计算机上运行的用户进程和服务器进程。但是,如果同一台计算机同时运行客户机应用程序和数据库代码,但主机操作系统无法在单个进程中运行这两个程序,则也会使用专用服务器体系结构。Linux 就是这样一个操作系统的例子。
在专用服务器体系结构中,用户和服务器进程使用不同的机制进行通信:
-
如果客户机进程和专用服务器进程在同一台计算机上运行,则程序接口将使用主机操作系统的进程间通信机制来执行其作业。
-
如果客户机进程和专用服务器进程在不同的计算机上运行,则程序接口将提供程序之间的通信机制(例如网络软件和 Oracle Net Services)。
未充分利用的专用服务器有时会导致操作系统资源的低效使用。以具有专用服务器进程的订单录入系统为例。顾客在店员向数据库输入订单时下订单。对于大多数交易,店员正在与客户交谈,而专用于店员客户端流程的服务器流程处于空闲状态。在大多数事务处理期间不需要服务器进程,如果系统管理太多进程,则对于输入订单的其他职员而言,系统可能会变慢。对于这种类型的应用程序,共享服务器体系结构可能更可取。
另请参阅:Oracle AI Database Net Services Administrator’s Guide,以了解有关专用服务器进程的更多信息
共享服务器体系结构
在共享服务器体系结构中,分派程序将多个传入的网络会话请求定向到共享服务器进程池
共享池消除了每个连接都需要专用服务器进程的麻烦。来自池中的某个闲置共享服务器进程从公用队列挑选请求。
共享服务器的潜在优势如下:
-
减少操作系统上的进程数
少数共享服务器可以执行与许多专用服务器相同的处理量。
-
减少实例 PGA 内存
每个专用或共享服务器都有一个 PGA。更少的服务器进程意味着更少的 PGA 和更少的进程管理。
-
提高应用程序的可扩展性和可同时连接到数据库的客户机数量
-
当客户机连接和断开连接的速率很高时,可能比专用服务器快
共享服务器有几个缺点,包括某些情况下响应时间较慢、功能支持不完整以及设置和调优的复杂性增加。作为一般准则,只有当与数据库的并发连接多于操作系统可以处理的连接时,才使用共享服务器。
在共享服务器体系结构中需要以下进程:
-
将客户机进程连接到分派程序或专用服务器的网络监听程序(该监听程序是 Oracle Net Services 的一部分,而不是 Oracle AI Database)
注:要使用共享服务器,客户机进程必须通过 Oracle Net Services 进行连接,即使该进程在与 Oracle AI Database 实例相同的计算机上运行也是如此。
-
一个或多个 dispatcher process,DNnn
-
一个或多个共享服务器进程
数据库可以同时支持共享服务器和专用服务器连接。例如,一个客户机可以使用专用服务器进行连接,而另一个客户机使用共享服务器连接到同一数据库。
-
调度员请求和响应队列 来自用户的请求是用户 SQL 语句中的单个 API 调用。
-
共享服务器的受限操作 连接到分派程序进程时,无法执行特定管理活动,包括关闭或启动实例和介质恢复。
另请参见:
-
Oracle AI Database Net Services Administrator’s Guide(了解有关共享服务器体系结构的更多信息)
-
Oracle AI Database Administrator’s Guide,了解如何为共享服务器配置数据库
调度员请求和响应队列
来自用户的请求是属于用户 SQL 语句的单个 API 调用。
当用户进行调用时,将发生以下操作:
-
分派程序将请求放置在请求队列中,下一个可用的共享服务器进程将在该队列中选取该请求。
请求队列在 SGA 中,对于实例的所有分派程序进程都是公用的。
-
共享服务器进程会检查新请求的通用请求队列,并首先选取新请求。
-
一个共享服务器进程在队列中选取一个请求,并对数据库进行所有必要的调用以完成此请求。
不同的服务器进程可以处理每个数据库调用。因此,对查询进行语法分析、提取第一行、提取下一行并关闭结果集的请求可能由不同的共享服务器进行处理。
-
当服务器进程完成请求时,它将响应放置在调用调度程序的响应队列中。每个调度员都有自己的响应队列。
-
分派程序将完成的请求返回到相应的客户机进程。
例如,在订单录入系统中,每个职员的客户机进程都连接到分派程序。职员提出的每个请求都将发送到此调度员,该调度员将请求置于队列中。下一个可用的共享服务器将获取请求,为其提供服务,并将响应放入响应队列。请求完成后,办事员将保持连接到分派程序,但处理请求的共享服务器将释放并可供其他请求使用。当一名职员与客户交谈时,另一名职员可以使用相同的共享服务器进程。图 19-9 显示了客户机进程如何通过 API 与分派程序通信以及分派程序如何将用户请求与共享服务器进程通信。
图 9:共享服务器配置和进程

-
分派程序进程 (Dnnn) 通过分派程序进程,客户机进程可以共享有限数量的服务器进程。
-
共享服务器进程 (Snnn) 每个共享服务器进程在共享服务器配置中为多个客户机请求提供服务。另请参见:“大型池”
分派程序进程 (D nnn )
使用分派程序进程,客户机进程可以共享有限数量的服务器进程。
可以为单个数据库实例创建多个分派程序进程。分派程序进程的最佳数量,具体取决于操作系统的限制以及每个进程的连接数。
注:连接到分派程序的每个客户机进程都必须使用 Oracle Net Services,即使两个进程都在同一主机上运行也是如此。
分派程序进程按如下方式建立通信:
-
当实例启动时,网络监听程序进程将打开并建立用户连接到 Oracle AI Database 的通信路径。
-
每个分派程序进程都为监听程序进程提供一个地址,在该地址中分派程序将监听连接请求。
必须为数据库客户机将使用的每个网络协议配置和启动至少一个分派程序进程。
-
当客户机进程发出连接请求时,监听程序将确定客户机进程是否应使用共享服务器进程:
-
如果监听程序确定共享服务器进程是必需的,则监听程序将返回负载最轻的分派程序进程的地址,并且客户机进程将直接连接到分派程序。
-
如果进程无法与分派程序通信,或者客户机进程请求专用服务器,则监听程序将创建一个专用服务器进程并建立适当的连接。
-
另请参阅:Oracle AI Database Net Services Administrator’s Guide,了解如何配置调度员
共享服务器进程 (S nnn )
每个共享服务器进程在共享服务器配置中为多个客户机请求提供服务。
共享和专用服务器进程提供相同的功能,但共享服务器进程未与特定客户机进程关联。相反,共享服务器进程为共享服务器配置中的任何客户机请求提供服务。
共享服务器进程的 PGA 不包含 UGA 数据,所有共享服务器进程都必须可以访问 UGA 数据。共享服务器 PGA 仅包含特定于进程的数据。
SGA 中包含所有与会话相关的信息。每个共享服务器进程必须能够访问所有会话的数据空间,以便任何服务器都可以处理来自任何会话的请求。系统会在 SGA 中为每个会话的数据空间分配空间。
另请参阅:“程序全局区 (Program Global Area,PGA) 概览”
共享服务器的受限操作
连接到分派程序进程时,无法执行特定的管理活动,包括关闭或启动实例和介质恢复。
这些活动通常在与管理员权限连接时执行。要在配置有共享服务器的系统中使用管理员特权进行连接,必须指定您正在使用专用服务器进程。
另请参阅:Oracle AI Database Net Services Administrator’s Guide,了解正确的连接字符串语法
数据库驻留连接共享
数据库驻留连接池 (Database Resident Connection Pooling,DRCP) 为典型的 Web 应用程序方案提供了一个专用服务器的连接池。
Web 应用程序通常建立数据库连接,简要使用连接,然后将其释放。通过 DRCP,数据库可以扩展到数万个同时连接。
DRCP 具有以下优点:
-
补充中间层连接池,这些连接池在中间层进程中的线程之间共享连接。
-
允许在多个中间层进程之间共享数据库连接。这些中间层进程可能属于同一或不同的中间层主机。
-
显著减少了支持许多客户机连接所需的关键数据库资源。例如,DRCP 可以减少数据库所需的内存,并提高数据库和中间层的可扩展性。可用服务器池还可降低重新创建客户机连接的成本。
-
为具有多进程、单线程应用服务器(如 PHP 和 Apache)的体系结构提供池,这些服务器无法执行中间层连接池。
DRCP 使用池化服务器,该服务器等效于专用服务器进程(而非共享服务器进程)和数据库会话组合。池化服务器模型可避免在短时间内为需要服务器的每个连接使用服务器所产生的开销。
从数据库驻留连接池获取连接的客户机连接到称为连接中介的 Oracle 后台进程。连接中介实现池功能,并在客户机进程的入站连接之间对池服务器进行多路复用。
如图 19-10 中所示,当客户机需要数据库访问时,连接中介从池中提取服务器进程并将其移交给客户机。客户机将直接连接到服务器进程,直到提供请求。服务器完成后,服务器进程将释放到池中。从客户端的连接将恢复到中介。
图 10:DRCP

在 DRCP 中,释放资源会使会话保持不变,但不再与连接(服务器进程)关联。与共享服务器不同,此会话将其 UGA 存储在 PGA 中,而不是 SGA 中。客户机可以在检测活动后透明地重新建立连接。
另请参见:
-
“连接和会话”
-
Oracle AI Database Administrator’s Guide 和 Oracle Call Interface Developer’s Guide 可了解有关 DRCP 的更多信息
方案接口概览
程序界面是数据库应用程序与 Oracle AI Database 之间的软件层。
程序接口执行以下功能:
-
提供安全屏障,防止客户机进程对 SGA 进行破坏性访问
-
充当通信机制,设置信息请求的格式,传递数据以及捕获和返回错误
-
转换和转换数据,特别是在不同类型的计算机之间或外部用户程序数据类型之间
Oracle 代码充当服务器,代表应用程序(客户机)执行数据库任务,例如从数据块提取行。程序界面由多个部分组成,这些部分由 Oracle AI Database 软件和特定于操作系统的软件提供。
-
程序接口结构:程序接口由多个不同的组件组成。
-
Program Interface Drivers(程序接口驱动程序)驱动程序是传输数据(通常跨网络)的一款软件。
-
Communications Software for the Operating System(适用于操作系统的通信软件)将用户端连接到程序界面的 Oracle AI Database 端的最低级别软件是主机操作系统提供的通信软件。
程序接口结构
程序接口由几个不同的组件组成。
这些组件包括:
-
Oracle 呼叫接口 (OCI) 或 Oracle 运行时库 (SQLLIB)
-
程序界面的客户端或用户端
-
各种 Oracle Net Services 驱动程序(特定于协议的通信软件)
-
操作系统通信软件
-
程序接口的服务器或 Oracle AI Database 端(也称为 OPI)
程序界面的用户和 Oracle AI Database 端与驱动程序一样运行 Oracle 软件。
程序接口驱动程序
驱动程序是传输数据的一款软件,通常通过网络传输数据。
驱动程序执行连接、断开连接、信号错误等操作,并测试错误。驱动程序特定于通信协议。
始终存在默认驱动程序。您可以安装多个驱动程序(例如异步驱动程序或 DECnet 驱动程序),然后选择一个驱动程序作为缺省驱动程序,但允许用户在连接时通过指定驱动程序来使用其他驱动程序。
不同的进程可以使用不同的驱动程序。一个进程可以使用不同的 Oracle Net Services 驱动程序与单个数据库或多个数据库建立并发连接。
另请参见:
-
有关选择、安装和添加驱动程序的详细信息,请参阅系统安装和配置指南
-
Oracle AI Database Net Services Administrator’s Guide,了解 JDBC 驱动程序
适用于操作系统的通信软件
将用户端连接到程序界面的 Oracle AI Database 端的最底层软件是主机操作系统提供的通信软件。
例如,DECnet、TCP/IP、LU6.2 和 ASYNC。通信软件可以由 Oracle 提供,但通常是从硬件供应商或第三方软件供应商单独购买的。
Oracle True Cache 概览
True Cache 是 Oracle AI Database 前面的内存中只读高速缓存。
与 Oracle Active Data Guard 一样,True Cache 是主数据库的完全正常运行、只读副本,只是它大多是无盘的。
现代应用通常需要大量连接以及快速、低延迟地访问数据。一种流行的方法是将高速缓存放置在数据库前面,因为应用程序执行的读取数通常比更新多,并且可以从高速缓存中读取而不会影响数据库性能。例如,当人们购买航班时,航空公司预订系统会频繁读取数据,如果数据与数据库中的数据相比不是最新的,那就没关系了。只有当有人预订航班时,应用程序才需要访问最新数据。
与传统缓存不同,True Cache 会自动将最常访问的数据保存在缓存中,并保持缓存与主数据库、同一缓存中的其他对象以及其他缓存保持一致。它缓存所有 Oracle AI Database 对象和数据类型,包括 JSON。
由于 True Cache 实施了 Oracle AI Database 安全策略,因此您可以控制对高速缓存的访问。这使您能够缓存您通常不会缓存的敏感数据,例如私人个人信息。
相关主题