ORACLE逻辑存储结构图如下
由图可知
一个表空间由一组段组成
一个段由一组区组成
一个区由一批数据库块组成
一个数据库块对应一个或多个物理块
一.表空间
表空间是Oracle数据库最大的逻辑结构,一个Oracle数据库在逻辑上由多个表空间组成,一个表空间只隶属于一个数据库。Oracle中有一个称为SYSTEM的表空间,这个表空间是在创建或安装数据库时自动创建的。主要用于存储系统的数据字典,过程,函数,触发器等;也可以存储用户的表,索引等。一个表空间可以有多数据文件,但是一个数据文件只能属于一个表空间。
一个表空间就是一片磁盘区域,他由一个或者多个磁盘文件组成,一个表空间可以容纳许多表、索引或者簇等。每个表空间有一个预制的磁盘区域称为初始区间(initial extent)用完这个区间后再用下一个,直到用完表空间,这时候需要对表空间进行扩展,增加数据文件或者扩大已经存在的数据文件
表空间分为系统表空间和非系统表空间
小文件表空间: 即系统默认的表空间. System表空间, sysaux表空间
大文件表空间: 是为超大型数据库设计的, 只包含一个大数据文件, 该文件的大小为128KB<size<128TB.
可以简化数据文件的管理, 减少SGA的需求, 减少控制文件.
二 段(segment))
段用于存储表空间中某一种特定的、具有独立存储结构的数据库对象的数据,它有一个或多个连续的区组成。当创建表、索引、簇等对象时,oracle就会为这些对象分配存储空间(即段),以便存储它们的数据。按照段中所存储的数据的特征、用途不同,可以分为以下几种:
段类型 |
名称 |
段类型 |
名称 |
Index partition |
索引分区段 |
Deferred rollback |
延迟回退段 |
Table partition |
表分区段 |
Undo |
撤销段(还原段) |
Table |
表段(数据段) |
Temporary |
临时段 |
Cluster |
簇段 |
Cache |
高速缓存段 |
Index |
索引段 |
Lob |
二进制大对象段 |
Rollback |
回退段 |
Lobindex |
二进制大对象索引段 |
段随着存储数据的增加而逐渐变大。段的增大过程是通过增加区得个数而实现的(每次增加一个区)。每个区的大小事块得整数倍。
三、 区(extent)
区是由物理上连续存放的块所组成的。区 是oracle存储分配的最小单位。一个或多个块组成区,一个或多个区组成段。一个区只能属于一个数据文件。
当在数据库中创建带有实际存储结构的方案对象时(如表、索引),oracle将为方案对象分配若干个区(视该方案的初始大小而定),以便组成一个对应的段,来为该方案对象提供初始的存储空间。当段中已分配的区都写满,oracle就要在该方案对象所在的表空间中为该段分配下一个新的空白区,以便容纳更多的数据。
四、 块(block)
块是最小的数据管理单位,即oracle的所有存储的i/o操作都是以块为单位的。相对应的,操作系统执行i/o操作的最小单位是操作系统块。块得大小是操作系统块得大小的整数倍。
块得大小是一个表空间的属性。SYSTEM和SYSAUX表空间具有相同的、标准的块大小,这个大小是在创建数据库时(会同时创建这两个表空间)由DB_BLOCK_SIZE初始化参数指定的,但在创建数据库之后这个参数值不能改变。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/7280.html