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

【数据库】Oracle学习笔记整理之一:ORACLE的核心组成部分

Oracle 的核心组成部分

Oracle 数据库是一个典型的 客户端/服务器(C/S)架构系统,其运行依赖三大核心组件:

  1. 实例(Instance) :内存与进程的集合,负责管理数据库操作
    • 内存(SGA + PGA) + 进程(前台 + 后台)
  2. 数据库(Database) :物理文件的集合,用于持久化存储数据
    • 数据文件 + 控制文件 + 重做日志等物理文件
  3. 客户端(Client) :发起连接和请求的应用或用户
    • 任何通过 Oracle Net 连接数据库的应用或工具

“实例管运行,数据库存数据,客户端发请求。”

Oracle 架构示意图


一、实例结构(Instance Architecture)

Oracle 实例是数据库启动时创建的一组 内存结构后台进程,它是数据库运行的核心环境。一个实例只能打开一个数据库(RAC 除外)。

1. 内存结构

✅ SGA(System Global Area,系统全局区)

SGA 是一块共享内存区域,由所有服务进程和后台进程共同使用,随实例启动而分配,关闭时释放。

组件功能说明
共享池(Shared Pool)缓存 SQL 执行计划(Library Cache)、数据字典信息(Data Dictionary Cache),提升解析效率
数据库缓冲区缓存(Database Buffer Cache)缓存从数据文件读取的数据块,减少磁盘 I/O
重做日志缓冲区(Redo Log Buffer)临时存放事务产生的重做记录,等待 LGWR 写入日志文件
大池(Large Pool)(可选)用于备份恢复(RMAN)、共享服务器模式等大内存操作,减轻共享池压力
Java 池(Java Pool)(可选)存储 JVM 相关对象,支持数据库内 Java 执行
流池(Streams Pool)(已弃用)原用于 Oracle Streams 复制功能(12c 后逐步淘汰)

🔹 SGA 是共享的,所有会话共享这些资源,其大小由 SGA_TARGETSGA_MAX_SIZE 控制。


✅ PGA(Program Global Area,程序全局区)

PGA 是每个服务器进程私有的内存区域,不被共享。

  • 存储会话专用信息:排序区、哈希连接区、游标状态、绑定变量等。
  • 每个连接的用户进程都有独立的 PGA。
  • 总量由 PGA_AGGREGATE_TARGET 参数控制(自动管理)。

🔹 PGA 是私有的,生命周期与会话绑定,会话结束即释放。


2. 进程结构

✅ 服务器进程(Server Process)
  • 接收客户端 SQL 请求。
  • 在 SGA 中查找或从数据文件加载数据块。
  • 执行查询或 DML 操作,并将结果返回客户端。
  • 可能使用 PGA 进行排序、哈希等操作。

📌 在专用服务器模式下,每个用户连接对应一个服务器进程。


✅ 后台进程(Background Processes)

Oracle 实例启动时自动运行的关键进程,保障数据库稳定运行。

进程作用
PMON(Process Monitor)清理异常终止的会话:回滚事务、释放锁、释放资源
SMON(System Monitor)实例恢复(崩溃后)、清理临时段、合并空闲空间
DBWn(Database Writer)将“脏数据块”从 Buffer Cache 写入数据文件(支持多个,如 DBW0~DBW9)
LGWR(Log Writer)将 Redo Log Buffer 写入 Online Redo Log 文件,保障事务持久性
CKPT(Checkpoint Process)触发检查点,更新控制文件和数据文件头,标记已写入的 SCN
ARCn(Archiver Process)归档模式下,将填满的联机重做日志复制为归档日志(用于 PITR)
MMON / MMNL收集性能统计信息,写入 AWR(自动工作负载资料库),支持 ADDM 分析

✅ 所有后台进程协同工作,确保数据库的高可用性、一致性和性能。


二、数据库(Database)— 物理存储结构

“数据库”指的是 Oracle 实例所管理的物理文件集合,是数据持久化的载体。

文件类型作用是否必须说明
数据文件(Data Files)存储实际数据(表、索引、LOB 等)✅ 必须属于某个表空间,是逻辑结构的物理实现
控制文件(Control File)记录数据库的物理结构:
• 数据文件/日志文件位置
• SCN、DBID、日志序列号等
✅ 必须极其关键!建议多路复用(镜像)以防丢失
重做日志文件(Redo Log Files)记录所有数据变更操作,用于崩溃恢复✅ 必须至少两组,循环写入;每组可含多个成员(镜像)
归档日志文件(Archive Logs)已填满的重做日志的归档副本❌ 可选开启归档模式后生成,支持时间点恢复(PITR)
参数文件(Parameter File)定义实例启动参数✅ 必须支持 SPFILE(二进制,推荐)和 PFILE(文本)
密码文件(Password File)存储具有 SYSDBASYSOPER 权限用户的认证信息❌ 可选用于远程 DBA 登录(如 sqlplus / as sysdba
跟踪日志文件(Trace Files)记录诊断信息:
alert.log:系统级告警日志
• 进程跟踪文件:用于故障排查
✅ 推荐保留位于 diagnostic_dest 目录下

控制文件、重做日志、数据文件是数据库运行的三大核心文件,任何一者损坏都可能导致数据库无法启动或数据丢失。


三、客户端(Client)

客户端是连接 Oracle 数据库并发起请求的应用程序或用户终端

常见连接方式:

方式适用场景
JDBCJava 应用连接数据库(如 Spring、WebLogic)
ODBCWindows 应用、Excel、Power BI 等通用连接
OCI(Oracle Call Interface)C/C++ 等原生开发接口
SQL*Plus / SQL Developer / ToadDBA 或开发者使用的管理工具

连接机制

  • 客户端通过 Oracle Net Services(即监听器 listener.ora)建立连接。
  • 监听器运行在数据库服务器上,监听指定端口(默认 1521)。
  • 当客户端发起连接请求时,监听器验证并分配一个 服务器进程 为其服务。

✅ 本质上,Oracle 是一个典型的 C/S(客户端/服务器)架构系统

  • 客户端 提出业务请求(如“查询员工工资”)
  • 服务器端(实例 + 数据库) 负责解析、执行、返回结果
  • 两者通过 Oracle Net 协议通信,实现解耦与高效协作
http://www.lryc.cn/news/611538.html

相关文章:

  • 【YOLOv8改进 - C2f融合】C2f融合DBlock(Decoder Block):解码器块,去模糊和提升图像清晰度
  • 微信小程序最大层级跳转问题
  • [Oracle] SIGN()函数
  • RabbitMQ 全面指南:从基础概念到高级特性实现
  • Unix/Linux 系统编程中用于管理信号处理行为的核心概念或模型
  • 外观模式(Facade Pattern)及其应用场景
  • Leetcode-3488距离最小相等元素查询
  • 系统的缓存(buff/cache)是如何影响系统性能的?
  • 第五十篇:AI画家的“神经中枢”:ComfyUI的推理路径与缓存逻辑深度解析
  • 【Web安全】csrf、ssrf和xxe的区别
  • Python实现电商商品数据可视化分析系统开发实践
  • Qt 中实现多线程的两种方式及结合
  • Pytest项目_day05(requests加入headers)
  • 8.6 JavaWeb(请求响应 P67-P74)
  • 部署Web UI自动化测试平台:SeleniumFlaskTester
  • UI测试平台TestComplete的AI视觉引擎技术解析
  • QT+opencv+yolov8推理
  • 移动端跨平台框架(支持Harmony、iOS、Android)
  • C语言:指针(1-2)
  • Kaggle 经典竞赛泰坦尼克号:超级无敌爆炸详细基础逐行讲解Pytorch实现代码,看完保证你也会!!!
  • 霍尔传感器
  • 碰撞问题的分析
  • 什么是CDN, 它为什么更快
  • 《算法导论》第 7 章 - 快速排序
  • 概率/期望 DP Jon and Orbs
  • 机器学习④【算法详解:从决策树到随机森林】
  • 一周学会Matplotlib3 Python 数据可视化-图形的组成部分
  • 场外期权的卖方是什么策略?
  • Python包管理新利器:uv全面解析与Conda对比指南
  • 从 LinkedIn 到 Apache:Kafka 的架构设计与应用场景