一、表空间类型
HMAN:HUGE表(列存储表)的默认表空间
- MAIN:用户默认表空间,创建用户时,没有指定表空间,则使用MAIN表空间
- ROLL:回滚表空间,存放undo信息。INSERT、UPDATE、DELETE都会产生undo信息
- SYSTEM:系统表空间,存放的是数据字典信息,包含表定义、视图定义、用户权限等
- TEMP:临时表空间,用于存放临时表数据、索引、大量数据排序等产生的数据
二、操作表空间
命令行方式
查看表空间
select * from dba_tablespaces;
查看表空间存放地址
select * from dba_data_files;
创建表空间
创建规则:
create tablespace 表空间名 datafile '数据文件路径' SIZE 数据文件大小(单位为mb);
创建一个名叫TEST的表空间,文件大小为50mb,存储C:\dmdbms\data\TEST\TEST.DBF
create tablespace TEST datafile 'C:\dmdbms\data\TEST\TEST.DBF' SIZE 50;
修改表空间大小
创建规则:
alter tablespace 表空间名 resize datafile '数据文件路径' to 数据文件大小(单位为mb);
修改TEST表空间数据文件大小为60mb(初始大小为32MB)
alter tablespace TEST resize datafile 'C:\dmdbms\data\TEST\TEST.DBF' to 60;
修改表空间开启自动增长,增长步长,最大表空间
规则如下:
alter tablespace 表空间名 datafile '数据文件路径' autoextend on next 增长步长 maxsize 文件最大值
修改表空间开启自动增长,增长步长为3mb,最大表空间为70mb
alter tablespace TEST datafile 'C:\dmdbms\data\TEST\TEST.DBF' autoextend on next 3 maxsize 70;
增加表空间下的数据文件
规则如下:
alter tablespace 表空间名 add datafile '数据文件路径' size 数据文件大小(单位为mb);
在TEST表空间下添加 TEST\TEST_1.DBF 数据文件大小为60mb
alter tablespace TEST add datafile 'C:\dmdbms\data\TEST\TEST_1.DBF' size 60;
修改表空间名称
修改规则:
alter tablespace 修改前表空间名 rename to 修改后表空间名;
将TEST表空间名称修改为TEST1
alter tablespace TEST rename to TEST1;
删除表空间
用户自定义的表空间可以删除和脱机,系统定义的表空间不能脱机和删除
删除后表空间下的数据文件也会级联删除
删除规则:
drop tablesapce 表空间名;
删除TEST1表空间
drop tablespace "TEST1";
三、 表空间迁移
迁移时注意:新的表空间路径,必须是由安装数据库的用户进行创建,或者把这个文件夹授予数据库安装用户读写权限,否则会因权限问题报数据库文件路径错误
规则如下:
1.先将表空间离线:
alter tablespace 表空间名 offline;
2.重命名数据文件名,并迁移:
alter tablespace 表空间名 rename datafile '重命名的数据文件名' to '路径';
3.将表空间上线:
alter tablespace 表空间名 online;
创建USER1和USER2这两个表空间,将USER1表空间迁移到USER2的表空间中
alter tablespace USER1 offline;
alter tablespace USER1 rename datafile 'USER2.DBF' to 'C:\dmdbms\data\TEST\USER2.DBF';
alter tablespace USER2 online;
务必注意,后面的文件夹路径必须是由安装数据库的 用户 创建的,否则会因权限问题报数据库文件路径错误
四、 temp表空间
查询temp表空间参数,达梦数据库启动的时候会根据这几个参数来创建或重建temp表空间
打开DIsql:
select name,value,type from v$parameter where name like 'TEMP%';
- TEMP_PATH:temp表空间的路径
- TEMP_SIZE:temp表空间的初始值,单位为MB
- TEMP_SPACE_LIMIT:temp表空间的空间限制,0表示不限制
修改TEMP表空间大小,重启后依旧生效
lter system set 'TEMP_SIZE'=64 spfile;
---
# 总结
更多技术文档请参考达梦官网技术文档:
[达梦技术文档](https://eco.dameng.com/document/dm/zh-cn/start/dm-create-tablespace.html)