Oracle的表空间(tablespace)
表空间是数据库的逻辑划分,一个表空间只能属于一个数据库。
所有的数据库对象都存放在指定的表空间中。但主要存放的是表, 所以称作表空间。
Oracle数据库中至少存在一个表空间,即SYSTEM的表空间。
表空间属性:
一个数据库可以包含多个表空间,一个表空间只能属于一个数据库。
一个表空间包含多个数据文件,一个数据文件只能属于一个表空间。
表这空间可以划分成更细的逻辑存储单元。
表空间的分类
- 永久表空间:存储数据库中需要永久化存储的对象,比如二维表、视图、存储过程、索引。
- 临时表空间:存储数据库的中间执行过程,如:保存order by数据库排序,分组时产生的临时数据。操作完成后存储的内容会被自动释放。临时表空间是通用的,所的用户都使用TEMP作为临时表空间。一般只有tmp一个临时表空间,如果还需要别的临时表空间时,可以自己创建。
- UNDO表空间:保存数据修改前的副本。存储事务所修改的旧址,即被修改之前的数据。当我们对一张表中的数据进行修改的同时会对修改之前的信息进行保存,为了对数据执行回滚、恢复、撤销的操作。
表空间的典型应用
典型应用一:控制用户所占用的表空间配额。
--查看当前数据库的表空间 (必须时管理员身份)
select tablespace_name from dba_tablespace_groups
grant create tablespace to root
--创建表空间 (表空间创建时必须绑定数据文件:)
create tablespace roottablespace
DATAFILE 'H:\app\SuJuLin\oradata\orcl\root.DBF'
SIZE 10M
AUTOEXTEND ON NEXT 32M MAXSIZE UNLIMITED
参数说明:
DATAFILE:存储的位置。
SIZE:初始大小。
AUTOEXTEND:自动扩展是否开启。
NEXT:增长的大小。
MAXSIZE:最大值是否有上线。
--创建表并指定表在自己创建的表空间下面 (必须在指定的用户下面:)
create table grade
(
gid number primary key not null,
score number not null
) tablespace roottablespace
--删除表空间
drop tablespace 表空间名称 including contents
--删除表空间及物理文件
drop tablespace 表空间名称 including contents and datafiles
--删除所有与该空间相关的完整性约束条件:
CASCADE CONSTRAINTS:。
例:
DROP TABLESPACE FESCO ‘表空间名’ CONTENTS AND DATAFILES CASCADE CONSTRAINTS;