当前位置: 首页 > 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.dtcms.com/a/317288.html

相关文章:

  • 亚矩阵云手机:解锁 Shopee/Lazada 东南亚电商运营“通关密码
  • Cortex-M MCU 默认的分散加载文件分析
  • CSS高频属性速查指南
  • SG105 Pro 网管交换机的3种VLAN配置
  • Uniapp生物识别(SOTER)
  • 什么是逻辑外键?我们要怎么实现逻辑外键?
  • 【C++详解】STL-set和map的介绍和使用样例、pair类型介绍、序列式容器和关联式容器
  • sqli-labs靶场less40-less45
  • uniapp 通用地磅称重系统手机端
  • 生成网站sitemap.xml地图教程
  • android 设置字体样式
  • QT----QAxObject在子线程中调用,发现excel指针为空
  • NCD57080CDR2G 安森美onsemi 通用驱动器, SOIC, 8针, 20V电源, 8 A输出NCD57080CDR2电流隔离式栅极驱动器
  • Excel制作尖刀图,直观展示业绩涨跌
  • 【Excel】通过Index函数向下拖动单元格并【重复引用/循环引用】数据源
  • Unity模型显示在UI上
  • mysql 8递归查询
  • AMD二季度净利润同比下降31%
  • 企业级建模平台Sparx EA的云服务实现全域架构协同
  • imx6ull-驱动开发篇11——gpio子系统
  • django permission_classes = [AllowAny] 如何限制到具体接口
  • 得物向量数据库落地实践
  • 智慧二次供水管理系统解决方案:城市供水“最后一公里”
  • 【面试场景题】电商秒杀系统的库存管理设计实战
  • Docker swarm 常用的命令集合
  • 线轨矫平机:让“钢轨”变直的幕后物理课
  • 移动端网页调试实战,跨设备兼容与触控交互问题排查全流程
  • SassSCSS:让CSS拥有超能力的预处理器
  • `<dependencyManagement>`内部的`<dependencies>`和外部的`<dependencies>`的区别:
  • Spring Boot全局异常处理与日志监控实战指南