已索引
既可以使用命令行进行管理,也可以使用管理器来管理。
相关视图
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;