表空间是数据库的裸机组成部分。从物理上说,数据库数据存放在数据文件中;从逻辑上说,数据库数据存放在表空间中,并且表空间是由一个或多个数据文件组成的,是一对多的关系。
oracle提供了一套逻辑结构来安排数据存储,这些逻辑结构包括表空间,段,取以及oracle块。
1.表空间(tablespace)
表空间用于逻辑组织数据库数据。数据库逻辑上由一个或多个表空间组成,而表空间物理上是有一个或多个数据文件组成的。表空间作用:
- 通过表空间可以控制数据库所占用的磁盘空间。
- 通过表空间可以控制用户所占用的空间配置。
- 通过表空间,dba可以将不同类型的数据库部署到不同位置。一方面可以提高i/0性能,另一方面友谊与备份和恢复等管理操作。
2.数据文件(data file)
数据文件是表空间的物理组成部分,表空间与数据文件是一对多的关系,并且一个数据文件只能属于一个表空间。数据库使用的原则是:
- 少量大数据文件要优于大量小数据文件。
- 当建立数据库时,使用永久参数maxdatafiles可以指定在控制文件中为数据文件所预留的空间(默认32),通过从建数据文件可以修改永久参数设置。
- 初始化参数db_files限制了数据库可以同时打开数据库最大文件个数。如果数据文件个数达到了该参数限制,那么无法建立新的数据文件。
- 从性能角度考虑,应该将数据文件和从做日志不熟部署到不同的磁盘。应为从做日志的i/0操作非常频繁,所以重做日志放到速度最快的磁盘上。
3.段(segment)
段用于存储特定逻辑对象的所有数据,他由一个或多个区组成。当建立表,索引,或簇时,oracle会为这些对象分配段,以存放他们的数据信息,并且段名与对象名完全相同。下面是常用段类型。
- 表段(数据段):用于存放表的数据(表名=段名)。
- 索引段:用于存放索引的数据(索引名=段名)。
- undo段:用于存放事务所修改数据的旧值。
- 临时段:用于存放排序操作所产生的的临时数据。以下操作会产生临时数据:
- create index
- select order by
- select distinct
- select group by
- select union
- select intersect
- select minus
- analyze命令。
4.区(extent)
区由相邻的数据块组成,他是oracle进行空间分配的逻辑单位,并且一个区只能唯一地属于一个数据文件。当建立段时,oracle至少为其分配一个区;当段不足以容纳新数据时,oracle会自动扩展该段,并且为其增加一个区。
5.oracle块
oracle块也称数据块,他是oracle在数据文件上执行i/0操作的最小单位,其取值为2k,4k,8k,16k,32k。