注册
DSC镜像/非镜像模式与单机之间的备份恢复
专栏/培训园地/ 文章详情 /

DSC镜像/非镜像模式与单机之间的备份恢复

kk. 2026/11/05 32 0 0
摘要

围绕 DM8 数据库 DSC 集群与单机之间的整库备份还原,梳理并验证四个操作方向:非镜像 DSC 备份还原到单机、单机备份还原到非镜像 DSC、镜像 DSC 备份还原到单机、单机备份还原到镜像 DSC。内容覆盖镜像与非镜像 DSC 场景下的跨架构恢复流程,旨在形成可复用的操作规范,为数据库迁移、灾备恢复和日常运维提供参考。
概述

(1)非镜像 DSC 备份还原到单机
(2)单机备份还原到非镜像DSC
(3)镜像 DSC 备份还原到单机
(4)单机备份还原到镜像DSC

一、非镜像 DSC 备份还原到单机

1.1 不指定归档

库恢复到备份结束时刻。

  1. 源端全备
cd /home/dmdba/dm/dmdbms/bin

./dmrman use_ap=2 dcr_ini=/home/dmdba/dm/dm_config/dmdcr.ini
RMAN> BACKUP DATABASE '/home/dmdba/dm/dm_config/conf0/dm.ini' FULL BACKUPSET '/dbbak/dsc_full_bak';

image.png

未安装 license 时提示使用默认许可,不影响备份。

  1. 备份集传到目标单机
scp -r dsc_full_bak/ dmdba@192.168.40.150:/dbbak/

image.png

传输完成后核对文件数,大文件用 md5sum 两侧比对。

  1. 校验、还原、恢复、更新库魔数
cd /home/dmdba/dm/dmdbms/bin
RMAN> CHECK BACKUPSET '/dbbak/dsc_full_bak';

image.png

RMAN> RESTORE DATABASE '/dmdata/data/DAMENG/dm.ini' FROM BACKUPSET '/dbbak/dsc_full_bak';

image.png

RMAN> RECOVER DATABASE '/dmdata/data/DAMENG/dm.ini' FROM BACKUPSET '/dbbak/dsc_full_bak';

image.png
图 5 恢复成功,提示 DM[603]

DM[603] 表示备份期间未产生日志,命令执行成功。

RMAN> RECOVER DATABASE '/dmdata/data/DAMENG/dm.ini' UPDATE DB_MAGIC;

image.png

  1. 核对数据文件路径
SELECT FILE_NAME FROM DBA_DATA_FILES;

image.png

路径应位于 /dmdata/data/DAMENG/ 下。出现 +DMDATA/DAMENG/ 或其它机器的目录,说明还原时 dm.ini 指向错误。

1.2 指定归档

恢复到最新时刻需额外备份归档日志。

  1. 源端备份归档日志
RMAN> BACKUP ARCHIVELOG ALL DATABASE '/home/dmdba/dm/dm_config/conf0/dm.ini' BACKUPSET '/dbbak/dsc_arch_bak';

image.png

先全备、后备归档。

  1. 全备与归档一起传输
scp -r /dbbak/dsc_full_bak /dbbak/dsc_arch_bak dmdba@192.168.40.150:/dbbak/

image.png

  1. 目标端还原、应用归档、更新库魔数
RMAN> RESTORE DATABASE '/dmdata/data/DAMENG/dm.ini' FROM BACKUPSET '/dbbak/dsc_full_bak';

RMAN> RECOVER DATABASE '/dmdata/data/DAMENG/dm.ini' WITH ARCHIVEDIR '/dmdata/arch';

RMAN> RECOVER DATABASE '/dmdata/data/DAMENG/dm.ini' UPDATE DB_MAGIC;

image.png

WITH ARCHIVEDIR 填归档文件目录 /dmdata/arch,不能填备份集目录。归档未解出时可以先执行:

RMAN> RESTORE ARCHIVE LOG FROM BACKUPSET '/dbbak/dsc_arch_bak' TO ARCHIVEDIR '/dmdata/arch/' OVERWRITE 1;

二、非镜像单机备份还原到 DSC

2.1 不指定归档

  1. 源端全备
RMAN> BACKUP DATABASE '/dmdata/data/DAMENG/dm.ini' FULL BACKUPSET '/dbbak/single_full_bak';

image.png

  1. 备份集传到 DSC 节点
scp -r single_full_bak/ dmdba@<DSC_HOST>:/dbbak/

image.png

  1. 目标端校验、还原、恢复
cd /home/dmdba/dm/dmdbms/bin

./dmrman use_ap=2 DCR_INI=/home/dmdba/dm/dm_config/dmdcr.ini

RMAN> CHECK BACKUPSET '/dbbak/single_full_bak';

image.png

RMAN> RESTORE DATABASE '/home/dmdba/dm/dm_config/conf0/dm.ini' FROM BACKUPSET '/dbbak/single_full_bak';

RMAN> RECOVER DATABASE '/home/dmdba/dm/dm_config/conf0/dm.ini' FROM BACKUPSET '/dbbak/single_full_bak';

image.png

目标端 dm.ini 使用节点的 conf0/dm.ini,dmrman 需带 DCR_INI 才能定位集群配置。

  1. 核对数据文件路径
SELECT FILE_NAME FROM DBA_DATA_FILES;

image.png

数据文件需位于共享存储。

2.2 指定归档

  1. 源端全备与归档备份
RMAN> BACKUP DATABASE '/dmdata/data/DAMENG/dm.ini' FULL BACKUPSET '/dbbak/single_full_bak';

RMAN> BACKUP ARCHIVELOG ALL DATABASE '/dmdata/data/DAMENG/dm.ini' BACKUPSET '/dbbak/dsc_arch_bak';

image.png

  1. 两份一起传输
scp -r /dbbak/single_full_bak /dbbak/dsc_arch_bak dmdba@<DSC_HOST>:/dbbak/

image.png

  1. 目标端还原、应用归档、更新库魔数
RMAN> RESTORE DATABASE '/home/dmdba/dm/dm_config/conf0/dm.ini' FROM BACKUPSET '/dbbak/single_full_bak';

RMAN> RECOVER DATABASE '/home/dmdba/dm/dm_config/conf0/dm.ini' WITH ARCHIVEDIR '/dbbak/dsc_arch_bak';

RMAN> RECOVER DATABASE '/home/dmdba/dm/dm_config/conf0/dm.ini' UPDATE DB_MAGIC;

image.png

DM[601] No matched archivelog file 表示指定目录无匹配当前 LSN 的归档。全备后库内无写入时,不应用日志也可启动。

三、镜像 DSC 备份恢复到单机

3.1 不指定归档

镜像库数据文件位于 ASM,直接还原到单机会按 ASM 路径查找文件,须导出映射文件改写路径。

  1. 源端全备
RMAN> BACKUP DATABASE BACKUPSET '/dbbak/dsc_mirror_full_bak';

image.png

RMAN> BACKUP DATABASE '/home/dmdba/dm/dm_config/conf0/dm.ini' FULL BACKUPSET '/dbbak/dsc_mirror_full_bak';
  1. 导出映射文件
cd /home/dmdba/dm/dmdbms/bin

./dmrman use_ap=2 DCR_INI=/home/dmdba/dm/dm_config/dmdcr.ini

RMAN> DUMP BACKUPSET '/dbbak/dsc_mirror_full_bak' DATABASE '/home/dmdba/dm/dm_config/conf0/dm.ini' MAPPED FILE '/home/dmdba/dm/dm_config/conf0/map_file_01.txt';

image.png

  1. 改写映射文件
vi /home/dmdba/dm/dm_config/conf0/map_file_01.txt

image.png

字段 镜像 DSC → 单机 单机 → 镜像 DSC
data_path /dmdata/data/DAMENG/xxx.dbf +DMDATA/DAMENG/xxx.dbf
mirror_path 清空 按目标 ASM 填写
data_mirror 1 2
data_striping 0 64(按照环境的条带化写)
fil_id、ts_id、ts_name 不变 不变

批量替换 path:

bash
:%s#+DMDATA/DAMENG#/dmdata/data/DAMENG#g

  1. 备份集与映射文件一起传输
scp -r /dbbak/dsc_mirror_full_bak dmdba@192.168.40.150:/dbbak/

scp /home/dmdba/dm/dm_config/conf0/map_file_01.txt dmdba@192.168.40.150:/dbbak/

image.png

映射文件内是目标机路径。仅传备份集时 RESTORE 按 ASM 路径查找文件并失败。

  1. 目标端校验、还原、恢复
RMAN> CHECK BACKUPSET '/dbbak/dsc_mirror_full_bak';

RMAN> RESTORE DATABASE '/dmdata/data/DAMENG/dm.ini' FROM BACKUPSET '/dbbak/dsc_mirror_full_bak' MAPPED FILE '/dbbak/map_file_01.txt';

RMAN> RECOVER DATABASE '/dmdata/data/DAMENG/dm.ini' FROM BACKUPSET '/dbbak/dsc_mirror_full_bak';

RMAN> RECOVER DATABASE '/dmdata/data/DAMENG/dm.ini' UPDATE DB_MAGIC;

image.png
6) 核对数据文件路径

SELECT FILE_NAME FROM DBA_DATA_FILES;

image.png

3.2 指定归档

  1. 源端全备与归档备份
RMAN> BACKUP DATABASE BACKUPSET '/dbbak/dsc_mirror_full_bak';

RMAN> BACKUP ARCHIVELOG ALL DATABASE '/home/dmdba/dm/dm_config/conf0/dm.ini' BACKUPSET '/dbbak/dsc_arch_bak';

image.png

  1. 导出映射文件
RMAN> DUMP BACKUPSET '/dbbak/dsc_mirror_full_bak' DATABASE '/home/dmdba/dm/dm_config/conf0/dm.ini' MAPPED FILE '/home/dmdba/dm/dm_config/conf0/map_file_01.txt';

image.png

改写方法同 3.1 第 3 步。

  1. 传到目标端
scp -r /dbbak/dsc_mirror_full_bak /dbbak/dsc_arch_bak dmdba@192.168.40.150:/dbbak/

scp /home/dmdba/dm/dm_config/conf0/map_file_01.txt dmdba@192.168.40.150:/dbbak/

image.png

  1. 还原、解归档、恢复、更新库魔数
RMAN> RESTORE DATABASE '/dmdata/data/DAMENG/dm.ini' FROM BACKUPSET '/dbbak/dsc_mirror_full_bak' MAPPED FILE '/dbbak/map_file_01.txt';

RMAN> RESTORE ARCHIVE LOG FROM BACKUPSET '/dbbak/dsc_arch_bak' TO ARCHIVEDIR '/dmdata/arch/' OVERWRITE 1;

RMAN> RECOVER DATABASE '/dmdata/data/DAMENG/dm.ini' WITH ARCHIVEDIR '/dmdata/arch';

RMAN> RECOVER DATABASE '/dmdata/data/DAMENG/dm.ini' UPDATE DB_MAGIC;

image.png

WITH ARCHIVEDIR 填备份集目录 /dbbak/dsc_arch_bak 会报 DM[-8374] 归档文件路径下未收集到有效的归档文件,应填解出的归档目录 /dmdata/arch。RECOVER 的 dm.ini 在单机端为 /dmdata/data/DAMENG/dm.ini。

四、镜像单机备份还原到 DSC

4.1 不指定归档

  1. 源端全备
RMAN> BACKUP DATABASE BACKUPSET '/dbbak/single_for_mirror_bak';

image.png

  1. 备份集传到 DSC 节点
scp -r single_for_mirror_bak/ dmdba@<DSC_HOST>:/dbbak/

image.png

  1. 目标端导出映射文件
RMAN> DUMP BACKUPSET '/dbbak/single_for_mirror_bak' DATABASE '/home/dmdba/dm/dm_config/conf0/dm.ini' MAPPED FILE '/home/dmdba/dm/dm_config/conf0/map_file_mirror.txt';

image.png

DUMP 在目标端执行,DATABASE 指向目标库 dm.ini,生成的 data_path 为 +DMDATA/DAMENG/。在源端导出得到本地路径,需再改回 ASM 路径。

  1. 改写映射文件
vi ~/dm_config/conf0/map_file_mirror.txt

image.png

data_mirror 改为 2

单机备份集内 data_mirror 为 1、data_striping 为 0。目标 ASM 按实际配置填写,示例为 2 与 64。填写错误时 RESTORE 建文件失败。

  1. 目标端校验、还原、恢复
RMAN> CHECK BACKUPSET '/dbbak/single_for_mirror_bak';

RMAN> RESTORE DATABASE '/home/dmdba/dm/dm_config/conf0/dm.ini' FROM BACKUPSET '/dbbak/single_for_mirror_bak' MAPPED FILE '/home/dmdba/dm/dm_config/conf0/map_file_mirror.txt';

RMAN> RECOVER DATABASE '/home/dmdba/dm/dm_config/conf0/dm.ini' FROM BACKUPSET '/dbbak/single_for_mirror_bak';

RMAN> RECOVER DATABASE '/home/dmdba/dm/dm_config/conf0/dm.ini' UPDATE DB_MAGIC;

image.png
4.2 指定归档

  1. 源端全备与归档备份
RMAN> BACKUP DATABASE '/dmdata/data/DAMENG/dm.ini' FULL BACKUPSET '/dbbak/single_full_bak';

RMAN> BACKUP ARCHIVELOG ALL DATABASE '/dmdata/data/DAMENG/dm.ini' BACKUPSET '/dbbak/dsc_arch_bak';

image.png

  1. 传到目标端
scp -r /dbbak/single_full_bak /dbbak/dsc_arch_bak dmdba@<DSC_HOST>:/dbbak/

image.png

  1. 导出映射文件
RMAN> DUMP BACKUPSET '/dbbak/single_full_bak' DATABASE '/home/dmdba/dm/dm_config/conf0/dm.ini' MAPPED FILE '/home/dmdba/dm/dm_config/conf0/map_file_mirror.txt';

image.png

  1. 校验、还原、应用归档、更新库魔数
RMAN> CHECK BACKUPSET '/dbbak/single_full_bak';

image.png

RMAN> RESTORE DATABASE '/home/dmdba/dm/dm_config/conf0/dm.ini' FROM BACKUPSET '/dbbak/single_full_bak' MAPPED FILE '/home/dmdba/dm/dm_config/conf0/map_file_mirror.txt';

RMAN> RECOVER DATABASE '/home/dmdba/dm/dm_config/conf0/dm.ini' WITH ARCHIVEDIR '/dbbak/dsc_arch_bak';

RMAN> RECOVER DATABASE '/home/dmdba/dm/dm_config/conf0/dm.ini' UPDATE DB_MAGIC;

image.png

未解归档时 WITH ARCHIVEDIR 直接指向备份集目录,可正常恢复。归档日志更准确的做法是先解到归档目录,再恢复指向该目录。

RESTORE ARCHIVE LOG FROM BACKUPSET '/dbbak/dsc_arch_bak' TO ARCHIVEDIR '+DATA/ARCH0','+DATA/ARCH1' OVERWRITE 1;

然后再

RMAN> RECOVER DATABASE '/home/dmdba/dm/dm_config/conf0/dm.ini' WITH ARCHIVEDIR '+DATA/ARCH0','+DATA/ARCH1' ;

DSC 恢复完整流程:

-- 1) 校验两个备份
RMAN> CHECK BACKUPSET '/dbbak/single_full_bak';
RMAN> CHECK BACKUPSET '/dbbak/dsc_arch_bak';

-- 2) 还原数据库
RMAN> RESTORE DATABASE '/home/dmdba/dm/dm_config/conf0/dm.ini'
FROM BACKUPSET '/dbbak/single_full_bak'
MAPPED FILE '/home/dmdba/dm/dm_config/conf0/map_file_mirror.txt';

-- 3) 还原归档:目标目录还原
RMAN> RESTORE ARCHIVE LOG FROM BACKUPSET '/dbbak/dsc_arch_bak' TO ARCHIVEDIR '+DATA/ARCH0' OVERWRITE 3;
RMAN> RESTORE ARCHIVE LOG FROM BACKUPSET '/dbbak/dsc_arch_bak' TO ARCHIVEDIR '+DATA/ARCH1' OVERWRITE 3;

-- 4) 恢复:这里多目录是合法的
RMAN> RECOVER DATABASE '/home/dmdba/dm/dm_config/conf0/dm.ini'
WITH ARCHIVEDIR '+DATA/ARCH0','+DATA/ARCH1';

-- 5) 更新魔数
RMAN> RECOVER DATABASE '/home/dmdba/dm/dm_config/conf0/dm.ini' UPDATE DB_MAGIC;

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服