修改数据文件存放目录的主要原因是磁盘空间规划不足,需要进行数据文件迁移。
安装目录 /home/dmdba/dmdbms/
旧数据文件目录 /home/dmdba/dmdata/
新数据文件目录 /dbdata/dmdata/
操作前强烈建议备份数据库。
备份控制文件,转换控制文件,修改控制文件,转换控制文件。
替换命令: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
将所有的/home/dmdba/dmdata改成/dbdata/dmdata,替换命令如下,
1,$s#/home/dmdba/dmdata#/dbdata/dmdata#g
cp -rf /home/dmdba/dmdata/DAMENG /dbdata/dmdata/
注:将旧的目录复制到新的目录下
略。
注:因为修改了数据文件目录,启动脚本里的dm.ini也要记得修改。
有一种情况,客户可能要求修改数据文件路径后,不需要复制旧的数据文件到新目录下,而是要使用备份进行还原。
新目录下需要一下几个文件(不重新初始化方式),
dm.ctl是转换修改后的控制文件,
dm.ini也是修改数据文件目录后的参数文件,
bak、ctl_bak是空目录;
SYSTEM.DBF是从旧目录下复制过来的。
注:如果没有这些的话,数据库还原时会报错。
如果只需要修改某个表空间的数据文件存放路径的话,可以使用下面方式。
查看表空间对应的数据文件,
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 表空间,则需要首先停库,拷贝所对应数据文件到新的文件目录,备份控制文件,通过修改控制文件里对应数据文件路径,再启动数据库实现。
文章
阅读量
获赞
