Oracle | 表空间、临时表空间、数据文件

一、表空间和临时表空间

二、表空间和数据文件

三、维护表空间

1. 创建表空间

2. 创建临时表空间

3. 向表空间添加数据文件

4. 删除表空间


一、表空间和临时表空间

表空间:数据库的逻辑存储结构,用来存储数据表、索引等数据对象。任何对象在创建时都需要指定存在哪个表空间。每个数据库至少有一个表空间,如SYSTEM表空间。

临时表空间:用来存储临时段,临时段的创建通常与排序之类的操作有关,当该空间完成排序操作后oracle系统会自动释放。我们常用的几个操作有用到临时空间,如:select distinct 不重复检索、union联合查询、minus差值计算等。

二、表空间和数据文件

表空间:数据库的逻辑存储结构

数据文件:数据库的物理存储结构

两者关系:

(1)每个表空间由一个或许多个数据文件组成,一个数据文件只能属于一个表空间

Oracle | 表空间、临时表空间、数据文件_第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 指定可以给这个表(段)区的最大数量

Oracle | 表空间、临时表空间、数据文件_第2张图片

以上是基本创建一个表空间,创建表空间的完整语法如下:

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;  //不限制数据文件扩展

Oracle | 表空间、临时表空间、数据文件_第3张图片

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';

你可能感兴趣的:(Oracle | 表空间、临时表空间、数据文件)