Oracle数据库文件存储机制与结构详解
立即解锁
发布时间: 2025-08-23 01:22:09 阅读量: 2 订阅数: 18 


Oracle数据库架构与性能优化指南
### Oracle数据库文件存储机制与结构详解
#### 1. 数据文件与存储容器概述
在Oracle数据库中,数据文件是存储数据的重要载体。例如,像`/opt/oracle/oradata/CDB/PDB1/users01.dbf` 、`/opt/oracle/oradata/CDB/PDB2/system01.dbf`等文件,位于`/opt/oracle/oradata/CDB`目录下的数据文件属于根容器,而其子目录下的数据文件则属于可插拔数据库。通常,每个数据库至少会有以下几种数据文件:
- **SYSTEM**:存储Oracle数据字典。
- **SYSAUX**:包含其他非字典对象。
- **UNDO**:存储用于回滚操作的撤销段。
- **USERS**:若未指定其他表空间,它是用于存储应用程序数据的默认表空间。
#### 2. 文件系统机制
Oracle提供了三种存储数据的文件系统机制:
| 文件系统机制 | 特点 |
| --- | --- |
| “Cooked”操作系统(OS)文件系统 | 文件像普通文档一样出现在文件系统中,可通过Windows Explorer查看,在UNIX/Linux中使用`ls`命令查看。可使用`xcopy`(Windows)或`cp`(UNIX/Linux)等简单工具移动文件。历史上是Oracle存储数据最常用的方法,在RAC环境中会使用ASM磁盘类型。通常是缓冲的,操作系统会在读写磁盘时缓存信息。 |
| 自动存储管理(ASM) | 专为数据库设计的文件系统,可看作数据库文件系统,只存储与数据库相关的信息,如表格、索引、备份、控制文件等。概念上数据仍存储在文件中,但文件系统是ASM,可在单机或集群环境中工作。自Oracle 11g Release 2起,不仅提供数据库文件系统,还可选配集群文件系统。 |
| 集群文件系统 | 专门用于RAC(集群)环境,提供类似“Cooked”文件系统的共享文件系统,供集群中的多个节点(计算机)使用。传统“Cooked”文件系统在集群环境中只能由一台计算机使用,若使用NFS挂载或Samba共享,存在单点故障风险。在Oracle 11g Release 2之前,Oracle提供Oracle Cluster File System(OCFS),目前仅适用于Windows和UNIX/Linux。其他第三方供应商也提供与Oracle兼容的认证集群文件系统。Oracle 11g Release 2还提供了Oracle Automatic Storage Management Cluster File System(ACFS)。 |
一个数据库可以由上述任意或所有文件系统的文件组成,这使得在不同技术之间迁移或尝试新文件系统类型变得容易,无需将整个数据库迁移。
#### 3. 存储层次结构
Oracle数据库的存储层次结构如下:
```mermaid
graph LR
A[数据库] --> B[表空间]
B --> C[段]
C --> D[区]
D --> E[块]
```
- **数据库**:由一个或多个表空间组成。
- **表空间**:是Oracle中的逻辑存储容器,位于存储层次结构的顶层,由一个或多个数据文件组成。这些文件可以是文件系统中的“Cooked”文件、原始分区、ASM管理的数据库文件或集群文件系统上的文件。表空间包含段。
- **段**:是表空间内的主要组织结构,是消耗存储的数据库对象,如表格、索引、撤销段等。大多数情况下,创建表时会创建表段;创建分区表时,每个分区会创建一个段;创建索引时,通常会创建索引段。每个消耗存储的对象最终都存储在一个段中,包括撤销段、临时段、集群段、索引段等。
- **区**:段由一个或多个区组成。区是文件中逻辑上连续的空间分配。传统上,每个段至少从一个区开始。Oracle 11g Release 2引入了“延迟”段的概念,即段在插入数据之前不会立即分配区。当对象需要超出初始区的空间时,会请求分配另一个区,新区不一定与第一个区相邻,甚至可能不在同一个文件中,但区内的空间在文件中总是逻辑连续的。区的大小从一个Oracle数据块到数GB不等。
- **块**:区由块组成,块是Oracle中最小的空间分配单位,用于存储数据行、索引条目或临时排序结果。Oracle通常从块中读取和写入磁盘。块的常见大小有2KB、4KB、8KB或16KB,在某些情况下32KB也是允许的,但最大块大小受操作系统限制。数据库最多可有六种不同的块大小,此功能是为了使可传输表空间在更多情况下可用。数据库有默认块大小,由`CREATE DATABASE`命令中的初始化文件指定,`SYSTEM`表空间始终使用默认块大小,其他表空间可创建非默认块大小。任何给定表空间的块大小是一致的,多段对象的每个段所在表空间的块大小可能不同,但每个段内的块大小相同。
#### 4. 块的结构
大多数块(除了LOB段块和Exada
0
0
复制全文
相关推荐










