一、表空间的容量

1. 表空间和数据文件

tablespace: 是oracle数据库中最大的逻辑结构概念。
datafile: 实际存储数据的文件。
tablespace是逻辑结构,需要对应至少一个datafile,而datafile也需要对应一个tablespace来解释自己,否则只是一份无意义的文件。
可以理解为,当涉及到表空间的存储空间的操作时,我们就要操作对应的datafile了,
比如在创建表空间时,要设置存储空间的大小,即创建一个datafile

create smallfile tablespace tp_name -- smallfile指小文件表空间,可以包含多个小文件,对应bigfile只有一个大文件,不写默认smallfile
datafile 'df_name.dbf' size 10m autoextend on next 1M maxsize 20M -- autoextend on
extent management local autoallocate -- 默认,可不写
segment space management auto; -- 默认,可不写

在扩容表空间时,一个是增加数据文件,另一个是增大数据文件

alter tablespace tp_name 
add datafile 'df_name.dbf' size 10m;
alter database datafile 'df_name.dbf' resize 20m;

2. 表空间和用户

一个用户只能对应一个表空间,一个表空间可以对应多个用户。

-- 查看用户及其表空间
select default_tablespace, user_name from dba_users;

3. 表空间类型

表空间的类型有如下三种:

  • 永久表空间:永久表空间包含持久性模式对象。永久表空间中的对象存储在数据文件中。
  • 撤销表空间:撤消表空间是在自动撤消管理模式下运行数据库时,管理撤消数据的一种永久性表空间。
  • 临时表空间:临时表空间仅包含会话期间的模式对象。临时表空间中的对象存储在临时文件中。

3. 数据文件的操作

修改datafile的命令

-- 修改大小
alter database datafile 'df_name.dbf' resize 20m;
-- 开/关自动扩展
alter database datafile 'df_name.dbf' autoextend off;
alter database datafile 'df_name.dbf' autoextend on next 1m maxsize 20m;
-- 移动或重命名
alter database move datafile 'df_name.dbf' to 'df_new_name.dbf';
-- 删除
alter tablespace tp_name drop datafile 'df_name.dbf'; -- 1.表空间非只读状态;2.该文件非表空间第一个文件;3.该文件时空的

二、更改表空间

1. 重命名

alter tablespace tp_name rename to tp_new_name; -- 不会重命名对应文件

2. 读写状态

alter tablespace tp_name read only;
alter tablespace tp_name read write;

3. 上下线

alter tablespace tp_name offline; -- 有三中状态,normal temporary immediate,默认normal
alter tablespace tp_name online;

4. 删除表空间

drop tablespace tp_name including contents and datafiles; -- 有外键的话会删除失败
drop tablespace tp_name including contents cascade constraints; -- 连同外键一起删除

三、 临时表空间

1.临时表空间

当内存不够用时,就会先把数据暂时写入临时表空间,操作完成后就会释放里面的数据。数据创建时就会创建默认的临时表空间TEMP

-- 创建临时表空间
create temporary tablespace temp_tp_name
tempfile 'tmp_df_name.dbf' size 10m;
-- 修改默认表空间
alter database default temporary tablespace temp_tp_name;
-- 删除
drop tablespace tmp_tp_name including contents and datafiles;

2.临时表空间组

在oracle10g以前,每个用户只能使用一个临时表空间,就是其默认临时表空间。oracle10g及其以后版本提供了新的临时表空间组的功能,允许将多个临时表空间打包成一个组,然后指定用户的默认临时表空间为该临时表空间组,从而达到一个用户可以使用多个临时表空间的目的。

-- 创建
alter table_space tmp_tp_name tablespace group tmp_grp_name;
-- 删除
drop tablespace tmp_tp_name including contents and datafiles;

四、默认表空间

SYSTEM:管理任何其他表空间。它包含数据字典,有关数据库管理信息的表和视图,编译的存储对象(如触发器,过程等)。
SYSAUX:辅助表空间。
UNDOTBS1:撤销表空间。存储的是撤销信息,可以用于恢复操作。
TEMP:临时表空间。可用于排序操作等。
USERS:存储用户的表和索引数据。

五、总结

表空间把这个文件remove smallfile表空间_临时表空间


图片来自:https://dn-simplecloud.shiyanlou.com/uid/276733/1518160288419.png