暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

达梦数据库数据文件迁移过程

原创 始于脚下 2021-12-31
2139

达梦数据库数据文件迁移必须要求相对应的表空间处于脱机(offline)状态,关于达梦数据库表空间管理,可以参考https://www.modb.pro/db/60757,达梦数据库中system、sysaux、temp、roll等表空间不能进行offline操作,也就是说,system、sysaux、temp、roll表空间下的数据文件,在数据库初始化完成以后,要更改数据文件目录,就是一件比较麻烦的事情了,所以在数据库上线初期,一定要规划好数据文件的存放路径。

但是,可以修改用户自己创建的表空间以及main等表空间的数据文件存放路径,以下我们就以实际过程来演示将表空间dm_dba下的数据文件C:\dmdbms\data\DAMENG\dm_dba01.dbf迁移并重命名为C:\dmdbms\data\dm_dba_move01.db的过程。

1、查看当前数据库表空间及数据文件信息

SQL> select tablespace_name,file_name,status from dba_data_files;

 

行号       TABLESPACE_NAME FILE_NAME                          STATUS

---------- --------------- ---------------------------------- ---------

1          SYSTEM          C:\dmdbms\data\DAMENG\SYSTEM.DBF   AVAILABLE

2          SYSAUX          C:\dmdbms\data\DAMENG\SYSAWR.DBF   AVAILABLE

3          DM_DBA          C:\dmdbms\data\DAMENG\dm_dba01.dbf AVAILABLE

4          DM_TBS          C:\dmdbms\data\DAMENG\dm_tbs01.dbf AVAILABLE

5          DMHR            C:\dmdbms\data\DAMENG\DMHR.DBF     AVAILABLE

6          BOOKSHOP        C:\dmdbms\data\DAMENG\BOOKSHOP.DBF AVAILABLE

7          MAIN            C:\dmdbms\data\DAMENG\MAIN.DBF     AVAILABLE

8          TEMP            C:\dmdbms\data\DAMENG\TEMP.DBF     AVAILABLE

9          ROLL            C:\dmdbms\data\DAMENG\ROLL.DBF     AVAILABLE

 

9 rows got

 

已用时间: 7.185(毫秒). 执行号:39.

SQL> select tablespace_name,status from dba_tablespaces;

 

行号       TABLESPACE_NAME STATUS

---------- --------------- -----------

1          SYSTEM          0

2          ROLL            0

3          TEMP            0

4          MAIN            0

5          BOOKSHOP        0

6          DMHR            0

7          DM_TBS          0

8          DM_DBA          0

9          SYSAUX          0

10         HMAIN           NULL

 

10 rows got

 

已用时间: 0.878(毫秒). 执行号:40.

SQL>


在这里,表空间的状态0为online,1为offline。

2、移动达梦数据库文件位置并确认迁移后信息

SQL> alter tablespace dm_dba rename datafile 'C:\dmdbms\data\DAMENG\dm_dba01.dbf

' to 'C:\dmdbms\data\dm_dba_move01.dbf';

alter tablespace dm_dba rename datafile 'C:\dmdbms\data\DAMENG\dm_dba01.dbf' to

'C:\dmdbms\data\dm_dba_move01.dbf';

第1 行附近出现错误[-3407]:表空间[DM_DBA]处于联机状态.

已用时间: 0.960(毫秒). 执行号:0.

SQL>

SQL> alter tablespace dm_dba offline;

操作已执行

已用时间: 108.964(毫秒). 执行号:41.

SQL> select tablespace_name,status from dba_tablespaces;

 

行号       TABLESPACE_NAME STATUS

---------- --------------- -----------

1          SYSTEM          0

2          ROLL            0

3          TEMP            0

4          MAIN            0

5          BOOKSHOP        0

6          DMHR            0

7          DM_TBS          0

8          DM_DBA          1

9          SYSAUX          0

10         HMAIN           NULL

 

10 rows got

 

已用时间: 3.927(毫秒). 执行号:42.

SQL> alter tablespace dm_dba rename datafile 'C:\dmdbms\data\DAMENG\dm_dba01.dbf

' to 'C:\dmdbms\data\dm_dba_move01.dbf';

操作已执行

已用时间: 99.642(毫秒). 执行号:43.

SQL> alter tablespace dm_dba online;

操作已执行

已用时间: 38.549(毫秒). 执行号:44.

SQL> select tablespace_name,status from dba_tablespaces;

 

行号       TABLESPACE_NAME STATUS

---------- --------------- -----------

1          SYSTEM          0

2          ROLL            0

3          TEMP            0

4          MAIN            0

5          BOOKSHOP        0

6          DMHR            0

7          DM_TBS          0

8          DM_DBA          0

9          SYSAUX          0

10         HMAIN           NULL

 

10 rows got

 

已用时间: 0.688(毫秒). 执行号:45.

SQL> select tablespace_name,file_name,status from dba_data_files;

 

行号       TABLESPACE_NAME FILE_NAME                          STATUS

---------- --------------- ---------------------------------- ---------

1          SYSTEM          C:\dmdbms\data\DAMENG\SYSTEM.DBF   AVAILABLE

2          SYSAUX          C:\dmdbms\data\DAMENG\SYSAWR.DBF   AVAILABLE

3          DM_DBA          C:\dmdbms\data\dm_dba_move01.dbf   AVAILABLE

4          DM_TBS          C:\dmdbms\data\DAMENG\dm_tbs01.dbf AVAILABLE

5          DMHR            C:\dmdbms\data\DAMENG\DMHR.DBF     AVAILABLE

6          BOOKSHOP        C:\dmdbms\data\DAMENG\BOOKSHOP.DBF AVAILABLE

7          MAIN            C:\dmdbms\data\DAMENG\MAIN.DBF     AVAILABLE

8          TEMP            C:\dmdbms\data\DAMENG\TEMP.DBF     AVAILABLE

9          ROLL            C:\dmdbms\data\DAMENG\ROLL.DBF     AVAILABLE

 

9 rows got

 

已用时间: 1.862(毫秒). 执行号:46.

SQL>


可以看到,当表空间在online状态是,是不允许进行数据文件迁移的。而且需要注意的是,在执行“alter tablespace dm_dba rename datafile 'C:\dmdbms\data\DAMENG\dm_dba01.dbf' to 'C:\dmdbms\data\dm_dba_move01.dbf';”语句完成之后,是不需要通过外部方式拷贝或者移动数据文件的,系统会自动将原来的数据文件移动到新的位置并完成重命名。

号外:可能有读者会通过想通过创建删除同属性的表空间或者添加数据文件再删除数据文件的方式,来间接实现迁移system、sysaux、temp、roll等表空间数据文件的位置,这是行不通的,目前达梦数据库语法不支持(版本dm8,也可能是笔者未找到相关资料,希望有办法的小伙伴可以评论区进行交流)。关于通过控制文件进行停机迁移系统表空间数据文件的方式可以参考https://www.modb.pro/db/232386

 

最后修改时间:2022-01-06 15:05:13
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论