参考文档DM8 1-1-190版本《DM8备份恢复手册》
指定数据文件还原的路径
达梦数据库默认会将数据文件还原到目标数据库目录(SYSTEM_PATH),可以通过指定映射文件可以将数据文件还原到指定路径下,也可以在目的库还原修改dm.ini中SYSTEM_PATH指定恢复的数据文件路径。
需要注意的是:
(1)修改dm.ini中SYSTEM_PATH的值只能在全库还原时使用,而且是将所有数据文件都还原到SYSTEM_PATH指定的路径下,无法用于单独的表空间还原。还原恢复步骤与正常还原恢复步骤一样,只需在恢复前修改目的库dm.ini中SYSTEM_PATH的值即可。
(2)指定映射文件的方式可用于库级和表空间的还原,可以指定一个或多个表空间数据文件的还原路径。
本次采用使用映射文件指定数据文件还原路径。
环境说明
OS:Kylin Linux Advanced Server release V10 (SP1) /(Tercel)-x86_64-Build19/20210319
DB_VERSION:DM8 1-1-190-21.04.16-137954-ENT Pack4
备份库:TEST,数据库文件路径:/data/dmdata/TEST
目的库:TEST2,数据库文件路径:/data/dmdata/TEST2
前提条件
1、dmap已正常启动运行;
2、数据库已配置归档模式;
操作步骤
表空间指定映射文件还原与数据库使用指定映射文件还原操作相同。
这里只写数据库使用映射文件指定数据文件路径进行还原恢复。
首先 备份TEST数据库
可以脱机备份也可以联机备份,这里直接使用联机备份:
SQL> backup database full backupset '/data/dmbak1';
操作已执行
已用时间: 925.391(毫秒). 执行号:400.
[dmdba@localhost dmbak1]$ pwd
/data/dmbak1
[dmdba@localhost dmbak1]$ ls
dmbak1_1.bak dmbak1.bak dmbak1.meta
第二步 生成映射文件
使用dmrman dump命令生成备份集的映射文件:
RMAN> dump backupset '/data/dmbak1' database '/data/dmdata/TEST2/dm.ini' mapped file '/home/dmdba/map_file_test2.txt';
生成的映射文件内容如下:
[dmdba@localhost ~]$ cat map_file_test2.txt
/**************************************************************/
/*** Delete the unnecessary modified groups **/
/*** Modify the data_path or mirror_path only in one group **/
/**************************************************************/
/**=============================================================**/
/*[TEST_SYSTEM_FIL_0]*/
fil_id = 0
ts_id = 0
ts_name = SYSTEM
data_path = /data/dmdata/TEST2/SYSTEM.DBF
mirror_path =
/**=============================================================**/
/*[TEST_ROLL_FIL_0]*/
fil_id = 0
ts_id = 1
ts_name = ROLL
data_path = /data/dmdata/TEST2/ROLL.DBF
mirror_path =
/**=============================================================**/
/*[TEST_MAIN_FIL_0]*/
fil_id = 0
ts_id = 4
ts_name = MAIN
data_path = /data/dmdata/TEST2/MAIN.DBF
mirror_path =
/**=============================================================**/
/*[TEST_MAIN_FIL_1]*/
fil_id = 1
ts_id = 4
ts_name = MAIN
data_path = /data/dmdata/TEST2/MAIN02.DBF
mirror_path =
/***************************** END ****************************/
查看映射文件内容很容易理解文件中相关选项的大概含义:
/*[数据库名_表空间名_FIL_数据文件ID]*/
fil_id:表空间对应的数据文件的ID(应该是对应v$datafile中的ID 或者 dba_data_files中的FILE_ID)
ts_id:表空间的ID(应该是对应v$datafile的GROUP_ID 或者 v$tablespace的ID)
ts_name:表空间的名称
data_path:表空间对应的数据文件(应该是对应v$datafile的PATH 或者是dba_data_files中的FILE_NAME)
mirror_path:表空间对应数据文件镜像文件(应该是对应v$datafile的MIRROR_PATH)
第三步 修改映射文件
根据映射文件内容说明,只需要编辑修改映射文件中对应表空间的data_path或者mirror_path修改为指定路径即可,其余不需要修改的表空间内容可以删除也可以不删除。
这里我们修改MAIN表空间的MAIN02.DBF数据文件的路径为:/data/dmdata/datafile/TEST2/MAIN02.DBF
如下:
/*[TEST_MAIN_FIL_1]*/
fil_id = 1
ts_id = 4
ts_name = MAIN
data_path = /data/dmdata/datafile/TEST2/MAIN02.DBF
mirror_path =
第四步 使用映射文件进行还原恢复
关闭TEST2数据库
[dmdba@localhost bin]$ ./DmServiceTEST2 stop
Stopping DmServiceTEST2: [ OK ]
使用DMRMAN进行脱机还原恢复
RMAN> restore database '/data/dmdata/TEST2/dm.ini' from backupset '/data/dmbak1' mapped file '/home/dmdba/map_file_test2.txt';
RMAN> recover database '/data/dmdata/TEST2/dm.ini' from backupset '/data/dmbak1';
RMAN> recover database '/data/dmdata/TEST2/dm.ini' update db_magic;
第五步 启动数据库查看数据文件
启动数据
[dmdba@localhost bin]$ ./DmServiceTEST2 start
Starting DmServiceTEST2: [ OK ]
查看数据文件
至此,备份恢复完成。
结语
达梦数据库使用映射文件的方式与Oracle RMAN中使用set newname相似。
达梦数据库在还原恢复时除了使用映射文件的方式指定数据文件恢复路径,也可以修改dm.ini中SYSTEM_PATH参数指定所有数据文件的路径,但是使用映射文件的方式更友好更灵活方便。
更多资讯请上达梦技术社区了解:https://eco.dameng.com