達夢數據庫修改數據文件路徑


一、在生產環境中,可能遇到磁盤空間不足的情況,需要將數據文件移動到先掛載的磁盤上。

二、環境描述

操作系統版本:

[root@damengtest ~]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.3 (Maipo)

數據庫版本:

SQL> select * from v$version;

行號 BANNER
---------- -------------------------
1 DM Database Server 64 V8
2 DB Version: 0x7000a

已用時間: 4.521(毫秒). 執行號:4.

三、數據文件遷移步驟

方法一、以數據文件為單位移動 
1、關閉數據庫服務並通過dmctlcvt轉換控制文件為文本文件;
2、拷貝數據文件到新的路徑;
3、修改控制文件中數據文件的路徑到新的路徑並重建控制文件;
4、啟動數據庫服務
注意:如果是用戶表空間的所有數據文件都更換了位置,也需要同時修改dm.ini中的數據文件的路徑

方法二、以表空間為單位進行移動 

1、表空間offline;

2、修改控制文件路徑

3、表空間online

四、數據文件遷移過程

4.1、創建測試環境

創建如下表空間及用戶用於數據文件遷移測試

新建表空間及用戶並授權

SQL> create tablespace "xiao" datafile '/opt/dm8/data/DM/xiao.dbf' size 128 autoextend on CACHE = NORMAL;

操作已執行

已用時間: 15.360(毫秒). 執行號:24.
SQL> create user "XIAO" identified by "Xiao1234!"
 limit failed_login_attemps 3, password_lock_time 1, password_grace_time 10
 default tablespace "xiao"
 default index tablespace "xiao";
操作已執行
已用時間: 7.816(毫秒). 執行號:32.
SQL> grant "DBA","PUBLIC","RESOURCE","SOI","VTI" to "XIAO";
操作已執行
已用時間: 9.575(毫秒). 執行號:33.
SQL>
查看數據文件路徑
SQL> select path from v$datafile;

行號 PATH
---------- -----------------------------
1 /opt/dm8/data/DM/SYSTEM.DBF
2 /opt/dm8/data/DM/ROLL.DBF
3 /opt/dm8/data/DM/TEMP.DBF
4 /opt/dm8/data/DM/MAIN.DBF
5 /opt/dm8/data/DM/BOOKSHOP.DBF
6 /opt/dm8/data/DM/DMHR.DBF
7 /opt/dm8/data/DM/xiao.dbf

7 rows got

已用時間: 0.639(毫秒). 執行號:34.
SQL> exit

方法一:以數據文件為單位移動 

4.2、停庫並轉換控制文件為文本文件

1、停止數據庫實例

[dmdba@damengtest bin]$ ./DmServiceDM stop
Stopping DmServiceDM: [ OK ]

2、轉換控制文件

[dmdba@damengtest bin]$ ./dmctlcvt type=1 SRC=/opt/dm8/data/DM/dm.ctl DEST=/opt/dm8/data/DM/dmctl.txt
DMCTLCVT V8
convert ctl to txt success!
[dmdba@damengtest bin]$

3、拷貝數據文件到新的路徑

[dmdba@damengtest DM]$ mv xiao.dbf ../
[dmdba@damengtest DM]$ cd ..
[dmdba@damengtest data]$ ls
DM dmtest newpath test xiao.dbf

4、修改文本文件中數據文件路徑到新路徑並重建控制文件

將dmctl.txt路徑改成現在的
# file path
fil_path=/opt/dm8/data/xiao.dbf

將dmctl.txt轉化為dm.ctl
[dmdba@damengtest bin]$ ./dmctlcvt type=2 SRC=/opt/dm8/data/DM/dmctl.txt DEST=/opt/dm8/data/DM/dm.ctl
DMCTLCVT V8
convert txt to ctl success!
[dmdba@damengtest bin]$

5、啟動數據庫並進行驗證

[dmdba@damengtest bin]$ ./DmServiceDM start
Starting DmServiceDM: [ OK ]

SQL> select path from v$datafile;

行號 PATH
---------- -----------------------------
1 /opt/dm8/data/DM/SYSTEM.DBF
2 /opt/dm8/data/DM/ROLL.DBF
3 /opt/dm8/data/DM/TEMP.DBF
4 /opt/dm8/data/DM/MAIN.DBF
5 /opt/dm8/data/DM/BOOKSHOP.DBF
6 /opt/dm8/data/DM/DMHR.DBF
7 /opt/dm8/data/xiao.dbf

7 rows got

已用時間: 6.796(毫秒). 執行號:4.
SQL> exit

方法二、以表空間為單位進行移動 

1、表空間offline

SQL> alter tablespace "xiao" offline;
操作已執行
已用時間: 93.181(毫秒). 執行號:42.

2、修改控制文件路徑

SQL> alter tablespace "xiao" rename datafile '/opt/dm8/data/xiao.dbf' to '/opt/dm8/data/DM/xiao.dbf';
操作已執行
已用時間: 387.357(毫秒). 執行號:43.

3、表空間online

SQL> alter tablespace "xiao" online;
操作已執行
已用時間: 2.775(毫秒). 執行號:44.

4、驗證

[dmdba@damengtest DM]$ ls
arch DM01.log dmctl.txt dm_service.prikey ROLL.DBF trace
bak DM02.log DMHR.DBF HMAIN sqllog.ini xiao.dbf
BOOKSHOP.DBF dmarch.ini dm.ini MAIN.DBF SYSTEM.DBF
ctl_bak dm.ctl dminit20201224170230.log rep_conflict.log TEMP.DBF

SQL> select path from v$datafile;

行號 PATH
---------- -----------------------------
1 /opt/dm8/data/DM/SYSTEM.DBF
2 /opt/dm8/data/DM/ROLL.DBF
3 /opt/dm8/data/DM/TEMP.DBF
4 /opt/dm8/data/DM/MAIN.DBF
5 /opt/dm8/data/DM/BOOKSHOP.DBF
6 /opt/dm8/data/DM/DMHR.DBF
7 /opt/dm8/data/DM/xiao.dbf

7 rows got

已用時間: 31.624(毫秒). 執行號:50.

由以上2種方法可將數據文件遷移到新的位置。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM