- 背景
在数据库使用的过程中,如果需要对磁盘空间的使用重新规划,就难免涉及到“迁移”的场景。或是将原有的数据库直接迁移到新的数据库,或是更改数据文件路径、再或者直接更改数据库实例。
本文就更改数据库实例做一个实战总结。
- 案例需求
原本的数据库服务放在/dm8目录下,实例放在/DB/data下
现在需要将实例的路径更改为/dm8/data/下
- 操作步骤
- 停止数据库服务
- ./DmServicePROD stop
- 将原有的数据库实例复制到新的路径下
-
cp -r /DB/data/DAMENG/ /dm8/data/
- 修改dm.ini文件,将dm.ini文件中原有的/DB/data/DAMENG/路径都更改为/dm8/data/DAMENG路径
-
Vim /dm8/data/DAMENG/dm.ini
- 到bin目录下用dmctlcvt将控制文件更改为txt可读文
-
./dmctlcvt help
-
./dmctlcvt TYPE=1 SRC=/dm8/data/DAMENG/dm.ctl DEST=/dm8/data/DAMENG/dm.txt
- 修改dm.txt文件,将文件中/DB/data/DAMENG/路径都更改为/dm8/data/DAMENG路径
-
vim dm.txt
- 将dm.txt可读文件更改回dm.ctl
-
./dmctlcvt TYPE=2 SRC=/dm8/data/DAMENG/dm.txt DEST=/dm8/data/DAMENG/dm.ctl
- 更改dmserver服务文件中的ini路径
-
vim DmServicePROD
- 启动服务
-
./DmServicePROD start
-
- 控制文件说明
-
每个 DM 数据库都有一个名为 dm.ctl 的控制文件。控制文件是一个二进制文件,它记录了数据库必要的初始信息,其中主要包含以下内容:
- 数据库名称;
- 数据库服务器模式;
- OGUID 唯一标识;
- 数据库服务器版本;
- 数据文件版本;
- 数据库的启动次数;
- 数据库最近一次启动时间;
- 表空间信息,包括表空间名,表空间物理文件路径等,记录了所有数据库中使用的表空间,数组的方式保存起来;
- 控制文件校验码,校验码由数据库服务器在每次修改控制文件后计算生成,保证控制文件合法性,防止文件损坏及手工修改。