Oracle 表空间
在ORACLE数据库中,所有数据从逻辑结构上看都是存放在表空间当中,当然表空间下还有段、区、块等逻辑结构。从物理结构上看是放在数据文件中。
一个数据库可以包含多个表空间,一个表空间只能属于一个数据库。
一个表空间包含多个数据文件,一个数据文件只能属于一个表空间。
Segment(段):段是指占用数据文件空间的通称,或数据库对象使用的空间的集合;段可以有表段、索引段、回滚段、临时段和高速缓存段等。
Extent(区间):分配给对象(如表)的任何连续块叫区间;区间也叫扩展,因为当它用完已经分配的区间后,再有新的记录插入就必须在分配新的区间(即扩展一些块);一旦区间分配给某个对象(表、索引及簇),则该区间就不能再分配给其它的对象.
基本的表空间
以上是系统默认创建的表空间,除了USERS表空间以外,其他的表空间都是必要的。
表空间的分类
永久表空间
存放永久性数据,如表,索引等。
临时表空间
排序、分组等操作会产生大量的临时数据,但是内存无法存储这么大量的数据,这时就是使用磁盘上建立的临时表空间存放这些中间结果。
一个全局的临时表空间,可以由多个用户共享,谁需要谁使用。但它只能存放临时的数据,不能包含任何永久性对象。 建议用本地管理方式创建这个表空间。
UBDO表空间
如果你对表中的记录做了修改,它会对修改之前的信息进行保存,这样可以保证数据的回滚。Undo表空间只包含undo类型的对象,不能包含任何其他对象,只适合于数据文件和区间管理。
表空间的管理方式
字典管理:全库所有的空间分配都放在数据字典中。容易引起字典争用,而导致性能问题。
本地管理:空间分配不放在数据字典,而在每个数据文件头部的第3到第8个块的位图块,来管理空间分配。
创建表空间
CREATE TABLESPACE paul DATAFILE '/oracle_10g/oradata/paul001.dbf' SIZE 10G EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO ONLINE;
删除表空间
DROP TABLESPACE paul;