注册
DM8之修改数据文件存放目录
技术分享/ 文章详情 /

DM8之修改数据文件存放目录

www_heql 2026/04/30 729 0 0

1 前言

修改数据文件存放目录的主要原因是磁盘空间规划不足,需要进行数据文件迁移。

2 需求描述

安装目录 /home/dmdba/dmdbms/
旧数据文件目录 /home/dmdba/dmdata/
新数据文件目录 /dbdata/dmdata/

3 步骤

操作前强烈建议备份数据库。

3.1 查看当前磁盘大小

image.png

3.2 查看新增存储

image.png

3.3 创建目录修改权限

image.png

3.4 修改控制文件

备份控制文件,转换控制文件,修改控制文件,转换控制文件。
替换命令:1,$s#/home/dmdba/dmdata#/dbdata/dmdata#g
./dmctlcvt TYPE=1 SRC=/data/dmdb/dmdata/DAMENG/dm.ctl DEST=/data/dmdb/dmdata/DAMENG/dmctl.txt
./dmctlcvt TYPE=2 SRC=/data/dmdb/dmdata/DAMENG/dmctl.txt DEST=/data/dmdb/dmdata/DAMENG/dm.ctl
image.png

3.5 修改参数文件

image.png
将所有的/home/dmdba/dmdata改成/dbdata/dmdata,替换命令如下,
1,$s#/home/dmdba/dmdata#/dbdata/dmdata#g

3.6 复制数据库文件目录

cp -rf /home/dmdba/dmdata/DAMENG /dbdata/dmdata/
注:将旧的目录复制到新的目录下

3.7 启动数据库

略。
注:因为修改了数据文件目录,启动脚本里的dm.ini也要记得修改。

4 其他

4.1 改路径后备份还原方式

有一种情况,客户可能要求修改数据文件路径后,不需要复制旧的数据文件到新目录下,而是要使用备份进行还原。
新目录下需要一下几个文件(不重新初始化方式),
dm.ctl是转换修改后的控制文件,
dm.ini也是修改数据文件目录后的参数文件,
bak、ctl_bak是空目录;
SYSTEM.DBF是从旧目录下复制过来的。
注:如果没有这些的话,数据库还原时会报错。

4.2 不停机修改表空间的数据文件路径

如果只需要修改某个表空间的数据文件存放路径的话,可以使用下面方式。
查看表空间对应的数据文件,

SQL> SELECT TS.NAME, DF.PATH FROM V$TABLESPACE AS TS, V$DATAFILE AS DF WHERE TS.ID = DF.GROUP_ID;

修改 TBS 表空间状态为脱机,

SQL> ALTER TABLESPACE TBS OFFLINE;

修改表空间所对应的一个数据文件的路径,

SQL> ALTER TABLESPACE TBS RENAME DATAFILE ‘/dm8/data1/DAMENG/TB01.DBF’ TO ‘/dm8/data1/DAMENG1/TB01.DBF’;

注:无需提前把数据文件移动到相关目录,它会自己move过去。

修改 TBS 表空间状态为联机,

SQL> ALTER TABLESPACE TBS ONLINE;

至此表空间移动完毕。
注:如果修改 system、roll 表空间,则需要首先停库,拷贝所对应数据文件到新的文件目录,备份控制文件,通过修改控制文件里对应数据文件路径,再启动数据库实现。

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服