Wrayの知识库 Wrayの知识库
首页
  • Java 基础
  • Java 集合
  • Java 并发
  • Java IO
  • JVM
  • Spring Framework
  • Spring Boot
  • Spring Cloud
  • Spring Security
  • MySQL
  • Redis
  • 计算机基础
  • 操作系统原理
  • Linux
  • MacOS
  • Windows
  • 系统工程与研究专题
  • AI 基础
  • 大模型基础
  • Prompt 工程
  • RAG 检索增强生成
  • Agent 智能体
  • AI 应用开发
  • AI 工程化
  • AI 安全与治理
  • AI 面试与设计题
  • 纸质书
  • 电子书
  • 学习课程
疑难杂症
GitHub (opens new window)
首页
  • Java 基础
  • Java 集合
  • Java 并发
  • Java IO
  • JVM
  • Spring Framework
  • Spring Boot
  • Spring Cloud
  • Spring Security
  • MySQL
  • Redis
  • 计算机基础
  • 操作系统原理
  • Linux
  • MacOS
  • Windows
  • 系统工程与研究专题
  • AI 基础
  • 大模型基础
  • Prompt 工程
  • RAG 检索增强生成
  • Agent 智能体
  • AI 应用开发
  • AI 工程化
  • AI 安全与治理
  • AI 面试与设计题
  • 纸质书
  • 电子书
  • 学习课程
疑难杂症
GitHub (opens new window)
  • 数据库概述
  • MySQL

  • Redis

  • Oracle

    • Oracle概述
    • Oracle版本与部署选型
    • Oracle安装配置与客户端工具
    • Oracle体系结构与实例数据库
      • 1. 学习目标与定位
      • 2. 核心概念总览
      • 3. 底层原理详解
      • 4. 关键机制拆解
        • 4.1. 启动阶段与状态转换
        • 4.2. 实例内存与后台进程
        • 4.3. 控制文件、数据文件与日志文件
        • 4.4. 实例恢复与介质恢复
      • 5. 功能模块细节补充
        • 5.1. Instance
        • 5.2. Database
        • 5.3. SGA
        • 5.4. PGA
        • 5.5. Background Processes
        • 5.6. Control File
        • 5.7. Data File
        • 5.8. Online Redo Log
        • 5.9. Archived Redo Log
      • 6. 开发人员重点提醒
      • 7. 运维人员重点提醒
      • 8. 典型问题与排查
      • 9. 实践建议与检查清单
      • 10. 阶段小结
    • Oracle内存结构SGA与PGA
    • Oracle进程与后台任务
    • Oracle存储结构与表空间
    • Oracle数据类型与字符集
    • Oracle Schema对象与数据建模
    • SQL基础与Oracle语法特性
    • PLSQL基础与包过程函数
    • Oracle事务与一致性读
    • Oracle锁闩锁与并发控制
    • Undo Redo与归档日志
    • Oracle索引结构与设计
    • 执行计划与DBMS_XPLAN
    • 优化器统计信息与SQL调优
    • AWR ASH与性能诊断
    • Oracle等待事件与故障排查
    • RMAN备份恢复与闪回技术
    • Data Guard与灾备架构
    • RAC集群与服务高可用
    • ASM存储与文件管理
    • Multitenant CDB与PDB
    • 分区表与VLDB实践
    • 数据泵SQLLoader与数据迁移
    • Oracle安全审计与权限治理
    • Oracle开发连接池与JDBC实践
    • JSON向量与多模型能力
    • Oracle运维规范与面试设计题
目录

Oracle体系结构与实例数据库

Oracle 体系结构的核心是实例与数据库的分工:实例包含内存和进程,数据库包含控制文件、数据文件、联机日志和归档日志。理解这个分工,是后续学习恢复、性能、锁和高可用的起点。

# 1. 学习目标与定位

维度 内容
难度层级 基础到核心
核心目标 从底层运行链路理解本篇主题,能把概念、SQL、指标、故障和工程取舍连起来
适合人群 开发人员理解 SQL 为什么会受到内存、日志和锁影响;运维人员理解启动、关闭、恢复和文件状态。

# 2. 核心概念总览

Oracle体系结构与实例数据库
├─ Instance
├─ Database
├─ SGA
├─ PGA
├─ Background Processes
├─ Control File
├─ Data File
├─ Online Redo Log
└─ Archived Redo Log

这张图只用来定位本章范围。正文不会把每个词机械拆成固定问答,而是按 Oracle 的真实运行机制解释它们之间如何协作、在哪里影响开发、在哪里影响运维。

# 3. 底层原理详解

实例启动时先读取参数文件并分配内存,进入 NOMOUNT;随后读取控制文件,进入 MOUNT;再打开数据文件和联机日志,进入 OPEN。这个过程把软件进程、内存结构和物理数据库文件逐步连接起来。

SGA 是共享内存,包含 Buffer Cache、Shared Pool、Redo Log Buffer 等结构;PGA 是进程私有内存,用于排序、哈希、会话状态和游标执行。后台进程负责把内存变化安全落到文件上。

Oracle 的恢复依赖控制文件、数据文件、Redo 和归档日志的一致性。实例崩溃后通常通过 Redo 做实例恢复;介质损坏则需要数据文件备份和归档日志做介质恢复。

# 4. 关键机制拆解

# 4.1. 启动阶段与状态转换

NOMOUNT 阶段只需要参数文件,适合创建数据库或重建控制文件;MOUNT 阶段控制文件已打开,但数据文件未打开,适合恢复、改归档模式或重命名文件;OPEN 阶段数据库可供业务访问。

很多恢复操作要求数据库处于特定状态。资深 DBA 不会把 startup/open 当成简单命令,而会根据控制文件、数据文件和日志状态选择正确阶段。

# 4.2. 实例内存与后台进程

实例内存负责把频繁访问的数据块、解析结果和字典信息缓存起来。后台进程把事务日志、脏块、检查点和归档工作异步推进,减少前台会话等待。

开发人员的大 SQL、大排序、大事务会改变 SGA/PGA 和后台进程压力。运维排查时要看前台等待是否被 DBWn、LGWR、CKPT、ARCn 等后台进程拖住。

# 4.3. 控制文件、数据文件与日志文件

控制文件是数据库结构目录,记录数据文件、日志文件、归档序列、备份信息和检查点。数据文件保存实际数据块,联机 Redo 日志保存近期变更,归档日志保存历史 Redo。

控制文件多路复用、日志组多成员、数据文件备份和归档保留策略共同决定恢复能力。任何一个环节缺失,都会在故障时暴露。

# 4.4. 实例恢复与介质恢复

实例恢复发生在实例崩溃后,Oracle 根据 Redo 重做已提交或需要重放的变更,再根据 Undo 回滚未提交事务。介质恢复发生在数据文件损坏或丢失后,需要从备份还原文件并应用归档。

这就是为什么归档模式对生产库几乎是必需的:没有归档,只能恢复到最近备份点;有归档,才可能恢复到指定时间或故障前位置。

# 5. 功能模块细节补充

本节围绕概念图中的模块逐个补充底层细节,重点讲它们在 Oracle 运行链路中的位置和相互关系,而不是按固定角色模板拆分。

# 5.1. Instance

Instance 是实例与数据库协作链路中的组成部分。实例侧负责运行时内存、进程和调度,数据库侧负责控制文件、数据文件和日志文件;该模块的异常通常会反映到启动阶段、后台进程等待、告警日志或恢复流程中。

# 5.2. Database

Database 是实例与数据库协作链路中的组成部分。实例侧负责运行时内存、进程和调度,数据库侧负责控制文件、数据文件和日志文件;该模块的异常通常会反映到启动阶段、后台进程等待、告警日志或恢复流程中。

# 5.3. SGA

SGA 是实例与数据库协作链路中的组成部分。实例侧负责运行时内存、进程和调度,数据库侧负责控制文件、数据文件和日志文件;该模块的异常通常会反映到启动阶段、后台进程等待、告警日志或恢复流程中。

# 5.4. PGA

PGA 是实例与数据库协作链路中的组成部分。实例侧负责运行时内存、进程和调度,数据库侧负责控制文件、数据文件和日志文件;该模块的异常通常会反映到启动阶段、后台进程等待、告警日志或恢复流程中。

# 5.5. Background Processes

Background Processes 是实例与数据库协作链路中的组成部分。实例侧负责运行时内存、进程和调度,数据库侧负责控制文件、数据文件和日志文件;该模块的异常通常会反映到启动阶段、后台进程等待、告警日志或恢复流程中。

# 5.6. Control File

Control File 是实例与数据库协作链路中的组成部分。实例侧负责运行时内存、进程和调度,数据库侧负责控制文件、数据文件和日志文件;该模块的异常通常会反映到启动阶段、后台进程等待、告警日志或恢复流程中。

# 5.7. Data File

Data File 是实例与数据库协作链路中的组成部分。实例侧负责运行时内存、进程和调度,数据库侧负责控制文件、数据文件和日志文件;该模块的异常通常会反映到启动阶段、后台进程等待、告警日志或恢复流程中。

# 5.8. Online Redo Log

Online Redo Log 是实例与数据库协作链路中的组成部分。实例侧负责运行时内存、进程和调度,数据库侧负责控制文件、数据文件和日志文件;该模块的异常通常会反映到启动阶段、后台进程等待、告警日志或恢复流程中。

# 5.9. Archived Redo Log

Archived Redo Log 是实例与数据库协作链路中的组成部分。实例侧负责运行时内存、进程和调度,数据库侧负责控制文件、数据文件和日志文件;该模块的异常通常会反映到启动阶段、后台进程等待、告警日志或恢复流程中。

# 6. 开发人员重点提醒

  • 理解提交成功依赖 Redo 持久化,不要把数据库写入当作普通内存操作。
  • 批量作业要评估日志、Undo、临时空间和后台进程压力。
  • 故障时给出准确业务时间点,有助于 DBA 判断恢复目标。

# 7. 运维人员重点提醒

  • 熟练掌握实例状态、文件状态、日志组状态和归档状态查询。
  • 控制文件、联机日志和归档目录必须纳入多路复用和备份策略。
  • 启动失败时先看 alert log,再判断是参数、控制文件、数据文件还是日志问题。

# 8. 典型问题与排查

  • 数据库无法 OPEN:检查控制文件中的数据文件状态、恢复需求和日志可用性。
  • 提交变慢:检查 log file sync、log file parallel write、LGWR、存储延迟和同步备库。
  • 实例崩溃恢复慢:检查崩溃前脏块、检查点推进和 Redo 量。

# 9. 实践建议与检查清单

  • 能解释 NOMOUNT/MOUNT/OPEN
  • 控制文件已多路复用
  • 日志组成员冗余
  • 归档模式已验证
  • alert log 路径清楚
  • 实例恢复和介质恢复能区分

# 10. 阶段小结

本篇的学习重点不是记住术语,而是能把底层机制、业务语义和生产证据连起来。读完本篇后,应该能解释关键组件如何协作、常见问题为什么发生、开发侧如何避免制造风险、运维侧如何用指标和日志把问题定位到具体链路。

上次更新: 2026/06/25, 15:30:11
Oracle安装配置与客户端工具
Oracle内存结构SGA与PGA

← Oracle安装配置与客户端工具 Oracle内存结构SGA与PGA→

Copyright © 2023-2026 Wray | 鄂ICP备2024050235号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式