核心结论:Oracle 创建表空间使用 CREATE TABLESPACE 语句,需要拥有 SYSDBA 或者 CREATE TABLESPACE 系统权限,表空间是 Oracle 数据库逻辑存储单元,所有表、索引数据最终都会存放在表空间对应的数据文件里面,生产环境一般会设置自动扩展,避免写满之后业务报错。
一、基础语法 普通永久表空间
CREATE TABLESPACE 表空间名
DATAFILE '数据文件完整路径'
SIZE 初始大小
AUTOEXTEND ON
NEXT 自动扩展增量
MAXSIZE 最大上限
EXTENT MANAGEMENT LOCAL
SEGMENT SPACE MANAGEMENT AUTO;
示例
创建名为 TS_USER 的永久表空间,数据文件放在 /u01/oradata/orcl/ts_user01.dbf,初始 500M,每次自动扩展 100M,最大不超过 10G
CREATE TABLESPACE TS_USER
DATAFILE '/u01/oradata/orcl/ts_user01.dbf'
SIZE 500M
AUTOEXTEND ON
NEXT 100M
MAXSIZE 10G
EXTENT MANAGEMENT LOCAL
SEGMENT SPACE MANAGEMENT AUTO;
二、带多个数据文件的表空间
大业务表空间可以一次性创建多个 dbf 数据文件,分散 IO 压力
CREATE TABLESPACE TS_BIG
DATAFILE
'/u01/oradata/orcl/ts_big01.dbf' SIZE 1G,
'/u01/oradata/orcl/ts_big02.dbf' SIZE 1G
AUTOEXTEND ON
NEXT 200M
MAXSIZE 20G
EXTENT MANAGEMENT LOCAL
SEGMENT SPACE MANAGEMENT AUTO;
三、临时表空间创建语法
临时表空间专门存放排序、分组等临时数据,使用 CREATE TEMPORARY TABLESPACE
CREATE TEMPORARY TABLESPACE TEMP_USER
TEMPFILE '/u01/oradata/orcl/temp_user01.dbf'
SIZE 300M
AUTOEXTEND ON
NEXT 50M
MAXSIZE 5G
EXTENT MANAGEMENT LOCAL;
四、创建之后验证表空间
查询所有表空间
SELECT tablespace_name, status, contents FROM dba_tablespaces;
查询表空间对应数据文件
SELECT file_name, bytes, autoextensible, maxbytes
FROM dba_data_files
WHERE tablespace_name='TS_USER';
五、常用后续操作
1 给已有表空间追加数据文件
ALTER TABLESPACE TS_USER
ADD DATAFILE '/u01/oradata/orcl/ts_user02.dbf'
SIZE 500M AUTOEXTEND ON NEXT 100M MAXSIZE 10G;
2 删除表空间
DROP TABLESPACE TS_USER INCLUDING CONTENTS AND DATAFILES;
语法要点说明
1 DATAFILE 后面的路径,Linux 和 Windows 写法不一样,Windows 示例:'D:\app\oradata\orcl\ts_user01.dbf'
2 AUTOEXTEND ON 就是开启自动扩展,生产推荐开启,NEXT 是每次扩容大小,MAXSIZE 限制最大,防止磁盘被占满
3 EXTENT MANAGEMENT LOCAL 本地区管理,现在 Oracle 默认推荐,老式字典管理已经淘汰
4 SEGMENT SPACE MANAGEMENT AUTO 自动段空间管理,提升空间利用率
【常见问题】
问题 1 oracle 怎么创建表空间 提示权限不足怎么办
回答:oracle 怎么创建表空间,报错权限不足说明当前登录用户没有 CREATE TABLESPACE 权限,需要用 sys 用户登录,给用户授权:GRANT CREATE TABLESPACE TO 用户名;
问题 2 oracle 怎么创建表空间 数据文件路径报错无法创建
回答:oracle 怎么创建表空间,大概率是目录不存在,或者 oracle 操作系统用户没有该目录读写权限,提前创建文件夹并且赋予 oracle 用户读写权限。
问题 3 oracle 怎么创建表空间 表空间和用户是什么关系
回答:oracle 怎么创建表空间,表空间是存储容器,创建用户之后可以指定该用户默认表空间,之后用户新建表默认就存储在这个表空间里面。
【免责申明】
本内容为 Oracle SQL 通用语法讲解,不同版本参数细节略有差异,生产环境创建表空间需要提前规划磁盘空间、IO 负载,建议结合业务容量评估,本内容不替代 DBA 生产实施方案。


