已索引

既可以使用命令行进行管理,也可以使用管理器来管理。

相关视图

select * from dba_tablespaces;
select * from DBA_DATA_FILES;
select * from v$tablespace;
select * from v$datafile;
select * from DBA_FREE_SPACE; --数据文件剩余空间

默认表空间

DM 默认预定义 SYSTEM、ROLL、MAIN、HMAIN、TEMP 五个表空间。
SYSTEM:系统表空间,存放数据字典等信息(表、字段、视图等对象的定义、权限信息等)
ROLL:回滚表空间,存放回滚页,数据库中的 DML 操作对应都会生成 redo 和 undo,undo 信息放入 ROLL 表空间。
MAIN:用户默认表空间,当创建用户时,如果为指定用户的默认表空间,则 MAIN 为用户的默认表空间。
HMAIN:HUGE 表的默认表空间(HTS 表空间)。
TEMP:临时表空间,存放临时表数据等、当大量的数据排序或创建索引占用临时表空间。

临时表空间

DM 的临时表空间是库级别的,不能做到用户级别。
TEMP 表空间完全由 DM 数据库自动维护,DBA 可以通过下面的参数来加以管理。

TEMP_SIZE:静态参数,默认值为10(MB),表示临时表空间初始大小,即数据库重启后临时表空间的大小。

  • 优化脚本会设置为1024(MB)。设置更好,不设置也问题不大。

TEMP_SPACE_LIMIT:动态参数,表示临时表空间的大小上限,默认值为 0 表示不限制。

  • 优化脚本会设置为102400(MB)。这个值要设置,开发测试环境未设置临时表空间文件已经达到超过500G。
  • 动态设置该参数时,值必须大于 max(TEMP_SIZE,当前大小)。
  • 根据一表通(使用最大8G)和绩价绩效(使用最大22G)两个系统的经验,30G够了。

TEM_PATH:临时表空间路径,默认为数据文件所在目录,通常不用修改。

可以给 TEMP 增加临时文件:
ALTER TABLESPACE TEMP ADD DATAFILE 'TEMP01.DBF' SIZE 1024 AUTOEXTEND ON NEXT 10 MAXSIZE 2048;
但“只允许删除ID最大的文件”,这意味着,默认的临时文件是无法用命令删除的。

收缩 TEMP 表空间的方法:
1、 重启数据库,TEMP 表空间数据文件会重建。
2、 在线收缩临时表空间 SP_TRUNC_TS_FILE。正在使用的临时数据页不会被收缩。

DM8 v8.1.2.133 起,SP_TRUNC_TS_FILE 已被废弃(目前生产的版本已经不再支持该系统过程),官方推荐改用:
ALTER TABLESPACE TEMP RESIZE DATAFILE '/dm8/data/DAMENG/TEMP.DBF' TO 128;

UNDO 表空间

alter system set 'UNDO_RETENTION'= 300 both;

创建表空间

SQL> create tablespace nscfstbs datafile 'nscfs01.dbf' size 1024 autoextend on next 2 maxsize 30720 [CACHE=NORMAL|"KEEP"];
表空间可以使用的数据缓冲区有 NORMAL 和 KEEP。不指定默认就是 NORMAL。对应关系可以在 v$tablespace 视图中查到。
表空间数据文件大小不能给单位,单位是M。数据文件大小不能小于页大小的4096倍:page_size*4096/1024/1024。例如,如果页大小是 8K,最小值将不低于 32M,最大值为页大小的 2 的 31 次方-1(如果页大小是 8K,最大值为 16T-1)。

表空间离线

alter tablespace tbs offline; <--- 除 MAIN 和 HMAIN 外,所有预置的表空间都不能脱机

表空间重命名

alter tablespace tbs RENAME TO dmtbs;

删除表空间

drop tablespace nscfstbs; <--- 注意,与oracle不同的是,DM只能删除空的表空间
文件会一起自动删除。

修改表空间数据文件

alter tablespace tbs add DATAFILE 'TBS02.DBF' size 128 AUTOEXTEND on NEXT 2 MAXSIZE 20480;
alter tablespace tbs DATAFILE 'TBS01.DBF' AUTOEXTEND on NEXT 2 MAXSIZE 20480;
alter tablespace tbs DATAFILE 'TBS01.DBF' AUTOEXTEND off;
alter tablespace tbs RESIZE DATAFILE 'TBS01.DBF' TO 128;

重命令/移动/迁移表空间数据文件:

alter tablespace tbs offline;
alter TABLESPACE tbs RENAME DATAFILE 'TBS01.DBF' TO '/dmdb/data/DM/TBS/TBS01.DBF';
alter TABLESPACE tbs RENAME DATAFILE 'TBS02.DBF' TO '/dmdb/data/DM/TBS/TBS02.DBF';
alter tablespace tbs online;

-- By 许望(RHCA、OCM、VCP)
最后修改:2026 年 07 月 24 日 10 : 58 AM
如果觉得我的文章对你有用,请随意赞赏