达梦数据库是国产数据库中的佼佼者,学好达梦数据库很有益处。
做好磁盘规划是数据库管理员 (DBA)的职责,对于一些系统预估磁盘空间不足的情况,达梦数据库管理员应当有多种方法予以解决。
目录
一、扩充数据文件所在目录空间大小
通过扩充数据文件所在目录空间,可以很快速地解决该问题。
二、在更大的新位置添加新的表空间文件
ALTER TABLESPACE TS1 ADD DATAFILE '/dm/data/DAMENG/TS1_1.dbf' SIZE 128;
三、将数据文件迁移到更大的新位置
当数据目录难以扩充,或者扩充带来的风险等代价较高时,可以采用迁移数据文件位置的方法。
2.1备份与恢复
数据库备份与恢复的方式,过程较为简单。然而,当数据量较大时,往往耗时较多,需要较长的停机窗口。
2.2移动表空间文件
2.2.1 数据库服务不关闭——仅用户表空间文件可移动
修改用户表空间中已存在数据文件的路径,待修改的数据文件所在表空间必须处于 脱机状态并且只可修改用户创建的表空间中文件的路径。
ALTER TABLESPACE TS1 OFFLINE;
ALTER TABLESPACE TS1 RENAME DATAFILE '/dm/data/DAMENG/TS1.dbf' TO '/dm/newdata/DAMENG/TS1.dbf';
ALTER TABLESPACE TS1 ONLINE;
2.2.2 数据库服务可关闭——其他空间文件的以移动
表空间信息,包括表空间名,表空间物理文件路径等,记录了所有数据库中使用的 表空间,数组的方式保存起来。这些信息存在于控制文件dm.ctl 中。通过修改dm.ctl中的文件路径,我们可以更改文件的路径。
控制文件是一个二进制文件,无法直接修改,需使用达梦自带的bin目录下的dmctlcvt工具:
共6个步骤
- 数据库服务停止
- 将dm.ctl转为dmctl.txt
- 修改dmctl.txt中表空间文件到新路径
- 复制(建议)或移动表空间文件到新路径
- 将dmctl.txt转为dm.ctl
- 数据库服务启动
四、实验操作
下面,将以KylinV10SP2+达梦8.4.2.18环境为例进行说明。
首先,检查当前文件,
2.2.2.1数据库服务停止
2.2.2.2 将dm.ctl转为dmctl.txt
2.2.2.3 修改dmctl.txt中的表空间文件路径
2.2.2.4 将文件移动到新路径
2.2.2.5 将dmctl.txt转为dm.ctl
2.2.2.6数据库服务启动
至此,已经成功完成主要数据文件从data目录到newdata目录的迁移,检查表空间文件结果如下:
五、结论
本文首先列举了三种方法,一是挂载新磁盘,扩充当前目录大小;二是在新的目录增加新的表空间文件;三是移动数据文件位置,这一种方法由分为备份恢复、修改表空间文件两种方式。最后通过实验验证了dmctlcvt工具修改表空间文件路径的方法。具体哪种方法适用,需要根据实际情况来定,需要注意的是,在各种操作前,做好备份。