一 前言
在实际生产环境中,可能存在数据磁盘空间不足的情况,一般情况下,我们会通过增加新的磁盘来解决,当新磁盘增加完毕后,需要将原数据文件迁移一部分到新磁盘空间,以释放原数据磁盘的空间,本文主要阐述此种情况下数据文件的移动。
 迁移对象:dm82主节点。
 把 /dm/dmdata/DAMENG/ 目录迁移到 /dm/dmdbms/DAMENG/
二 环境描述
环境背景:dm81节点与dm82节点是实时主备集群,dm83节点是异步备机
 操作系统版本
 [dmdba@dm82 ~]$ cat /etc/redhat-release
 Red Hat Enterprise Linux Server release 7.6 (Maipo)
数据库版本:
 select * from version;
 行号 BANNER
1 DM Database Server 64 V8
 2 DB Version: 0x7000c
数据文件路径:
 select path from v$datafile;
 行号 PATH
1 /dm/dmdata/DAMENG/SYSTEM.DBF
 2 /dm/dmdata/DAMENG/ROLL.DBF
 3 /dm/dmdata/DAMENG/TEMP.DBF
 4 /dm/dmdata/DAMENG/MAIN.DBF
 5 /dm/dmdata/DAMENG/ts_test01.dbf
 6 /dm/dmdata/DAMENG/ts_idx01.dbf
三 数据文件迁移步骤
1、 关闭数据库服务并通过dmctlcvt转换控制文件为文本文件;
 2、 拷贝数据文件到新的路径;
 3、 修改控制文件中数据文件的路径到新的路径并重建控制文件;
 4、 修改dm.ini中的数据文件的路径;
 5、 修改dmwatcher.ini;
 6、 修改/home/dmdba/dmdbms/bin/DmServiceDMSERVER1;
 7、 修改/home/dmdba/dmdbms/bin/DmWatcherServiceDMSERVER1;
 8、 打开控制台备份恢复
 9、 启动dmserver
 10、启动dmwatche
 11、启动dmmonitor
 12、测试
四 数据迁移过程
把/dm/dmdata/DAMENG/*文件迁移到/dm/dmdbms/DAMENG/
 1、关闭数据库服务并通过dmctlcvt转换控制文件为文本文件
 1、 关闭实时主备集群:
 [dmdba@dm84 ~]$ DmMonitorServiceDMSERVER4 stop
 [dmdba@dm81 ~]$ DmWatcherServiceDMSERVER1 stop
 [dmdba@dm82 ~]$ DmWatcherServiceDMSERVER2 stop
 [dmdba@dm83~]$ DmWatcherServiceDMSERVER3 stop
[dmdba@dm81 ~]$ DmServiceDMSERVER1 stop
 [dmdba@dm82 ~]$ DmServiceDMSERVER2 stop
 [dmdba@dm83 ~]$ DmServiceDMSERVER32 stop
2、 转换控制文件
 dmctlcvt type=1 src=/dm/dmdata/DAMENG/dm.ctl dest=/tmp/dmctl.txt
 type=1:转换控制文件为文本文件(源文件路径中控制文件名称必须是dm.ctl或dmmpp.ctl或dss.ctl)
 type=2:转换文本文件为控制文件(目标文件路径中控制文件名称必须是dm.ctl或dmmpp.ctl或dss.ctl)
2、拷贝数据文件到新的路径
 cp –r /dm/dmdata/DAMENG/* /dm/dmdbms/DAMENG/
3、修改控制文件中数据文件的路径到新的路径并重建控制文件
 1 修改控制文件中数据文件的路径到新的路径
 把fil_path=xxx的路径全部修改为新的数据路径
 vim /tmp/dmctl.txt
 fil_path=/dm/dmdbms/DAMENG/SYSTEM.DBF
 fil_path=/dm/dmdbms/DAMENG/ROLL.DBF
 fil_path=/dm/dmdbms/DAMENG/DAMENG01.log
 fil_path=/dm/dmdbms/DAMENG/DAMENG02.log
 fil_path=/dm/dmdbms/DAMENG/MAIN.DBF
 fil_path=/dm/dmdbms/DAMENG/ts_test01.dbf
 fil_path=/dm/dmdbms/DAMENG/ts_idx01.dbf
把htspath=/dm/dmdata/DAMENG/HMAIN的路径修改为新的数据文件路径
 htspath=/dm/dmdbms/DAMENG/HMAIN
2 重建控制文件
 cd /dm/dmdbms/DAMENG/
 mv dm.ctl dm.ctl_$(date +%F).bak
 dmctlcvt type=2 src=/tmp/dmctl.txt dest=/dm/dmdbms/DAMENG/dm.ctl
4、修改dm.ini中的数据文件的路径
 vim /dm/dmdbms/DAMENG/dm.ini
 :%s*/dm/dmdata/DAMENG*/dm/dmdbms/DAMENG*g --把dm.ini配置文件中/dm/dmdata/DAMENG/的路径改为/dm/dmdbms/DAMENG/。如下所示:
 CTL_PATH = /dm/dmdbms/DAMENG/dm.ctl
 CTL_BAK_PATH = /dm/dmdbms/DAMENG/ctl_bak
 SYSTEM_PATH = /dm/dmdbms/DAMENG
 CONFIG_PATH = /dm/dmdbms/DAMENG
 TEMP_PATH = /dm/dmdbms/DAMENG
 BAK_PATH = /dm/dmdbms/DAMENG/bak
5、修改dmwatcher.ini
 不然再启动dmserver会启动迁移之前的数据库实例
 vim /dm/dmdbms/DAMENG/dmwatcher.ini
 INST_INI = /dm/dmdbms/DAMENG/dm.ini #dm.ini配置文件路径
 –INST_INI = /dm/dmdata/DAMENG/dm.ini #dm.ini配置文件路径(修改之前)
6、修改/home/dmdba/dmdbms/bin/DmServiceDMSERVER2
 不然再启动dmserver会启动迁移之前的数据库实例
 vim /home/dmdba/dmdbms/bin/DmServiceDMSERVER2
 INI_PATH="/dm/dmdbms/DAMENG/dm.ini"
 – INI_PATH="/dm/dmdata/DAMENG/dm.ini"(修改之前)
7、修改DmWatcherServiceDMSERVER2
 不然再启动dmwatcher会启动迁移之前的守护进程
 vim /home/dmdba/dmdbms/bin/DmWatcherServiceDMSERVER2
 INI_PATH="/dm/dmdbms/DAMENG/dmwatcher.ini"
 – INI_PATH="/dm/dmdata/DAMENG/dmwatcher.ini"(修改之前)
8、打开控制台备份恢复
 cd /home/dmdba/dmdbms/tool
 [dmdba@dm82 tool]$ ./console
 1 备份
 备份还原新建备份指定旧的INI文件路径指定备份名及备份集目录指定备份类型:完全备份确定
 
2 还原
 勾选库还原指定备份集目录勾选库目录指定新数据文件路径勾选还原时覆盖已存在文件
 
3 恢复
 勾选库恢复指定新的INI文件路径指定备份集目录介质类型要选磁盘
 
4 更新DB_Magic
 指定新的INI文件路径
 
9、启动dmserver
 [dmdba@dm81 ~]$ DmServiceDMSERVER1 start
 [dmdba@dm82 ~]$ DmServiceDMSERVER2 start
 [dmdba@dm83 ~]$ DmServiceDMSERVER3 start
10、启动dmwatcher
 [dmdba@dm81 ~]$ DmWatcherServiceDMSERVER1 start
 [dmdba@dm82 ~]$ DmWatcherServiceDMSERVER2 start
 [dmdba@dm83 ~]$ DmWatcherServiceDMSERVER3 start
[dmdba@dm82 dmback]$ ps -ef|grep dmserver
 dmdba 22592 1 0 21:09 pts/0 00:00:00 /home/dmdba/dmdbms/bin/dmserver /dm/dmdbms/DAMENG/dm.ini -noconsole
 dmdba 22778 11184 0 21:13 pts/0 00:00:00 grep --color=auto dmserver
 [dmdba@dm82 dmback]$ ps -ef|grep dmwatcher
 dmdba 22725 1 0 21:11 pts/0 00:00:00 /home/dmdba/dmdbms/bin/dmwatcher /dm/dmdbms/DAMENG/dmwatcher.ini
 dmdba 22780 11184 0 21:13 pts/0 00:00:00 grep --color=auto dmwatcher
11、启动dmmonitor
 [dmdba@dm84 ~]$ /home/dmdba/dmdbms/bin/dmmonitor /dm/dmdata/DAMENG/dmmonitor.ini
 show
 show global info
12、测试
 主库删除数据测试
 
实时备库查询
 
异步备库查询
 
异步备库过2分钟再查询,因为异步备库要2分钟之后才同步
 13、备注:
 迁移完成后集群检查:
 dmmonitor /dm/dmdata/DAMENG/dmmonitor.ini
 如果主备集群的FLSN号一致,则说明主备集群正常
zyj环境144版本后修改脚本数据文件位置需要修改dm_services.ini










