表空间是一个逻辑概念,数据文件是表空间的物理映射,若干操作系统文件可以组成一个表空间。表空间统一管理空间中的数据文件,一个数据文件只能属于一个表空间。一个数据库空间由若干个表空间组成。
在创建完ORACLE数据库后,默认有五个表空间,分别为SYSAUX、SYSTEM、UNDOTBS1、USERS以及TEMP表空间。用户可以根据自己的需要创建若干的用户表空间。
默认表空间说明:
SYSTEM :存放数据字典,包括表、视图、存储过程的定义等。
SYSAUX :SYSTEM表空间的辅助空间。主要用于存储除数据字典外的其他的数据对象,这样可以减少SYSTEM表空间的负荷。
TEMP:存放SQL语句处理的表和索引的信息,比如数据排序就占用此空间。
UNDOTBS1 :存放撤销数据的表空间。
USERS:通常用于存放应用系统所使用的数据对象。
按数据文件的类型分,表空间分为large表空间和smallfile表空间。创建表空间时数据文件默认为smallfile。若不做修改,ORACLE块大小一般为8k。由参数db_block_size 控制。每个数据文件最多包含4M个块大小,即8M块的每个数据文件最大为32G,而每个samall表空间最大可包含1024个数据文件。而每个bigfile表空间的数据文件最多可容纳4G个块,但只能拥有一个数据文件。
表空间操作:
1)创建表空间
create tablespace DT_TPC_DAT datafile '/opt/oracle/data/tpc/DT_TPC_DAT01.DBF' size 1G autoextend on next 200M maxsize 31G;
2)删除表空间
drop tablespace talespace_name including contents and datafile;
3)修改表空间权限
alter tablespace tablespace_name read write;
alter tablespace tablespace_name read only;
4)脱机表空间
alter tablespace tablespace_name offline;
5)表空间改名
alter tablespace tablespace_name1 rename to tablespace_name2;
6)表空间说明
system 表空间必须online 必须是read write
sysaux 表空间可以offline 不能read only
undo 表空间不能offline 不能read only
只读表空间的对象可以删除,但是不能被update和insert
数据文件操作
1)修改数据文件为自动扩展
alter database datafile '...........' autoextend on;
2)修改数据文件大小
alter database datafile '...........' resize 1M;
3)添加数据文件
alter tablespace add datafile '.......' size 200M autoextend off;
4)数据文件重命名
a,alter tablespace t01 offline;(数据库在open状态)
b,ho cp /u01/oracle/oradata/orcl/t1.dbf /u01/oracle/oradata/orcl/t11.dbf
c,alter database rename file 'u01/oracle/oradata/orcl/t1.dbf' to '/u01/oracle/oradata/orcl/t11.dbf';
d,alter tablespace t01 online;
如果数据库只在mont状态,那么只要在操作系统级别移动数据文件,执行数据库文件改名,启动数据库即可。
与表空间和数据文件相关的系统视图。
v$tablespace和dba_tablespaces记录表空间的基本信息。
v$datafile和dba_data_files记录数据文件的基本信息。
v$tempfile和dba_temp_files记录临时文件基本信息。
dba_free_space在不考虑可自动扩展的情况下,记录每个表空间中数据文件的可用大小。