当前位置: 首页 > news >正文

Oracle数据库架构入门概述

Oracle数据库架构入门概述

本文分为四个部分简单概述

一、入门概述

二、数据库实例简述

三、数据库物理存储和逻辑存储结构简述

四、网络体系结构概述

入门概述

Oracle 数据库服务器包括一个数据库和至少一个数据库实例 (通常是指只有一个实例)。 因为实例和数据库关联紧密,通常我们说Oracle 数据库这个术语,一般既指实例,也指数据库。

数据库

数据库是一组文件,位于磁盘,用于存储数据。 这些文件可以独立于数据库实例存在。

数据库实例

实例是管理数据库文件的一组内存结构。 该实例包含一个叫做系统全局区 (SGA) 的共享内存区和一组后台进程。 实例可以独立于数

据库文件而存在。

数据库与实例的关系

1)oracle 11g版本及之前

单库环境下,一个实例对应一个数据库;可以理解一个实例管理和维护一个数据库;

RAC集群环境下,多台Oracle 数据库服务器的实例对应一个数据库;可以理解为多个实例(每个集群服务器上一个实例),管理和共同维护一个数据库(同一份物理数据文件);

2)12c版本及之后

非容器数据库(非CDB)类型,数据库与实例的概念与以前版本完全一致;

容器数据库(CDB)类型,一个CDB数据库,可以创建很多PDB数据库,因此这种情况下,一个实例管理和维护多个PDB数据库,N:1的关系;RAC集群环境下,多台Oracle 数据库服务器的实例,管理和维护多个PDB数据库,N:N的关系;

备注:Oracle 21c版本以后,只能创建容器类型的数据库了。

物理和逻辑角度观察数据库

物理角度是在操作系统级别可查看的数据。 例如,使用操作系统实用程序,如 Linux ls 和 ps,可以列出数据库文件和进程。

逻辑角度,表、视图、索引等这样的逻辑数据只在数据库层面有意义。 SQL 语句可以列出 Oracle 数据库中的表,但操作系统实用程序却不能。

Oracle数据库和实例架构图

image-20260319142619114

数据库实例简述

Oracle 数据库使用内存结构和进程,来管理和访问数据库。可以将Oracle实例简单理解为一块内存区域和一组进程

当应用程序连接到 Oracle 数据库时,会有一个服务端进程为其一对一服务(专用模式下),服务端进程连接到一个数据库实例。 实例为其分配除 SGA 之外的其他内存区。

Oracle内存结构

Oracle 数据库创建和使用内存结构有几个目的,例如,用于在多个用户之间共享程序代码和数据的内存,以及用于每个已连接用户的私有数据区域

系统全局区(SGA)

SGA 是数据库实例的一组共享的内存结构,包含一个数据库实例的数据和控制信息。 例如,SGA 组件包括数据块缓存和共享 SQL 区域。

程序全局区(PGA)

PGA 是数据库实例的一个非共享内存区域,包含专供服务器进程或后台进程使用的数据和控制信息。每个服务器进程和后台进程都有其自己的 PGA。

Oracle数据库进程

客户端进程

运行在客户端操作系统

这些进程被创建和维护,主要用来运行应用程序代码或 Oracle 工具。 多数环境中都由单独的计算机来运行客户端进程。

服务端进程

运行在oracle服务器操作系统

这些进程与客户端进程通信,并与 Oracle 数据库进行交互,以完成客户端请求。

后台进程

运行在oracle服务器操作系统

后台进程是数据库实例的一部分,它们执行维护任务、操作数据库、最大化并发环境下的性能等等。每个后台进程执行一个独特的任务(例如将内存数据块写入磁盘文件的数据库写进程,将日志缓存写入磁盘日志文件的日志写进程,等等),进程之间互相协同完成整体工作。

备注:Oracle 进程包括服务器进程和后台进程。 在大多数的环境中, Oracle 进程和客户端进程在不同的计算机上运行。

数据库物理存储和逻辑存储结构简述

物理存储结构

物理数据库结构即存储数据的文件。

数据文件

每个 Oracle 数据库都有一个或多个物理数据文件,其中包含数据库的所有数据。数据库的逻辑数据结构,如表和索引,物理上就是存储在这些数据文件中。
现实数据库的使用环境中,我们所有的业务表数据,全都存放在数据文件中。

控制文件

每个 Oracle 数据库都有一个控制文件。 控制文件包含指定数据库物理结构的元数据,包括数据库名称,数据文件的位置和名称、日志文件的位置和名称等。

在线重做日志文件

每个数据库都有一个联机重做日志,它包含两个或更多联机重做日志文件。 一个联机重做日志由许多重做项组成(也称为重做记录),

以记录对数据所做的所有更改(你可以理解为一个不断记录的视频、该视频记录对数据库的所有操作)。

其它文件

还有很多其他文件对 Oracle 数据库服务器的正常运行也是很重要的。 例如:参数文件、密码文件、诊断文件、 备份文件和归档重做日志文件等等。

逻辑存储结构

表空间(tablespace)

数据库由称为表空间的逻辑存储单位组成。 表空间是段(表、索引等)的逻辑容器。 每个表空间至少包含一个数据文件。
表空间是数据文件的容器,每一个数据文件,必须归属于一个表空间;一个表空间可以包含多个数据文件;

段(segment)

段是为用户对象 (例如一个表或索引)、回滚数据、或临时数据等分配的一组扩展区。

段可以简单理解为表数据的逻辑存放结构,刚开始学习时,简单理解一个表的数据,存储在一个段中。

区(extent

区是一定数量的逻辑上连续的数据块,段的每次分配以区位单位。

数据块(block)

Oracle数据库中最细的存储粒度级别。
Oracle数据库每次读写数据,最小单位为数据块。
Oracle 数据库将数据存储在数据块中。
一个数据块对应于磁盘上的特定大小的字节,一般为8k大小。

说明:Oracle数据库具有物理结构和逻辑结构。 因为物理结构和逻辑结构是分开的,因此对物理数据存储的管理,不会影响对逻辑存储结构的访问。 例如,重命名物理数据库文件并不会重命名表,尽管它的数据存储在这个文件中。

逻辑存储结构和物理存储结构的映射关系图

image-20260319144538879

备注:表和段的关系为多对多,后续我会深入讲解,初学时,可以将一个段和一个表对应,即1:1对应来理解即可。

网络体系结构概述

Oracle 网络服务是数据库与网络通信协议之间的接口, 它对分布式处理和分布式数据库很有用。 通信协议定义了数据在网络上被传输和接收的方式。Oracle 网络服务支持所有主要的网络通信协议,包括 TCP/IP、 HTTP、FTP 、和 WebDAV

Oracle Net

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

监听器

监听器是 Oracle 网络服务的一个重要组成部分,,它是一个单独的进程,运行在数据库服务器上,或在网络中的其它地方。 客户端应用程序可以发送连接请求到监听器,而监听器管理这些发送到数据库服务器的请求。 当一个连接建立之后,客户端和数据库进行直接通信(后续不再需要监听器的参与)。

为服务客户端请求,最常见的两种配置 Oracle 数据库的方式是:

专用服务器体系结构

生产环境一般使用这种方式

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

这种专用模式下,每次监听器,监听到客户端的连接请求后,都会fork(派生)一个新的进程来专用于服务这个客户端的连接;这个fork出来的新进程,也就是我们在"Oracle数据库进程"中描述的"服务端进程"

共享务器体系结构

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

这种模式下,每次监听器,监听到客户端的连接请求后,会将请求直接转发给调度器进程(不会派生专用的进程来服务)。

本文参考官方文档:https://docs.oracle.com/cd/E28271_01/server.1111/e25789/toc.htm

http://www.jsqmd.com/news/543429/

相关文章:

  • Wan2.2-I2V-A14B API服务详解:FastAPI封装+Swagger文档+curl调用示例
  • 告别扁平地图:手把手教你用MapboxGL和dem2terrain打造3D地形(附Windows环境避坑指南)
  • 2026年弧形铝方通厂家推荐:佛山市鑫鼎煌金属制品有限公司,商场铝方通/外墙铝方通/天花铝方通厂家精选 - 品牌推荐官
  • 数据恢复全面指南:开源数据救援工具组合实战手册
  • 在树莓派4B上重温经典:Windows XP与95的轻量级模拟与游戏应用实战
  • PyTorch 2.8镜像惊艳效果:RTX 4090D下Llama3/Qwen3视频生成全流程演示
  • s2-pro部署避坑指南:首次启动预热机制说明与健康检查验证方法
  • 阅读书源校验工具verifyBookSource v2.0避坑指南:如何避免无效书源和重复书源
  • 瑞祥商联卡回收平台推荐,安全可靠! - 团团收购物卡回收
  • 【MATLAB】能控标准型转换实战:从理论到代码实现
  • PyTorch3D实战:从零构建ShapeNet数据管道
  • 病历AI的底线:可解释、可校验、可回溯 —— DCWriter5.0如何守护医疗文书质量?
  • The Leather Archive应用案例:从赛博都市到极简主义的皮衣穿搭
  • 企业级国标视频监控平台:wvp-GB28181-pro容器化部署实战指南
  • 别光会攻击!用Wireshark抓包带你深度理解hping3发起的SYN Flood到底发生了什么
  • SecGPT-14B开发者案例:用SecGPT-14B API构建Slack安全告警机器人
  • BDInfo:解析蓝光媒体基因的技术检测工具
  • 【深度解析】山东政务信息化预算新规:功能点识别与集成费测算的创新实践
  • Hunyuan-MT-7B效果实测:对比Google翻译,中文翻译质量更优
  • Windows 11下用VSCode+CMake+MinGW编译OpenCV 4.8.0,保姆级避坑指南
  • 抖音批量下载工具:Python实现的5大技术创新与架构设计解析
  • OpenClaw+GLM-4.7-Flash:技术文档自动翻译与校对
  • 内网高效开发:基于Verdaccio搭建企业级npm私有仓库全攻略
  • 踩过地铁站人流统计的坑后,我用YOLOv5+透视变换把准确率从72%干到96%
  • 航空装备制造数字孪生怎么做?为什么推荐用Catia+CIMPro孪大师?
  • 林俊旸“智能体式思考”刷屏:实在Agent如何开启商业自动化新纪元?
  • LLaMAFactory微调框架实战:参数优化与性能调优指南
  • 基于Comsol激光打孔,利用高斯热源脉冲激光对材料进行蚀除过程仿真,其中运用了变形几何和固体...
  • Playwright 在多智能体平台中的角色、优劣与竞争态势
  • Cadence Allegro中高效实现BGA关键网络的精准扇出