读书笔记:Oracle数据库存储结构全解析:从表空间到日志文件

我们的文章会在微信公众号IT民工的龙马人生博客网站( www.htz.pw )同步更新 ,欢迎关注收藏,也欢迎大家转载,但是请在文章开始地方标注文章出处,谢谢!
由于博客中有大量代码,通过页面浏览效果更佳。

本文为个人学习《Expert Oracle Database Architecture Techniques and Solutions for High Performance and Productivity(第四版本》一书过程中的笔记与理解分享,仅用于学习与交流,部分内容参考原书观点并结合>实际经验进行整理。若涉及版权问题,请联系删除或沟通处理。也请大家支持购买原版书籍。

Oracle数据库存储结构全解析:从表空间到日志文件

数据库的"储物柜":表空间

想象Oracle数据库就像一个大型仓库,而表空间就是这个仓库里的储物柜。每个数据库可以有一个或多个这样的"储物柜"(表空间),而每个储物柜又由多个"抽屉"(数据文件)组成。这些抽屉可以是普通文件、原始分区或者专门管理的ASM文件。

储物柜里的物品分类:段

在表空间这个"储物柜"里,我们把物品分门别类地存放,这些分类就是"段"。常见的段类型包括:

  • 表段:存放普通表格数据
  • 索引段:存放索引数据
  • 撤销段:记录修改前的数据
  • 临时段:存放临时计算结果

有趣的是,一个看似简单的操作可能创建多个段。比如创建一个带主键和CLOB字段的表,实际上会创建4个段:表本身、主键索引、CLOB索引和CLOB数据。

物品的摆放方式:区和块

每个段(物品分类)内部,数据是按照"区"为单位存放的。区就像储物柜中的隔层,每个隔层是连续的存储空间。当隔层不够用时,系统会自动添加新的隔层,但这些新隔层不一定紧挨着原来的隔层。

区又由更小的"块"组成,块是Oracle中最小的存储单位,就像隔层中的小格子。常见的块大小有2KB、4KB、8KB或16KB。选择合适大小的块很重要:太大会浪费空间,太小则可能影响性能。

特殊的存储区域

临时文件:工作台

临时文件就像工作台,用于存放临时性的工作数据:

  • 大型排序的中间结果
  • 哈希运算的临时数据
  • 全局临时表的内容
  • 内存不足时的结果集

与普通数据不同,临时文件中的操作通常不生成重做日志,这意味着它们不会被常规的恢复操作保护。

控制文件:仓库地图

控制文件相当于仓库的地图索引,记录着:

  • 所有数据文件的位置
  • 数据库名称和创建时间
  • 检查点信息
  • 归档日志历史
  • RMAN备份信息

虽然体积小(通常几MB),但控制文件极其重要。建议多保留几个副本,放在不同的磁盘上以防意外丢失。

重做日志:操作记录本

重做日志就像仓库管理员的工作日记,详细记录所有数据变更。它们主要用于:

  • 系统崩溃后恢复数据
  • 磁盘故障后恢复备份
  • 搭建备用数据库
  • 数据变更审计

重做日志分为两种工作模式:

  1. ARCHIVELOG模式:保留所有操作记录(强烈推荐生产环境使用)
  2. NOARCHIVELOG模式:循环覆盖旧记录(仅适用于测试环境)

数据库安全门禁:密码文件

密码文件控制着远程管理员访问权限。当数据库还未启动时,常规的用户验证机制无法工作,这时就需要密码文件来验证SYSDBA身份。

配置密码文件的步骤:

  1. 用orapwd工具创建密码文件
  2. 设置REMOTE_LOGIN_PASSWORDFILE参数
  3. 为需要远程管理的用户授予SYSDBA权限

提高备份效率的利器

更改跟踪文件

这个可选功能可以记录哪些数据块发生了变更,让RMAN备份时只需处理变化的部分,大大提高了增量备份的效率。启用方法很简单:

ALTER DATABASE ENABLE BLOCK CHANGE TRACKING 
USING FILE '/path/to/tracking_file';

闪回日志

闪回日志保存了数据块修改前的状态,允许我们将整个数据库回退到之前的某个时间点,就像系统还原点一样。

最佳实践建议

  1. 生产环境务必使用ARCHIVELOG模式:这是数据安全的底线
  2. 合理规划表空间和块大小:根据数据类型和访问模式选择
  3. 多路复用重要文件:控制文件和重做日志应有多个副本
  4. 定期测试备份恢复流程:确保在真正需要时能派上用场

记住,良好的存储规划不仅能保障数据安全,还能显著提升数据库性能。就像整理一个高效的仓库,合理的分区和摆放能让存取操作事半功倍。

------------------作者介绍-----------------------
姓名:黄廷忠
现就职:Oracle中国高级服务团队
曾就职:OceanBase、云和恩墨、东方龙马等
电话、微信、QQ:18081072613
个人博客: (http://www.htz.pw)
CSDN地址: (https://blog.csdn.net/wwwhtzpw)
博客园地址: (https://www.cnblogs.com/www-htz-pw)

posted @ 2025-07-24 14:13  认真就输  阅读(20)  评论(0)    收藏  举报