已索引

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

相关视图

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_SIZE 指定。

临时表空间

DM 的临时表空间是库级别的,不能做到用户级别。

TEMP_SIZE:临时表空间初始大小。
TEM_PATH:临时表空间路径。
TEMP_SPACE_LIMIT:临时表空间的空间限制,0 表示不限制。

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

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)
最后修改:2025 年 06 月 20 日 06 : 57 PM
如果觉得我的文章对你有用,请随意赞赏