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

Oracle 20C官方文档-Concepts(Part V-4)

IT小Chen 2021-04-14
462

Oracle 20C官方文档-Concepts(Part V-4)

Oracle® Database

Database Concepts

Part I Oracle Relational Data Structures

Part II Oracle Data Access

Part III Oracle Transaction Management

Part IV Oracle Database Storage Structures

Part V Oracle Instance Architecture

---1 Oracle Database Instance

---2 Memory Architecture

---3 Process Architecture

---4 Application and Oracle Net Services Architecture

16 应用程序和Oracle网络服务体系结构

Application and Oracle Net Services Architecture 

本章定义了应用程序体系结构,并描述了Oracle数据库和数据库应用程序在分布式处理环境中的工作方式。本文适用于几乎所有类型的Oracle数据库环境。

本章包括以下章节:

•Oracle应用程序架构概述

•Oracle网络服务架构概述

•程序接口概述

Oracle应用程序架构概述

在本章的上下文中,应用程序体系结构指的是数据库应用程序连接到Oracle数据库的计算环境。

本节包含以下主题:

•客户端/服务器架构概述

•多层架构概述

•网格架构概述

客户/服务器体系结构概述

Oracle数据库环境中,数据库应用程序和数据库被分为客户机/服务器架构。

组成部分如下:

•客户端运行数据库应用程序,例如SQL*Plus或Visual Basic数据输入程序,它访问数据库信息并与用户交互。

•服务器运行Oracle数据库软件,并处理对Oracle数据库的并发、共享数据访问所需的功能。

虽然客户机应用程序和数据库可以在同一台计算机上运行,但是当客户机部分和服务器部分由通过网络连接的不同计算机运行时,通常可以获得更高的效率。下面几节讨论Oracle数据库客户机/服务器体系结构中的变化。

分布式处理

使用多个主机来处理单个任务称为分布式处理。

前端和后端处理在不同的计算机上进行。

在图16-1中,客户机和服务器位于通过Oracle Net Services连接的不同主机上。

16-2是描述分布式数据库。在本例中,一个主机上的数据库访问位于不同主机上的另一个数据库上的数据。

客户机/服务器体系结构的优点

分布式处理环境中的Oracle数据库客户机/服务器体系结构提供了许多优点。

优点包括:

•客户端应用程序不负责执行数据处理。相反,它们从用户请求输入,从服务器请求数据,然后使用客户机工作站或终端的显示功能(例如,使用图形或电子表格)分析和显示这些数据。

•客户端应用程序不依赖于数据的物理位置。即使数据被移动或分发到其他数据库服务器,应用程序仍然可以在很少或没有修改的情况下运行。

Oracle数据库利用其底层操作系统的多任务和共享内存设施。因此,它为客户端应用程序提供了尽可能高的并发性、数据完整性和性能。

•客户端工作站或终端可以优化数据的展现形式(例如,通过提供图形和鼠标支持),而服务器可以优化数据的处理和存储(例如,通过拥有大量的内存和磁盘空间)

•在网络环境中,可以使用廉价的客户机工作站有效地访问服务器的远程数据。

•数据库可以随着系统的增长而扩展。您可以添加多个服务器来在整个网络中分配数据库处理负载(水平扩展),或者您可以将数据库移动到小型计算机或大型机上以利用大型系统的性能(垂直扩展)。在这两种情况下,数据和应用程序几乎不需要修改就可以维护,因为Oracle数据库在系统之间是可移植的。

•在网络环境中,共享数据存储在服务器上,而不是所有计算机上,这使得管理并发访问更容易、更有效。

•在网络环境中,客户端应用程序使用SQL语句向服务器提交数据库请求。接收到SQL语句后,服务器将处理每条SQL语句,并将结果返回给客户机。网络流量被最小化,因为只有请求和结果通过网络传送。

多层体系结构概述

在传统的多层体系结构中,应用服务器为客户机提供数据,并充当客户机和数据库服务器之间的接口。

此架构可使用应用服务器:

•验证客户端的凭据,例如Web浏览器

•连接到数据库服务器

•执行请求的操作

16-3显示了多层体系结构的一个示例。

客户端

客户端发起一个请求,要求在数据库服务器上执行一个操作。

客户端可以是Web浏览器或其他终端用户程序。在多层体系结构中,客户机通过一个或多个应用程序服务器连接到数据库服务器。

应用程序服务器

应用服务器为客户机提供对数据的访问。它充当客户机和一个或多个数据库服务器之间的接口,并承载应用程序。

应用服务器允许瘦客户机(拥有最少的软件配置的客户机)访问应用程序,而不需要持续维护客户机计算机。应用服务器还可以为客户机执行数据格式化,从而减少客户机工作站上的负载。

当应用程序服务器为该客户机在数据库服务器上执行操作时。最好能够限制应用服务器的权限,以防止它在客户端操作期间执行不需要和不想要的操作。

数据库服务器

数据库服务器提供应用服务器代表客户机请求的数据。数据库执行查询处理。

数据库服务器可以审计应用服务器代表客户端和它自己执行的操作。例如,客户端操作可以请求在客户端上显示的信息,而应用服务器操作可以请求到数据库服务器的连接。

在统一审计中,数据库可以将应用程序上下文(应用程序特定的名称-值对)附加到统一审计跟踪中的记录。可以配置数据库将哪些应用程序上下文写入数据库审计记录。

面向服务的体系结构(SOA)

在传统的多层或面向服务的体系结构(SOA)环境中,数据库可以充当Web服务提供者。

SOA是一种多层体系结构,它依赖于支持网络上计算机间交互的服务。在SOA上下文中,服务是一个自给自足的功能端点,具有定义良好的功能和服务级别协议,可以监视和管理,并可以帮助实施策略遵从性。

SOA服务通常实现为通过HTTP协议访问的Web服务。它们基于WSDLSOAPXML标准。

作为Oracle XML DB的一部分实现的Oracle数据库Web服务功能必须由DBA专门启用。应用程序可以通过数据库Web服务完成以下任务:

•提交SQLXQuery查询并接收XML格式的结果

•调用独立的PL/SQL函数并接收结果

•调用PL/SQL包函数并接收结果

数据库Web服务提供了一种向应用程序环境添加Web服务的简单方法,而不需要应用程序服务器。但是,通过应用服务器(Oracle Fusion中间件)调用Web服务可以在SOA环境中提供安全性、可伸缩性、UDDI注册和可靠的消息传递。

但是,由于数据库Web服务很容易与Oracle Fusion中间件集成,因此它们可能适合于优化SOA解决方案。

GRID网格架构概述

Oracle数据库环境中,网格计算是一种计算架构,它有效地将大量服务器和存储汇聚到一个灵活的、随需应变的计算资源中。

模块化的硬件和软件组件可以根据需要进行连接和重新连接,以满足不断变化的业务需求。

Oracle网络服务体系结构概述

Oracle Net Services是一套网络组件,在分布式、异构的计算环境中提供企业级的连接解决方案。

Oracle Net Services支持从应用程序到数据库实例的网络会话,以及从数据库实例到另一个数据库实例的网络会话。

Oracle Net Services提供位置透明性、集中式配置和管理,以及快速安装和配置。它还允许最大化系统资源并提高性能。共享服务器体系结构增加了应用程序的可伸缩性和同时连接到数据库的客户机数量。虚拟接口(VI)协议将大部分消息传递负担放在高速网络硬件上,从而释放了CPU

Oracle Net Services使用广泛的网络支持的通信协议或应用程序编程接口(api)来提供分布式数据库和分布式处理。网络会话建立后,Oracle Net Services充当客户机应用程序和数据库服务器的数据信使,建立和维护连接并交换消息。Oracle Net服务可以执行这些任务,因为它存在于网络中的每台计算机上。

本节包含以下主题:

Oracle网络服务如何工作

Oracle网络监听器

•专用服务器架构

•共享服务器架构

•数据库常驻连接池

Oracle网络服务是如何工作的

Oracle数据库协议接受来自Oracle应用程序接口的SQL语句,然后将它们打包传输到Oracle数据库。

传输通过受支持的行业标准的高级协议或API进行。来自Oracle数据库的回复是通过相同的高级通信机制打包的。这项工作与网络操作系统无关。

根据运行Oracle数据库的操作系统,数据库服务器的Oracle Net Services软件可以包含驱动程序软件并启动额外的后台进程。

Oracle网络监听器

Oracle Net监听器(Listener)是一个服务器端进程,它监听传入的客户机连接请求并管理到数据库的流量。当数据库实例启动时,以及在其生命周期中的不同时间,实例将与侦听器联系,并建立到此实例的通信路径。

服务注册使侦听器能够确定数据库服务及其服务处理程序是否可用。服务处理程序是作为数据库连接点的专用服务器进程或调度程序。在注册期间,LREG进程向侦听器提供实例名、数据库服务名称以及服务处理程序的类型和地址。此信息使侦听器能够在客户端请求到达时启动服务处理程序。

下图显示了两个数据库,分别位于不同的主机上。数据库环境由两个侦听器提供服务,每个侦听器位于单独的主机上。运行在每个数据库实例中的LREG进程与两个侦听器通信以注册数据库。

16-5显示了浏览器进行HTTP连接和客户机通过侦听器进行数据库连接。侦听器不需要驻留在数据库主机上。

客户端通过监听器建立连接的基本步骤如下:

1.客户端进程或另一个数据库请求连接。

2.侦听器选择适当的服务处理程序来服务客户机请求,并将请求转发给处理程序。

3.客户端程直接连接到服务处理程序。侦听器不再参与后续工作

服务名称

服务名称是用于客户端连接的服务的逻辑表示。

当客户机连接到侦听器时,它请求到服务的连接。当数据库实例启动时,它向侦听器注册自己,作为按名称提供一个或多个服务。因此,侦听器充当客户机和实例之间的中介,并将连接请求路由到正确的位置。

侦听器所知道的单个服务可以标识一个或多个数据库实例。此外,单个数据库实例可以向侦听器注册一个或多个服务。

连接到服务的客户机不需要指定它们需要的实例。

16-6显示了一个与两个服务(book.example.comsoft.example.com)关联的单实例数据库。这些服务允许不同的客户机以不同的方式标识相同的数据库。数据库管理员可以限制或保留系统资源,从而为请求这些服务之一的客户机提供更好的资源分配

服务注册

Oracle Net中,服务注册是LREG进程向侦听器动态注册实例信息的特性。

此信息使侦听器能够将客户端连接请求转发到适当的服务处理程序。LREG为监听者提供以下信息:

•数据库提供的数据库服务的名称

•与服务相关的数据库实例的名称及其当前和最大负载

•实例可用的服务处理程序(调度程序和专用服务器),包括它们的类型、协议地址、当前和最大负载

服务注册是动态的,不需要在listener.ora文件中进行配置。动态注册减少了多个数据库或实例的管理开销。

初始化参数SERVICE_NAMES列出了实例所属的服务。在启动时,每个实例向属于相同服务的其他实例的侦听器注册。在数据库操作期间,每个服务的实例将有关CPU使用和当前连接计数的信息传递给相同服务中的所有侦听器。此通信支持动态负载平衡和连接故障转移。

专用的服务器架构

在专用服务器体系结构中,代表每个客户机进程创建的服务器进程称为专用服务器进程(或影子进程)

专用的服务器进程与客户机进程是分离的,仅代表客户机进程进行操作,如图16-7所示。

客户端进程和服务器进程之间存在一对一的比例。即使用户不主动发出数据库请求,专用服务器进程也会保留—尽管它是不活动的,并且可以在某些操作系统上调出。

16-7显示了在联网计算机上运行的用户和服务器进程。但是,如果同一台计算机同时运行客户机应用程序和数据库代码,主机操作系统无法在单个进程中运行这两个程序,那么也可以使用专用的服务器体系结构。Linux就是这样一个操作系统的例子。

在专用的服务器架构中,用户和服务器进程使用不同的机制进行通信:

•如果客户端进程和专用服务器进程运行在同一台计算机上,则程序接口使用主机操作系统的进程间通信机制来执行其工作。

•如果客户端进程和专用服务器进程运行在不同的计算机上,则程序接口提供程序之间的通信机制(如网络软件和Oracle Net服务)

未充分利用的专用服务器有时会导致操作系统资源的低效使用。考虑一个具有专用服务器进程的订单输入系统。当职员将订单输入数据库时,客户下订单。对于大多数事务,职员与客户通信,而专用于职员的客户端进程的服务器进程是空闲的。在大多数事务处理过程中不需要服务器进程,如果系统管理太多的进程,那么对于输入订单的其他职员来说,系统可能会变慢。对于这种类型的应用程序,共享服务器体系结构可能是更好的选择。

共享服务器架构

在共享服务器体系结构中,dispatcher将多个传入的网络会话请求定向到共享服务器进程池。

共享池消除了对每个连接的专用服务器进程的需要。池中的空闲共享服务器进程从公共队列获取请求。

共享服务器的潜在好处如下:

•减少操作系统上的进程数量

少量共享服务器可以执行与许多专用服务器相同的处理量。

•减少实例PGA内存

每个专用或共享服务器都有一个PGA。更少的服务器进程意味着更少的PGAs和更少的进程管理。

•增加应用程序的可伸缩性和可以同时连接到数据库的客户端数量

•当客户端连接和断开连接的速率很高时,可能比专用服务器更快

共享服务器有几个缺点,包括在某些情况下响应时间较慢、不完整的特性支持以及设置和调优的复杂性增加。一般来说,只有在与数据库的并发连接超过操作系统所能处理的数量时,才使用共享服务器。

共享服务器架构需要以下过程:

•连接客户端进程到调度程序或专用服务器的网络监听器(监听器是Oracle Net服务的一部分,不是Oracle数据库的一部分)

•一个或多个dispatcher进程(Dnnn)

•一个或多个共享服务器进程

数据库可以同时支持共享服务器和专用服务器连接。例如,一个客户端可以使用专用服务器连接,而另一个客户端可以使用共享服务器连接到相同的数据库。

调度程序请求和响应队列

来自用户的请求是一个API调用,它是用户的SQL语句的一部分。当用户进行调用时,会发生以下操作:

1.dispatcher将请求放置在请求队列中,由下一个可用的共享服务器进程接收请求。

请求队列位于SGA中,对于实例的所有dispatcher进程都是通用的。

2.共享服务器进程检查公共请求队列中的新请求,以先进先出的方式获取新请求。

3.一个共享服务器进程在队列中获取一个请求,并对数据库进行所有必要的调用以完成此请求。

不同的服务器进程可以处理每个数据库调用。因此,解析查询、获取第一行、获取下一行和关闭结果集的请求可能由不同的共享服务器处理。

4.当服务器进程完成请求时,它将响应放在调用调度程序的响应队列中。每个调度程序都有自己的响应队列。

5.dispatcher将完成的请求返回给适当的客户机进程。

例如,在订单输入系统中,每个职员的客户端进程连接到一个调度程序。职员发出的每个请求都被发送到这个dispatcher,它将请求放到队列中。下一个可用的共享服务器获取请求,为其提供服务,并将响应放入响应队列中。当请求完成时,职员将保持与dispatcher的连接,但是处理请求的共享服务器将被释放,并可用于其他请求。当一个职员与客户对话时,另一个职员可以使用相同的共享服务器进程。

16-8显示了客户机进程如何通过API与调度程序通信,以及调度程序如何将用户请求与共享服务器进程通信。

调度进程(Dnnn)

dispatcher进程允许客户端进程共享有限数量的服务器进程。

您可以为单个数据库实例创建多个dispatcher进程。调度程序进程的最佳数量取决于操作系统限制和每个进程的连接数量。

Dispatcher进程建立通信如下:

1.当实例启动时,网络侦听器进程打开并建立通信路径,用户通过该路径连接到Oracle数据库。

2.每个dispatcher进程都向侦听器进程提供一个地址,dispatcher在该地址侦听连接请求。

必须为数据库客户机将使用的每个网络协议配置和启动至少一个dispatcher进程。

3.当客户端进程发出连接请求时,监听器决定客户端进程是否应该使用共享服务器进程:

•如果侦听器确定需要共享服务器进程,则侦听器返回负载最轻的dispatcher进程的地址,而客户机进程直接连接到dispatcher

•如果流程无法与dispatcher通信,或者如果客户端流程请求专用服务器,则侦听器创建专用服务器流程并建立适当的连接。

共享服务器进程(Snnn)

每个共享服务器进程在共享服务器配置中服务多个客户机请求。

共享和专用服务器进程提供相同的功能,但共享服务器进程不与特定的客户机进程关联。相反,共享服务器进程为共享服务器配置中的任何客户机请求提供服务。

共享服务器进程的PGA不包含UGA数据,所有共享服务器进程都必须能够访问UGA数据。共享服务器PGA只包含特定于进程的数据。

所有与会话相关的信息都包含在SGA中。每个共享服务器进程必须能够访问所有会话的数据空间,以便任何服务器能够处理来自任何会话的请求。SGA中为每个会话的数据空间分配空间。

共享服务器的受限操作

在连接到dispatcher进程(包括关闭或启动实例和媒体恢复)时,无法执行特定的管理活动。

这些活动通常在与管理员权限连接时执行。要在使用共享服务器配置的系统中连接管理员权限,必须指定使用专用服务器进程。

数据库常驻连接池

数据库驻留连接池(DRCP)为典型的Web应用程序场景提供了专用服务器的连接池。

Web应用程序通常建立一个数据库连接,简单地使用这个连接,然后释放它。通过DRCP,数据库可以扩展到数万个并发连接。

DRCP提供了以下优势:

•补充中间层连接池,中间层进程中的线程之间共享连接。

•允许跨多个中间层进程共享数据库连接。这些中间层进程可能属于同一或不同的中间层主机。

•能够显著减少支持许多客户端连接所需的关键数据库资源。例如,DRCP减少了数据库所需的内存,提高了数据库和中间层的可伸缩性。可用服务器池还降低了重新创建客户端连接的成本。

•为使用多进程、单线程应用服务器(PHPApache)的架构提供连接池,这些架构不能执行中间层连接池。

DRCP使用池服务器,它相当于专用服务器进程(而不是共享服务器进程)和数据库会话的组合。合并的服务器模型避免了为每个短时间内需要服务器的连接分配服务器的开销。

从数据库驻留连接池获得连接的客户机连接到称为连接代理的Oracle后台进程。连接代理实现池功能和来自客户端进程的入站连接之间的多路复用池服务器。

如图16-9所示,当客户机需要访问数据库时,连接代理从池中获取一个服务器进程并将其传递给客户机。客户端直接连接到服务器进程,直到请求被服务。服务器完成后,将服务器进程释放到池中。来自客户机的连接被恢复到代理。

DRCP中,释放资源会保持会话不变,但不再与连接(服务器进程)关联。与共享服务器不同,此会话将其UGA存储在PGA中,而不是存储在SGA中。客户端可以在检测到活动后透明地重新建立连接。

程序接口概述

程序接口是数据库应用程序和Oracle数据库之间的软件层。

程序接口实现以下功能:

•提供安全屏障,防止客户端进程对SGA的破坏性访问

•充当通信机制、格式化信息请求、传递数据、捕获和返回错误

•转换和转换数据,特别是不同类型的计算机之间或外部用户程序数据类型

Oracle代码充当服务器,代表应用程序(客户机)执行数据库任务,例如从数据块获取行。程序接口由Oracle数据库软件和特定于操作系统的软件提供的几个部分组成。

程序接口结构

程序接口由几个不同的组件组成。这些组件包括:

Oracle调用接口(OCI)Oracle运行时库(SQLLIB)

•程序接口的客户端或用户端

•各种Oracle网络服务驱动程序(特定于协议的通信软件)

•操作系统通信软件

•程序接口的服务器端或Oracle数据库端(也称为OPI)

程序接口的用户端和Oracle数据库端运行Oracle软件,驱动程序也是如此。

程序接口驱动程序

驱动程序是一种通常通过网络传输数据的软件。

驱动程序执行诸如连接、断开连接、信号错误和错误测试等操作。驱动程序是特定于通信协议的。

默认驱动程序始终存在。您可以安装多个驱动程序,例如异步驱动程序或DECnet驱动程序,并选择一个作为默认驱动程序,但是允许用户在连接时通过指定一个驱动程序来使用其他驱动程序。

不同的进程可以使用不同的驱动程序。进程可以使用不同的Oracle Net服务驱动程序并发连接单个数据库或多个数据库。

用于操作系统的通信软件

连接用户端和程序接口的Oracle数据库端的最低级软件是通信软件,由主机操作系统提供。

比如DECnetTCP/IPLU6.2ASYNC。通信软件可以由Oracle提供,但通常是单独从硬件供应商或第三方软件供应商处购买的。

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

评论