概述
本文将介绍在达梦数据库如何创建和管理表空间。
1.创建表空间
1.1表空间个数限制
理论上最多允许有65535个表空间,但用户允许创建的表空间 ID 取值范围为0~32767,
超过 32767 的只允许系统使用,ID 由系统自动分配,ID不能重复使用,即使删除掉已有表空间,也无法重复使用已用ID号,也就是说只要创建32768次表空间后,用户将无法再创建表空间。
1.2 命令行方式创建表空间
用SYSDBA用户登录数据库,创建表空间【LCPTTBS】,具体命令如下:
bash
[dmdba@owumvyu4iuuzaxxp-0004 ~]$ disql SYSDBA/SYSDBA@127.0.0.1:5236
服务器[127.0.0.1:5236]:处于普通打开状态
登录使用时间 : 1.871(ms)
disql V8
SQL> create tablespace "LCPTTBS" datafile '/dm8/data/LCPTTBS01.DBF' size 64 autoextend on next 1 maxsize 1024, '/dm8/data/LCPTTBS02.DBF' size 64 autoextend on next 1 maxsize 1024 CACHE = NORMAL;
操作已执行
已用时间: 198.361(毫秒). 执行号:35084800.
SQL>
通过sql命令查看是否成功创建了表空间【LCPTTBS】:
bash
SQL> select a.name,b.id,b.path from v$tablespace a, v$datafile b where a.id=b.group_id;
行号 NAME ID PATH
---------- -------- ----------- -----------------------------
1 LCPTTBS 1 /dm8/data/LCPTTBS02.DBF
2 TEST 0 /dm8/data/TEST01.DBF
3 TEST 1 /dm8/data/TEST02.DBF
4 BOOKSHOP 0 /dm8/data/DAMENG/BOOKSHOP.DBF
5 SYSTEM 0 /dm8/data/DAMENG/SYSTEM.DBF
6 DMHR 0 /dm8/data/DAMENG/DMHR.DBF
7 TEMP 0 /dm8/data/DAMENG/TEMP.DBF
8 ROLL 0 /dm8/data/DAMENG/ROLL.DBF
9 MAIN 0 /dm8/data/DAMENG/MAIN.DBF
10 LCPTTBS 0 /dm8/data/LCPTTBS01.DBF
10 rows got
已用时间: 1.674(毫秒). 执行号:35084801.
通过上面SQL语句,查看已经成功创建了表空间【LCPTTBS】有两个数据文件【LCPTTBS01.DBF】和【LCPTTBS02.DBF】。
1.3 图形方式创建表空间
使用SYSDBA用户登录数据库,用鼠标点击右键,选择【新建表空间】:
输入表空间名字【EBANKTBS】:
点击【添加】按钮:
设置表空间选项如【文件路径】、【文件大小】等:
查看表空间创建语句和点击【确定】:
查看EBANKTBS表空间创建结果,已经成功创建:
2.管理表空间
2.1 修改表空间名字
修改表空间EBANKTBS名字为DXHTBS:
bash
SQL> ALTER TABLESPACE EBNKTBS RENAME TO DXHTBS;
操作已执行
已用时间: 14.709(毫秒). 执行号:35143700.
SQL>
2.2 修改表空间状态
用户表空间有联机和脱机两种状态。
设置表空间状态为脱机状态时,如果该表空间有未提交的事务,则脱机失败报错。脱机后可对表空间的数据进行备份。
修改DXHTBS表空间状态为脱机:
bash
SQL> ALTER TABLESPACE DXHTBS OFFLINE;
操作已执行
已用时间: 111.804(毫秒). 执行号:35143701.
SQL>
修改DXHTBS表空间状态为联机:
bash
SQL> ALTER TABLESPACE DXHTBS ONLINE;
操作已执行
已用时间: 12.368(毫秒). 执行号:35143702.
SQL>
注意:
系统(SYSTEM)表空间、回滚(ROLL)表空间、重做日志表空间(RLOG)和临时(TEMP)表空间不允许脱机。
2.3 修改表空间数据缓冲区
用户表空间可以切换使用的数据缓冲区。
可以使用的数据缓冲区有 NORMAL 和 KEEP。表空间修改成功后,并不会立即生效,而是需要服务器重启。缓冲池名 KEEP 是达梦的保留关键字,使用时必须加双引号。
将DXHTBS表空间绑定到KEEP缓冲区:
bash
SQL> ALTER TABLESPACE DXHTBS CACHE= "KEEP";
操作已执行
已用时间: 17.763(毫秒). 执行号:35191900.
SQL>
注意:
系统(SYSTEM)表空间、回滚(ROLL)表空间、重做日志表空间(RLOG)和临时(TEMP)表空间不允许修改数据缓冲区。
3.管理数据文件
3.1 添加表空间数据文件
举例,给表空间DXHTBS 添加数据文件:
bash
SQL> ALTER TABLESPACE DXHTBS ADD DATAFILE '/dm8/data/DXHTBS02.DBF' SIZE 64;
操作已执行
已用时间: 19.313(毫秒). 执行号:35191902.
SQL>
一个表空间中,数据文件和镜像文件一起不能超过256个。例如,如果创建表空间的时候已经指定了1个数据文件,那么添加数据文件的时候,最多只能添加255个。
3.2 扩展数据文件大小
将表空间DXHTBS的DXHTBS02.DBF数据文件扩展至128M:
bash
SQL> ALTER TABLESPACE DXHTBS RESIZE DATAFILE '/dm8/data/DXHTBS02.DBF' TO 128;
操作已执行
已用时间: 7.903(毫秒). 执行号:35191903.
SQL>
3.4 修改表空间数据库文件路径
将表空间DXHTBS的DXHTBS02.DBF文件路径进行修改:
bash
SQL> ALTER TABLESPACE DXHTBS OFFLINE;
操作已执行
已用时间: 31.408(毫秒). 执行号:35191904.
SQL> ALTER TABLESPACE DXHTBS RENAME DATAFILE '/dm8/data/DXHTBS02.DBF' TO '/dm8/data/DAMENG/DXHTBS02.DBF';
操作已执行
已用时间: 149.623(毫秒). 执行号:35191905.
SQL> ALTER TABLESPACE DXHTBS ONLINE;
操作已执行
已用时间: 10.537(毫秒). 执行号:35191906.
SQL>
3.5 修改数据文件属性
修改表空间DXHTBS的DXHTBS02.DBF自动扩展最大至256M:
bash
SQL> ALTER TABLESPACE DXHTBS DATAFILE '/dm8/data/DAMENG/DXHTBS02.DBF' AUTOEXTEND ON NEXT 10 MAXSIZE 256;
操作已执行
已用时间: 511.962(毫秒). 执行号:35191910.
SQL>
总结
本文首先介绍了表空间限制和命令行及图形两种方式创建表空间操作例子;
其次介绍了表空间管理操作例子;
最后介绍了表空间管理数据文件操作例子;
关于达梦数据库更多学习内容,欢迎访问达梦社区:
https://eco.dameng.com