1.Oracle数据库的数据组织
Oracle数据库组织为数据库(database)、表空间(tablespace)、操作系统文件、table、段(segment)、盘区(extent)和基本数据块(data blocks)
2.Oracle数据库逻辑存储层
每个数据库分成一个或多个表空间,所有表空间的组合存储容量即是数据库的存储容量
系统表空间SYSTEM和用户表空间;
- 系统表空间由Oracle在创建数据库时自动创建,用于表的信息、列的信息、索引的信息,数据字典等的管理;
- 用户表空间可由用户创建,存储表数据;
每个表空间由一个或多个操作系统文件构成,一个操作系统文件只能与一个数据库相联,操作系统文件仅起占位的作用。 数据在表空间中可跨文件进行操作。
操作系统文件中存储一个表(Table)或多个表,一个表可存储在一个文件中也可能存储在多个文件中。
- 逻辑存储层
3.Oracle数据库物理存储层
物理存储层由段(segment)、盘区(extent)和数据块(datablock)构成
数据块是最小的IO存储单位,又称为Oracle块、页(相当于扇区)
盘区是特定数量的连续数据块(相当于簇)。
- Oracle中的盘区是可以动态变化的,随不同数据库存储需求而调整
段是一组分配了特定数据结构的盘区,又分为数据段、索引段和临时段等
一个表的数据可以存放在一个段内,也可以存放在多个段内。一个段可以存放一个表的数据,也可以存放多个表的数据(如聚簇文件)
- 物理存储层
4.Oracle数据库的数据组织相关的SQL命令
定义表空间时,需要考虑物理存储性能。注意参数的使用,参数的含义参见Oracle手册。
CREATE TABLESPACE tblspname
DATAFILE 'filename'
[SIZE n [K|M]]
[REUSE]
[AUTOEXTEND OFF | AUTOEXTEND ON
[NEXT n [K|M] [MAXSIZE {UNLIMITED | n [K|M]}]
{, 'filename' . . .}
[ONLINE | OFFLINE]
[DEFAULT STORAGE ([ INITIAL n] [NEXT n] [MINEXTENTS n]
[MAXEXTENTS {n | UNLIMITED}] [PCTINCREASE n])]
[MINIMUM EXTENT n [K|M]] ;
- 解释
一个表空间可由多个文件构成, TABLESPACE tblspname DATAFILE ‘filename’; 表空间的文件是否可以自动扩展,AUTOEXTEND ; 可设置表空间的初始容量、最小盘区数、每次扩展容量等,PCTINCREASE ; 可设置构成表空间的最小盘区,MINIMUM EXTENT n [K|M]; 盘区的大小是可以动态调整的; SQL的CREATE TABLE的三种功能: - (1)定义模式;
- (2)定义物理存储结构;
- (3)定义完整性约束
CREATE TABLE tablename
( {colname datatype [default { constant | NULL}]
{, colname datatype etc. . . .}
后面是物理参数
[ORGANIZATION HEAP | ORGANIZATION INDEX ]
[TABLESPACE tblspname]
[STORAGE ([initial n [K|M]]
[next n [K|M]] [minextents n]
[maxextents n] [pctincrease n] ) ]
[PCTFREE n]
[PCTUSED n]
5.小结
CREATE DATABASE sct
将多个表空间关联在一起
CREATE TABLESPACE tspace1…
用多个操作系统文件占位,将多个表的存取统一在一个空间中直接对数据块-盘区-Segment进行操作。
CREATE TABLE tablename …
表的存取,直接映射对数据块-盘区的操作
|