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体系结构与实例数据库
    • Oracle内存结构SGA与PGA
    • Oracle进程与后台任务
    • Oracle存储结构与表空间
      • 1. 学习目标与定位
      • 2. 核心概念总览
      • 3. 底层原理详解
      • 4. 关键机制拆解
        • 4.1. 表空间与数据文件
        • 4.2. 段、区、块与对象增长
        • 4.3. ASSM、临时表空间与 Undo 表空间
        • 4.4. 空间治理与坏块意识
      • 5. 功能模块细节补充
        • 5.1. Tablespace
        • 5.2. Data File
        • 5.3. Segment
        • 5.4. Extent
        • 5.5. Block
        • 5.6. ASSM
        • 5.7. Bigfile Tablespace
        • 5.8. Temp Tablespace
        • 5.9. Undo Tablespace
      • 6. 开发人员重点提醒
      • 7. 运维人员重点提醒
      • 8. 典型问题与排查
      • 9. 实践建议与检查清单
      • 10. 阶段小结
    • 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 逻辑存储与物理存储分层清晰:表空间、段、区、块对应数据文件与 ASM 文件。开发侧关注对象和空间增长,运维侧关注数据文件、自动扩展、碎片、备份和 IO。

# 1. 学习目标与定位

维度 内容
难度层级 基础到运维
核心目标 从底层运行链路理解本篇主题,能把概念、SQL、指标、故障和工程取舍连起来
适合人群 开发人员关注对象如何增长和访问;运维人员关注空间、数据文件、IO、备份和坏块。

# 2. 核心概念总览

Oracle存储结构与表空间
├─ Tablespace
├─ Data File
├─ Segment
├─ Extent
├─ Block
├─ ASSM
├─ Bigfile Tablespace
├─ Temp Tablespace
└─ Undo Tablespace

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

# 3. 底层原理详解

Oracle 的逻辑存储层从大到小通常是表空间、段、区、块。表空间由一个或多个数据文件承载;表、索引、LOB 等对象对应段;段由区组成;区由多个块组成;块是 Oracle 读写和缓存的基本单位。

空间问题不是只看表空间使用率。临时表空间承载排序和哈希溢写,Undo 表空间承载事务版本和回滚,大对象可能使用独立 LOB 段,索引维护也会消耗额外空间。

运维上要把逻辑对象和物理文件关联起来。一个业务表增长,最终会表现为段扩展、表空间占用、数据文件扩展、ASM 磁盘组压力、备份窗口变化和 IO 行为变化。

# 4. 关键机制拆解

# 4.1. 表空间与数据文件

表空间是逻辑管理边界,数据文件是物理承载。Smallfile 表空间可以包含多个数据文件,Bigfile 表空间通常只有一个大文件,适合配合 ASM 和现代存储管理。

自动扩展能缓解短期空间不足,但不能替代容量规划。无限制 autoextend 可能把文件系统或 ASM 磁盘组写满,最终影响整个实例。

# 4.2. 段、区、块与对象增长

表段、索引段、LOB 段都会按区扩展。块内空间由行目录、行数据、事务槽等结构组成,更新变长字段可能导致行迁移或链接,热点块可能形成并发争用。

开发人员设计表结构时要关注行宽、LOB、更新模式和主键分布。运维人员看到段快速增长时,要能定位是表数据、索引、LOB、临时段还是 Undo。

# 4.3. ASSM、临时表空间与 Undo 表空间

ASSM 使用位图管理段内空闲空间,减少 freelist 管理复杂度。临时表空间服务排序、哈希、临时表和部分并行操作;Undo 表空间服务回滚、一致性读和闪回查询。

TEMP 和 UNDO 是最容易被忽视的生产风险。一个错误执行计划可能耗尽 TEMP,一个长事务或长查询可能拖垮 Undo。

# 4.4. 空间治理与坏块意识

空间治理要包含增长趋势、对象排行、自动扩展上限、表空间告警、ASM 磁盘组容量和备份窗口。坏块检查则要结合 RMAN validate、DBVERIFY、告警日志和存储告警。

专家不会只问“还有多少空间”,还会问“增长来自哪个对象、是否可归档、是否影响备份、是否影响恢复目标”。

# 5. 功能模块细节补充

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

# 5.1. Tablespace

Tablespace 处在逻辑对象和物理文件之间。Oracle 最终以数据块读写,向上组织为区、段、表空间,向下落到数据文件或 ASM 磁盘组;空间不足、热点块、坏块和 IO 延迟都要从这个层级关系里定位。

# 5.2. Data File

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

# 5.3. Segment

Segment 处在逻辑对象和物理文件之间。Oracle 最终以数据块读写,向上组织为区、段、表空间,向下落到数据文件或 ASM 磁盘组;空间不足、热点块、坏块和 IO 延迟都要从这个层级关系里定位。

# 5.4. Extent

Extent 处在逻辑对象和物理文件之间。Oracle 最终以数据块读写,向上组织为区、段、表空间,向下落到数据文件或 ASM 磁盘组;空间不足、热点块、坏块和 IO 延迟都要从这个层级关系里定位。

# 5.5. Block

Block 处在逻辑对象和物理文件之间。Oracle 最终以数据块读写,向上组织为区、段、表空间,向下落到数据文件或 ASM 磁盘组;空间不足、热点块、坏块和 IO 延迟都要从这个层级关系里定位。

# 5.6. ASSM

ASSM 处在逻辑对象和物理文件之间。Oracle 最终以数据块读写,向上组织为区、段、表空间,向下落到数据文件或 ASM 磁盘组;空间不足、热点块、坏块和 IO 延迟都要从这个层级关系里定位。

# 5.7. Bigfile Tablespace

Bigfile Tablespace 处在逻辑对象和物理文件之间。Oracle 最终以数据块读写,向上组织为区、段、表空间,向下落到数据文件或 ASM 磁盘组;空间不足、热点块、坏块和 IO 延迟都要从这个层级关系里定位。

# 5.8. Temp Tablespace

Temp Tablespace 处在逻辑对象和物理文件之间。Oracle 最终以数据块读写,向上组织为区、段、表空间,向下落到数据文件或 ASM 磁盘组;空间不足、热点块、坏块和 IO 延迟都要从这个层级关系里定位。

# 5.9. Undo Tablespace

Undo Tablespace 处在逻辑对象和物理文件之间。Oracle 最终以数据块读写,向上组织为区、段、表空间,向下落到数据文件或 ASM 磁盘组;空间不足、热点块、坏块和 IO 延迟都要从这个层级关系里定位。

# 6. 开发人员重点提醒

  • 建表时明确表空间、LOB 存储、主键策略和生命周期。
  • 大查询、大排序、大批量更新前评估 TEMP 和 UNDO。
  • 避免无边界历史表持续增长,归档策略要从模型设计开始。

# 7. 运维人员重点提醒

  • 监控表空间、数据文件、ASM 磁盘组、TEMP、UNDO 和对象增长排行。
  • 自动扩展要设置上限,并配合容量告警。
  • 定期做坏块检查和恢复演练。

# 8. 典型问题与排查

  • 表空间满:先定位对象和文件,再决定扩容、清理、归档或收缩。
  • TEMP 满:定位 SQL_ID、执行计划和排序/哈希节点。
  • Undo 不足:检查长事务、Undo 保留和批量任务。

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

  • 表空间告警可用
  • TEMP/UNDO 有独立监控
  • 数据文件自动扩展有上限
  • 对象增长排行可查
  • RMAN validate 定期执行

# 10. 阶段小结

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

上次更新: 2026/06/25, 15:30:11
Oracle进程与后台任务
Oracle数据类型与字符集

← Oracle进程与后台任务 Oracle数据类型与字符集→

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