一、表空间和临时表空间
二、表空间和数据文件
三、维护表空间
1. 创建表空间
2. 创建临时表空间
3. 向表空间添加数据文件
4. 删除表空间
一、表空间和临时表空间
表空间:数据库的逻辑存储结构,用来存储数据表、索引等数据对象。任何对象在创建时都需要指定存在哪个表空间。每个数据库至少有一个表空间,如SYSTEM表空间。
临时表空间:用来存储临时段,临时段的创建通常与排序之类的操作有关,当该空间完成排序操作后oracle系统会自动释放。我们常用的几个操作有用到临时空间,如:select distinct 不重复检索、union联合查询、minus差值计算等。
二、表空间和数据文件
表空间:数据库的逻辑存储结构
数据文件:数据库的物理存储结构
两者关系:
(1)每个表空间由一个或许多个数据文件组成,一个数据文件只能属于一个表空间
(2)创建表空间时一定要创建数据文件,增加数据文件时也需指定表空间
三、维护表空间
1. 创建表空间
step1:查询用户表空间的数据文件
SQL> select name from v$datafile;
可看到系统中存在的数据文件,且数据文件的存储路径:/u01/app/oracle/oradata/ORA11GRZ/。得到数据文件的存储路径,在创建表空间时需要路径来创建对应的数据文件。
step2:创建表空间 bdi_data,数据文件 bdi_data.dbf
SQL> create tablespace bdi_data datafile '/u01/app/oracle/oradata/ORA11GRZ/bdi_data.dbf' size 100M reuse
autoextend on next 40M //数据文件每次自动扩展为40m
maxsize unlimited //不限制数据文件扩展
default storage(initial 128k next 128k minextents 2 maxextents unlimited);
//initial分配给表(段)的初始区的大小; next 第二个区的大小; minextents 指定创建表时,至少要分配多少个区给这个表(段);maxextents 指定可以给这个表(段)区的最大数量
以上是基本创建一个表空间,创建表空间的完整语法如下:
create [ smallfile | bigfile ] tablesapce tablespace_name datafile 'path/filename.dbf' size num[k/m] reuse // reuse表示文件存在则清除重建,不存在则创建
[ autoextend [on/off ] next num[k/m] ] // on自动扩展,需设置next值;off 非自动扩展
[ maxsize [unlimited | num[k/m] ] ] //自动扩展指定文件扩展最大字节数
[ mininum extent num[k/m] ] //指定最小长度,由操作系统和数据库的块决定
[ default storage storage ] // 指定表、索引等的存储参数值
[ online | offline ] //创建表空间可指定为在线or离线
[ logging | nologging ] //表空间的表在加载数据时是否产生日志,默认为logging
[ permanent | temporary ] //表空间是永久表空间or临时表空间,默认为永久
[ extent management dictionary|local [ autoalllocate | uniform size num[k/m] ] ]
// 表空间的扩展方式是使用数据字典管理 or 本地化管理,默认为本地化管理。oracle不推荐使用数据字典管理表空间。若为本地化管理,autoalllocate | uniform size表示在表空间扩展时,每次盘区扩展的大小是由系统自动指定还是按照等同大小进行。
2. 创建临时表空间
step1:查询用户临时表空间的数据文件
SQL> select name from v$tempfile;
临时表空间的存储位置: /u01/app/oracle/oradata/ORA11GRZ/
step2:创建临时表空间 bdi_temp,数据文件 bdi_temp.dbf
SQL> create temporary tablespace bdi_temp tempfile '/u01/app/oracle/oradata/ORA11GRZ/bdi_temp.dbf.bdf' size 100m reuse
autoextend on next 20m //数据文件每次自动扩展为40m
maxsize unlimited; //不限制数据文件扩展
3. 向表空间添加数据文件
【例】向表空间 bdi_data 添加一个数据文件 bdi_data02.dbf,支持自动扩展,每次扩展40 M,且最大空间不受限制
SQL> alter tablespace bdi_data add datafile '/u01/app/oracle/oradata/ORA11GRZ/bdi_data02.dbf' size 100M autoextend on next 40M maxsize unlimited;
4. 删除表空间
【例】删除表空间 bdi_data 中的数据文件 bdi_data02.dbf
SQL>alter tablespace bdi_data drop datafile '/u01/app/oracle/oradata/ORA11GRZ/bdi_data02.dbf';