ORACLE的存储结构可以分为物理存储结构和逻辑存储结构两种。
物理存储结构
是指数据在磁盘上的物理存储方式,包括数据文件、操作系统块等。数据文件是实际存储在磁盘上的文件,一个表空间可以由多个数据文件组成,这些数据文件是实际存储在磁盘上的文件,由操作系统的块组成。操作系统块是文件系统I/O的基本单位。
逻辑存储结构
主要描述的是Oracle的内部存储结构,与操作系统平台无关,由Oracle数据库创建和管理。它从大到小的层级结构包括:数据库、表空间、段、区和数据块。
数据库是最高一级的逻辑存储结构,通过表空间oracle就可以将相关的逻辑结构和对象组合在一起,oracle就是由若干个表空间组成。段就包含在表空间中。一个表空间包含多个数据文件,一个数据文件只能属于一个表空间。段是由多个区组成,一个区是由多个块组成。一个表空间包含多个数据文件,多个文件可以在不同的物理存储上。也就是说,表空间是可以跨物理存储的。但是,段下一级对象数据块的存储,是不能指定存储在那个文件里的。所以,要想让数据对象访问IO负载均衡,需要指定不同的数据段。
表空间是最大的逻辑单位,一个数据库可以有多个表空间,一个表空间可以有多个数据文件(一个数据文件只能属于一个表空间)。它主要有以下作用:决定数据库实体的空间分配、设置数据库用户的空间份额、控制数据库部分数据的可用性、分布数据于不同的设备之间以改善性能、备份和恢复数据等。
此外,区是连续的块组成的,不能跨域文件。对于区表空间有两种不同的管理方式:本地的管理方式和数据字典的管理方式。 ORACLE认为这样的方式是最节省空间的。主要分为PCTFREE和PCTUSED free 10%表示只能存入90%的空间 原本如果无法写入则会进行一个行迁移的动作,将整行迁移到另一个块 设定一个pctfree就是一定程度上避免行迁移这样的情况产生 used 40%表示下降到40%后才能插入数据 这是为了防止进行频繁的上升下降 块参数 initrans :初始 maxtrans :最大 查看标准块大小 > show parameter block
存储结构示例
假设有一个名为"exampledb"的数据库,它由两个表空间组成:system表空间和data表空间。
system表空间
该表空间包含控制文件和数据文件。控制文件是存储数据库元数据的文件,如数据库的名称、创建时间等。
数据文件是实际存储数据的地方,由若干个操作系统块组成。
data表空间:
该表空间包含若干个数据文件,每个数据文件由多个操作系统块组成。
这些数据文件存储了各种数据库对象,如表、索引等。
段(Segment):
假设在data表空间中有一个名为"employees"的表,该表由一个段组成。
该段由多个区组成,每个区由多个数据块组成。
区(Extent):
当"employees"表需要更多的存储空间时,Oracle会分配一个新的区给该段。
每个区由连续的数据块组成,用于存储表的数据。
数据块(Block):
数据块是Oracle存储空间分配的最小单位,也是数据库I/O的基本单位。每个数据块包含数据和元数据,如行标识符、记录头信息等。通过上述示例,可以看到Oracle的存储结构是一个层次结构,从数据库到数据块,每一层都有其特定的组织和管理方式。这种结构使得Oracle能够高效地管理存储空间、提供数据访问和保证数据完整性。