一、表空间的容量
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:存储用户的表和索引数据。
五、总结
图片来自:https://dn-simplecloud.shiyanlou.com/uid/276733/1518160288419.png