测试的DM 数据库实例放在默认的安装目录下,因为磁盘空间有限,准备移动到另一个硬盘上。
迁移的步骤如下:
1.查询当前信息
2.关闭实例,在系统上物理移动整个数据库文件夹
3.修改DM.INI 参数文件中有关路径的参数
4.重建控制文件(修改数据文件路径)
5.重建实例服务
6.起库验证
1 当前环境说明
#查看数据库版本:
[C:/~]$ disql SYSDBA/SYSDBA
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间: 13.994(毫秒)
disql V8.1.0.147-Build(2019.03.27-104581)ENT
SQL> select * from v$version;
行号 BANNER
---------- ---------------------------------------------------------------
1 DM Database Server x64 V8.1.0.147-Build(2019.03.27-104581)ENT
2 DB Version: 0x7000a
已用时间: 1.369(毫秒). 执行号:12030.
SQL>
#查看数据文件位置:
SQL> select path,total_size from v$datafile;
行号 PATH TOTAL_SIZE
---------- ------------------------------ --------------------
1 D:/dmdbms/data/dave/SYSTEM.DBF 2688
2 D:/dmdbms/data/dave/ROLL.DBF 16384
3 D:/dmdbms/data/dave/TEMP.DBF 1210880
4 D:/dmdbms/data/dave/MAIN.DBF 16384
5 D:/dmdbms/data/dave/dave.DBF 5601408
已用时间: 0.387(毫秒). 执行号:12031.
SQL>
查看带路径的参数:
SQL> select PARA_NAME,PARA_VALUE from v$dm_ini where para_name like '%PATH%';
行号 PARA_NAME PARA_VALUE
---------- ----------------- ---------------------------
1 CTL_PATH D:/dmdbms/data/dave/dm.ctl
2 CTL_BAK_PATH D:/dmdbms/data/dave/ctl_bak
3 SYSTEM_PATH D:/dmdbms/data/dave
4 CONFIG_PATH D:/dmdbms/data/dave
5 TEMP_PATH D:/dmdbms/data/dave
6 BAK_PATH D:/dmdbms/data/dave/bak
7 AUD_PATH NULL
8 SSD_FILE_PATH NULL
9 SVR_LOG_FILE_PATH ../log
10 TRACE_PATH D:/dmdbms/data/dave/trace
11 DCR_PATH NULL
11 rows got
已用时间: 2.459(毫秒). 执行号:12036.
SQL>
PS: CMD里执行disql 无法进行粘贴复制,这里我是用xshell连接的。
2 停库移动数据
直接在系统服务里停止:
将数据库从D:/dmdbms/data/dave 移动到G:/DMData。 直接在操作系统上移动过去。
3 修改DM.INI 参数文件中有关路径的参数
修改dm.ini 配置文件中的所有路径。 改成从D:/dmdbms/data/dave 改成G:/DMData/dave。
可以在编辑器中直接替换。
4 重建控制文件
控制文件重建详细说明可以参考我的博客:
DM7 达梦数据库 查看并重建控制文件 操作示例
https://www.cndba.cn/dave/article/3574
生成文本文件:
[C:/~]$ dmctlcvt type=1 src=G:/DMData/dave/dm.ctl dest=G:/cmctl.txt
DMCTLCVT V8.1.0.147-Build(2019.03.27-104581)ENT
convert ctl to txt success!
修改文本文件:G:/cmctl.txt。 将文本中的所有路径从D:/dmdbms/data/dave 改成G:/DMData/dave。
先删除旧的控制文件:
G:/DMData/dave/dm.ctl
再重新生成新的控制文件:
[C:/~]$ dmctlcvt type=2 src=G:/cmctl.txt dest=G:/DMData/dave/dm.ctl
DMCTLCVT V8.1.0.147-Build(2019.03.27-104581)ENT
convert txt to ctl success!
5 重建实例服务
这里直接用DBCA 工具进行。
备注:
操作之前没有删除旧的服务,导致后来服务无法删除,用管理员运行CMD,删除后在注册的服务:
C:/WINDOWS/system32>sc delete DmServicedave
[SC] DeleteService 成功
6 验证
服务注册的时候已经启动将库启动了,查询验证一下:
[C:/~]$ disql SYSDBA/SYSDBA
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间: 11.792(毫秒)
disql V8.1.0.147-Build(2019.03.27-104581)ENT
SQL> select * from v$version;
行号 BANNER
---------- ---------------------------------------------------------------
1 DM Database Server x64 V8.1.0.147-Build(2019.03.27-104581)ENT
2 DB Version: 0x7000a
已用时间: 13.481(毫秒). 执行号:3.
SQL> select path,total_size from v$datafile;
行号 PATH TOTAL_SIZE
---------- ------------------------- --------------------
1 G:/DMData/dave/SYSTEM.DBF 2688
2 G:/DMData/dave/ROLL.DBF 16384
3 G:/DMData/dave/TEMP.DBF 1280
4 G:/DMData/dave/MAIN.DBF 16384
5 G:/DMData/dave/dave.DBF 5601408
已用时间: 0.782(毫秒). 执行号:4.
SQL>
SQL> select PARA_NAME,PARA_VALUE from v$dm_ini where para_name like '%PATH%';
行号 PARA_NAME PARA_VALUE
---------- ----------------- ----------------------
1 CTL_PATH G:/DMData/dave/dm.ctl
2 CTL_BAK_PATH G:/DMData/dave/ctl_bak
3 SYSTEM_PATH G:/DMData/dave
4 CONFIG_PATH G:/DMData/dave
5 TEMP_PATH G:/DMData/dave
6 BAK_PATH G:/DMData/dave/bak
7 AUD_PATH NULL
8 SSD_FILE_PATH NULL
9 SVR_LOG_FILE_PATH ../log
10 TRACE_PATH G:/DMData/dave/trace
11 DCR_PATH NULL
11 rows got
已用时间: 3.219(毫秒). 执行号:5.
SQL>
PS:在Xshell里直接执行disql 是可以在里面上下翻历史命令的,包括使用光标修改SQL语句的内容,很方便。
版权声明:本文为博主原创文章,未经博主允许不得转载。



