Oracle 数据库架构

来源:这里教程网 时间:2026-03-03 20:40:13 作者:

Oracle官方文档涵盖了 Oracle 产品的各个方面,包括数据库管理、备份恢复、应用开发、SQL优化、性能优化、高可用、云服务等。之前考证的时候阅读过官方文档,但都是走马观花,希望通过不断的阅读官方文档来夯实基础,形成自己的知识体系框架,从而加深对Oracle底层原理、内部机制、高级特性的理解。

一、数据库和实例

Oracle 数据库服务器由一个数据库和至少一个实例组成。

由于实例和数据库紧密相连,因此Oracle 数据库有时同时指实例和数据库。从严格的意义上讲,这些术语具有以下含义:

数据库是位于磁盘上的一组文件,用于存储用户数据。这些数据文件可以独立于数据库实例而存在。从21c 开始 ,“数据库”特指多租户容器数据库 (CDB)、可插拔数据库(PDB)或应用程序容器数据库。

实例是内存结构的集合,用于管理数据库文件。一个数据库实例由共享内存区域和一组后台进程组成,这个内存区域 被称为系统全局区域 (SGA)。实例可以独立于数据库文件而存在。

实例只有启动数据库才会存在,关闭数据库实例消失。而数据库是一直存储在服务器上的一组文件。

二、多租户架构

在多租户架构下创建的数据库称为CDB。

CDB

CDB 包含一个或多个用户创建的 PDB 和应用程序容器。在物理层面,CDB 是一组文件,包含控制文件、在线重做日志文件和数据文件。数据库实例来管理这些组成 CDB 的文件。

从 Oracle Database 21c 开始,多租户容器数据库是唯一支持的体系结构,不再支持非容器数据库(NON-CDB)。在以前的版本12c、18c和19c中,Oracle还继续支持非容器数据库 (NON-CDB)。

图片

数据库实例

PDB

PDB 是模式、模式对象和非模式对象的可移植集合,在应用程序中显示为单独的数据库。在物理级别,每个 PDB 都有自己的一组数据文件,用于存储 PDB 的数据。CDB 包括PDB 中所有数据文件,以及一组存储 CDB 本身元数据的系统数据文件。 要移动或者归档 PDB,您可以将其拔出。已拔出的 PDB 由 PDB 数据文件和元数据文件组成。被拔出的 PDB 在插入 CDB 之前是不可用的。

要管理 CDB 本身或其中的任何 PDB,可以连接到 CDB 根容器。根容器是所有 PDB 和应用程序容器所属的模式、模式对象和非模式对象的集合。

应用程序容器

应用程序容器是 CDB 中用户创建的可选容器,用于存储一个或多个应用程序的数据和元数据。在此上下文中,应用程序(也称为主应用程序定义)是存储在应用程序根目录中的一组命名的、版本控制的通用数据和元数据。例如,应用程序可能包括一组 PDB 通用的表、视图、用户和 PL/SQL 包的定义。

在某些方面,应用程序容器充当 CDB 中特定于应用程序的 CDB。应用程序容器(如 CDB 本身)可以包含多个应用程序 PDB,并使这些 PDB 能够共享元数据和数据。在物理级别,应用程序容器有自己的一组数据文件,就像 PDB 一样。

三、分片架构

Oracle Sharding 是一种基于跨多个 PDB 对数据进行水平分区的数据库扩展技术。应用程序将 PDB 池视为单个逻辑数据库。

OLTP 应用程序分片的主要优势包括线性可扩展性、故障遏制和地理数据分布。分片非常适合在 Oracle Cloud 中部署。与实施分片的 NoSQL 数据存储不同,Oracle Sharding 提供了分片的优势,而不会牺牲企业 RDBMS 的功能。

在分片架构中,每个 CDB 都托管在具有自己的本地资源(CPU、内存、闪存或磁盘)的专用服务器上。您可以将 PDB 指定为分片。来自不同 CDB 的 PDB 分片构成一个逻辑数据库,称为分片数据库。同一 CDB 中的两个分片不能是同一分片数据库的成员。但是,在同一个 CDB 中,一个 PDB 可以位于一个分片数据库中,而另一个 PDB 可以位于单独的分片数据库中。 水平分区涉及跨分片拆分数据库表,以便每个分片都包含具有相同列但具有不同行子集的表。以这种方式拆分的表也称为分片表。

图片

Oracle分片架构

四、数据库存储结构

可以从物理和逻辑角度理解数据库存储结构。

物理数据是在操作系统级别可查看的数据。例如,可以使用 程序命令显示Linux操作系统中数据库的数据库文件和进程。逻辑数据,例如表,仅对数据库有意义。SQL 语句可以显示 Oracle 数据库中的表,但操作系统程序不能显示。

数据库具有物理结构和逻辑结构。由于物理结构和逻辑结构是分开的,因此可以管理数据的物理存储的时候,不会影响对逻辑存储结构的访问。例如,重命名物理数据库文件时不会重命名其数据存储在此文件中的表。

物理存储结构

物理存储结构用来存储数据文件。 执行CREATE DATABASE命令时,将创建以下数据库文件:

数据文件

每个 CDB 都有一个或多个物理数据文件,其中包含所有数据。逻辑数据库结构(如表和索引)的数据以物理方式存储在数据文件中。

控制文件

每个 CDB 都有一个控制文件。控制文件包含指定数据库物理结构的元数据,包括数据库名称以及数据库文件的名称和位置。

在线重做日志文件

每个 CDB 都有一个在线重做日志,该日志是两个或多个在线重做日志文件的集合。联机重做日志由重做条目(也称为重做日志记录)组成,这些条目记录对数据所做的所有更改。

在 CDB 中执行CREATE PLUGGABLE DATABASE命令时,将创建 PDB。PDB 在 CDB 中包含一组专用数据文件。PDB 没有单独的专用控制文件和在线重做日志:这些文件由 PDB 共享。

还有许多其他文件对于 CDB 的运行非常重要。这些文件包括参数文件、网络文件、密码文件。备份文件和归档的重做日志文件是脱机文件,对于备份和恢复非常重要。

逻辑存储结构

逻辑存储结构能够让 Oracle 数据库对磁盘空间使用进行精细控制。

数据块

Oracle 数据库数据以精细的粒度存储在数据块中。一个数据块对应于磁盘上的特定字节数。

区间

区间是在单个分配中获得的特定数量的逻辑连续数据块,用于存储特定类型的信息。

段是为用户对象 ,例如,表段或索引段、撤销段或临时段分配的一组扩展数据。

表空间

数据库被划分为称为表空间的逻辑存储单元。表空间是 段的逻辑容器。每个表空间至少包含一个数据文件。

五、数据库实例结构

Oracle 数据库使用内存结构和进程来管理和访问 CDB。所有内存结构都存在于构成 RDBMS 的计算机的主内存中。

当应用程序连接到 CDB 或 PDB 时,它们会连接到数据库实例。实例通过分配 SGA 之外的其他内存区域以及启动后台进程之外的其他进程来为应用程序提供服务。

进程结构

Oracle 数据库实例具有以下类型的进程:

客户端进程

创建和维护这些进程是为了运行应用程序或软件代码。

后台进程

这些进程整合了原本为每个客户端进程运行的多个数据库程序处理的功能。后台进程异步执行 I/O 并监视其他数据库进程提高并行度,从而提高性能和可靠性。

服务器进程

这些进程与客户端进程通信并与数据库交互以满足请求。

内存结构

内存结构是数据库为每个连接的用户创建和使用程序代码、用户之间共享的数据以及私有数据区域。主要包含系统全局区SGA和程序全局区PGA。

SGA 是一组共享内存区域,其中包含一个数据库实例的数据和控制信息。SGA 组件包括数据库缓冲区缓存和共享 SQL 区域。SGA 可以包含可选的 In-Memory Column Store(IM 列存储),它支持以列式格式将数据填充到内存中。

PGA 是一个独立内存区域,其中包含服务器或后台进程的数据和控制信息。对 PGA 的访问是该过程独有的。每个服务器进程和后台进程都有自己的 PGA。

六、应用程序和网络架构

应用程序架构是数据库应用程序连接到数据库的计算环境。 两种最常见的应用程序结构是客户端-服务器架构和多层架构。

网络架构是数据库与网络通信协议之间的接口, Oracle 网络服务支持所有主要网络协议上的通信,包括 TCP/IP、HTTP、FTP 和 WebDAV。

Oracle Net 是 Oracle 网络服务的一个组件,用于建立和维护从客户端到数据库服务器的网络会话。建立网络会话后,Oracle Net 将充当客户端应用程序和数据库服务器的数据快递,在它们之间交换消息。Oracle Net 可以执行这些作业,因为它位于网络中的每台计算机上。

Oracle 网络服务的另外一个重要组件是 Oracle Net Listener(称为侦听器),它是在数据库或网络中的其他位置运行的进程。客户端应用程序将连接请求发送到侦听器,侦听器管理这些请求到数据库的流量。建立连接后,客户端和数据库直接通信。

配置 Oracle 数据库以服务客户端请求的两种架构

专用服务器架构

每个客户端进程都连接到一个专用服务器进程。在客户端会话期间,服务器进程不被任何其他客户端共享。每个新会话都分配有一个专用的服务器进程。

共享服务器架构

数据库对多个会话使用共享服务器进程池。客户端进程与调度程序通信,调度程序是一个使许多客户端能够连接到同一数据库实例的进程,而无需为每个客户端设置专用的服务器进程。

七、官方文档

https://docs.oracle.com/en/database/oracle/oracle-database/23/cncpt/

相关推荐