达梦数据库是国产数据库中的佼佼者,学好达梦数据库很有益处。
做好磁盘规划是数据库管理员 (DBA)的职责,对于一些系统预估磁盘空间不足的情况,达梦数据库管理员应当有多种方法予以解决。
目录
一、扩充数据文件所在目录空间大小
二、在更大的新位置添加新的表空间文件
三、将数据文件迁移到更大的新位置
2.1备份与恢复
2.2移动表空间文件
2.2.1 数据库服务不关闭——仅用户表空间文件可移动
2.2.2 数据库服务可关闭——其他空间文件的以移动
四、实验操作
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数据库服务启动
五、结论
一、扩充数据文件所在目录空间大小
通过扩充数据文件所在目录空间,可以很快速地解决该问题。
二、在更大的新位置添加新的表空间文件
ALTER TABLESPACE TS1 ADD DATAFILE '/dm/data/DAMENG/TS1_1.dbf'
三、将数据文件迁移到更大的新位置
当数据目录难以扩充,或者扩充带来的风险等代价较高时,可以采用迁移数据文件位置的方法。
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工具修改表空间文件路径的方法。具体哪种方法适用,需要根据实际情况来定,需要注意的是,在各种操作前,做好备份。