Oracle 的核心组成部分概述

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

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

“实例管运行,数据库存数据,客户端发请求。”
Oracle 架构示意图


一、实例结构(Instance Architecture)

Oracle 实例是数据库启动后创建的 内存结构 + 进程体系,是“动态管理数据库”的核心载体。

1. 内存结构

内存是实例“实时运算与数据缓存”的战场,分为 共享(SGA)私有(PGA) 两大区域:

  • SGA(System Global Area,系统全局区)
    所有会话共享的内存池,随实例启动分配,关闭释放,核心组件及功能:
组件名 功能说明 关键价值
共享池(Shared Pool) 缓存 SQL 执行计划(Library Cache)、数据字典(Data Dictionary Cache)。 复用执行计划,减少硬解析开销;加速元数据查询。
数据库缓冲区缓存(Database Buffer Cache) 缓存从数据文件读取的数据块,优先内存访问。 大幅减少磁盘 I/O,提升查询/更新效率。
重做日志缓冲区(Redo Log Buffer) 临时存储事务产生的“重做记录”(Redo Entry),等待后台进程持久化。 异步落盘,提升事务提交效率,保障数据可恢复。
大池(Large Pool)(可选) 承担 RMAN 备份、共享服务器模式等“大内存操作”,减轻共享池压力。 优化资源分配,避免共享池碎片化。
Java 池(Java Pool)(可选) 存储 JVM 相关对象,支持数据库内 Java 代码执行(如 PL/Java 存储过程)。 扩展数据库能力,适配 Java 生态需求。
流池(Streams Pool)(已弃用) 原用于 Oracle Streams 复制(12c 后逐步淘汰,功能并入 GoldenGate 等)。 历史组件,现代架构中无需关注。
IM 列存储(In-Memory Column Store)(可选) 以 “列格式” 在内存中存储指定表 / 分区的数据,独立于传统行式缓存(Database Buffer Cache)。支持列压缩、向量计算(SIMD 指令)。 企业可在同一数据库中高效支持 “交易 + 分析” 混合负载,无需单独部署数据仓库,尤其适合需要实时数据分析的业务场景(如金融风控、电商实时报表)。

🔹 管理:SGA 大小由 SGA_TARGET(动态调整)或 SGA_MAX_SIZE(上限控制)参数管理,可通过 v$sga 视图监控。

  • PGA(Program Global Area,程序全局区)
    每个服务器进程私有的内存区域,会话专属,随会话创建分配,结束释放:
    • 存储内容:排序区(Sort Area)、哈希连接区(Hash Area)、游标状态、绑定变量等“会话级临时数据”。
    • 管理机制:总量由 PGA_AGGREGATE_TARGET 参数控制(自动管理模式),数据库根据负载动态分配。

🔹 特点:私有性保障会话间互不干扰,避免资源冲突;动态分配让内存利用更高效。

2. 进程结构

进程是实例“动态执行任务”的载体,覆盖 用户交互、核心运算、系统守护 全流程,分为三类:

  • 用户进程(User Process)

    • 角色:客户端发起连接的“入口进程”,运行在客户端机器。
    • 行为:不直接操作数据库文件,仅通过网络向服务器进程发送 SQL 请求(如查询、更新),并接收结果。
    • 示例
      • Java 应用中 DriverManager.getConnection() 触发的进程。
      • 本地命令行 sqlplus username/password@database 启动的进程。
  • 数据库进程(Database Processes)
    Oracle 核心工作进程,处理用户请求、管理存储,细分为两类:

    • 服务器进程(Server Process)
      • 职责
        • 接收用户进程的 SQL 指令(查询/插入/更新等)。
        • 协调 SGA 与数据文件:优先从 Database Buffer Cache 取数据;缓存缺失时,从数据文件加载。
        • 利用 PGA 执行排序、哈希连接等“会话级计算”,生成结果返回用户进程。
      • 模式适配
        • 专用服务器模式:1:1 绑定用户进程,独享资源(适合高并发、低延迟场景,如 OLTP 业务)。
        • 共享服务器模式:多用户进程复用少数服务器进程(节省资源,适合大量短连接、轻负载场景)。
    • 后台进程(Background Process)
      实例启动即常驻的“守护进程”,自动维护数据库健康与数据一致性,典型进程及功能:
进程名 核心职责 关键价值
PMON(Process Monitor) 清理异常会话:回滚未提交事务、释放锁、回收 PGA 资源,保障系统整洁。 避免资源泄漏,维持实例稳定性。
SMON(System Monitor) 实例崩溃后自动恢复(前滚重做日志、回滚未提交事务);合并空闲数据块。 实现“故障自愈”,保障数据一致性;优化存储。
DBWn(Database Writer) 批量刷写“脏数据块”(Buffer Cache 中被修改但未落盘的数据)到数据文件。 异步落盘,平衡内存性能与数据持久化需求。
LGWR(Log Writer) 实时将 Redo Log Buffer 内容写入联机重做日志,确保事务“持久性”。 保障事务提交即落盘,支撑崩溃恢复与数据守护。
CKPT(Checkpoint Process) 触发检查点:更新控制文件/数据文件头的 SCN(系统变更号),标记已持久化的数据版本。 加速实例恢复(崩溃后无需全量扫描日志)。
ARCn(Archiver Process) 归档模式下,复制“写满的联机重做日志”为归档日志(用于灾难恢复、日志挖掘)。 支撑时间点恢复(PITR),扩展容灾能力。
  • 守护/应用程序进程(Daemon & Application Processes)
    系统级高可用、集群扩展 设计的辅助进程,覆盖网络监听、集群管理等场景:

    • 网络监听器(Network Listener)
      • 配置:通过 listener.ora 定义监听地址(如 localhost)、端口(默认 1521)。
      • 作用
        • 被动监听客户端连接请求,验证身份后分配服务器进程(专用/共享模式)。
        • 支持 动态服务注册PMON 自动向监听器上报实例信息(如服务名、实例名),无需手动配置。
    • Grid 基础架构守护进程(Grid Infrastructure Daemons)
      • 适用场景:RAC(实时应用集群)、ASM(自动存储管理)等高可用环境。
      • 典型进程
进程名 核心职责
CRSD(Cluster Ready Services Daemon) 管理集群资源(实例、监听、VIP 等),自动故障切换,保障 RAC 高可用。
ASM(Automatic Storage Management) 专为 ASM 磁盘组设计,调度磁盘 I/O、维护冗余数据同步,支撑共享存储管理。

进程体系价值:分层设计让 Oracle 既灵活响应用户请求(用户进程 ↔ 服务器进程),又能自动化保障数据安全(后台进程),还可扩展集群/存储能力(守护进程),构建高可用、高性能架构。


二、数据库(Database)

“数据库”是 Oracle 实例管理的 物理文件集合,是数据“持久化存储”的载体,核心文件及作用:

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

核心风险:控制文件、重做日志、数据文件是数据库“三大基石”,任何一个损坏都可能导致数据库无法启动或数据丢失,务必做好备份与多路复用。


三、客户端(Client)

客户端是用户/应用与数据库交互的“入口”,负责发起连接、发送请求、接收结果,典型连接方式:

方式 适用场景 典型工具/技术
JDBC Java 应用连接(如 Spring、WebLogic) DriverManager.getConnection()
ODBC Windows 应用(Excel、Power BI 等) 系统数据源(DSN)配置
OCI C/C++ 原生开发 Oracle Call Interface 库
SQL*Plus DBA 日常管理、脚本执行 命令行工具 sqlplus username/password@database

连接机制

  • 客户端通过 Oracle Net Services(由 listener.ora 配置)建立连接。
  • 监听器运行在数据库服务器,监听端口(默认 1521),验证客户端请求后,分配服务器进程处理。

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

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

一站式 AI 云服务平台

更多推荐