注册
DM8 全库物理备份与异机还原操作指南
专栏/培训园地/ 文章详情 /

DM8 全库物理备份与异机还原操作指南

Maxim 2026/08/03 59 0 0
摘要

DM8 全库物理备份与异机还原操作指南

一、实验概述

本实验在两台虚拟机上分别部署 DM8 数据库。源库在归档模式和 OPEN 状态下执行全库联机物理备份,将备份集传输至目标虚拟机;目标库停止后,使用 DMRMAN 生成映射文件,并依次执行 RESTORE、RECOVER 和 UPDATE DB_MAGIC,最后启动目标库并核对测试数据。

1.1 实验环境

备份集目录:/dm/backup/full_bak_01
备份压缩包:/dm/backup/full_bak_01.tar.gz
目标库:dm.ini:/dm/data/EXAMDB/dm.ini
映射文件:/dm/backup/vm1_to_vm2_map.txt
DM 工具目录:/dm/dmdbms/bin
说明:两台虚拟机 IP 不同,因此两边数据库端口都使用 相同的端口号 不冲突;如果在同一台主机上运行两个实例,端口必须不同。

1.2 实验流程

VM1 源库创建测试数据
→ 配置本地归档并执行全库联机物理备份
→ 使用 DMRMAN 校验、查看备份集并完成压缩
→ 通过 scp 将备份压缩包传输到 VM2
→ VM2 解压备份集并正常停止目标库
→ 生成映射文件并执行 RESTORE、RECOVER 和 UPDATE DB_MAGIC
→ 启动 VM2 数据库并核对测试数据

二、实验步骤

2.1 验证两台虚拟机网络互通

在源库 VM1 上执行:ping vm2

在目标 VM2 上执行:ping vm1

2.2 源库 VM1 创建测试数据

在源库 VM1 的 SQL 窗口执行以下语句:

create table T_DM_FULL_PHY_TEST(
  ID int,
  NAME varchar(100),
  CREATE_TIME datetime
);

insert into T_DM_FULL_PHY_TEST values(1, '源库VM1全库物理备份测试数据1', sysdate);
insert into T_DM_FULL_PHY_TEST values(2, '源库VM1全库物理备份测试数据2', sysdate);
insert into T_DM_FULL_PHY_TEST values(3, '源库VM1全库物理备份测试数据3', sysdate);

commit;
select * from T_DM_FULL_PHY_TEST;

image.png

图 3 源库测试数据写入并查询成功

2.3 源库 VM1 检查并开启归档

先检查源库归档状态:

select name, status$, arch_mode from v$database;

image.png

图 4 ARCH_MODE 为 N,表示当前未开启归档

如果 ARCH_MODE 为 N,按以下顺序开启归档:

alter database mount;
alter database archivelog;
alter database add archivelog 'DEST=/dm/arch, TYPE=LOCAL, FILE_SIZE=1024, SPACE_LIMIT=10240';
alter database open;
select name, status$, arch_mode from v$database;

image.png

图 5 ARCH_MODE 为 Y,表示归档已开启

说明:数据库切换到 MOUNT 状态后,先开启归档模式,再添加本地归档配置,最后将数据库切换回 OPEN 状态。

2.4 源库 VM1 创建备份目录

在源库 VM1 终端执行:

su - root
mkdir -p /dm/backup
mkdir -p /dm/arch
chown -R dmdba:dinstall /dm/backup
chown -R dmdba:dinstall /dm/arch
chmod -R 755 /dm/backup
chmod -R 755 /dm/arch

2.5 源库 VM1 执行全库物理备份

在源库 Manager 或 disql 中再次确认数据库处于 OPEN 状态且归档已开启:

select name, status$, arch_mode from v$database;

执行全库物理备份:

backup database full backupset '/dm/backup/full_bak_01';

2.6 校验并压缩备份集

在源库 VM1 启动 DMRMAN,依次执行备份集校验和信息查看命令:

/dm/dmdbms/bin/dmrman
CHECK BACKUPSET '/dm/backup/full_bak_01';
SHOW BACKUPSET '/dm/backup/full_bak_01';
exit;

退出 dmrman 后,在 Linux 终端压缩备份集:

cd /dm/backup
tar -czf full_bak_01.tar.gz full_bak_01
ls -lh /dm/backup/full_bak_01.tar.gz

2.7 将备份包传输到目标 VM2

先在目标 VM2 创建接收目录:

su - root
mkdir -p /dm/backup
chown -R dmdba:dinstall /dm/backup
chmod -R 755 /dm/backup

回到源库 VM1,将压缩包传输到目标 VM2。本实验目标端允许 root 用户通过 SSH 登录,因此使用 root 账号传输:

scp /dm/backup/full_bak_01.tar.gz root@ip地址:/dm/backup/

2.8 目标 VM2 解压备份集并停库

在目标 VM2 上解压备份包并授权:

cd /dm/backup
tar -xzf full_bak_01.tar.gz
ls -lh /dm/backup/full_bak_01
su - root
chown -R dmdba:dinstall /dm/backup
chmod -R 755 /dm/backup

确认目标库进程和配置文件路径:

ps -ef | grep dmserver | grep -v grep

本实验目标库配置文件:/dm/data/EXAMDB/dm.ini
执行全库物理还原前,必须正常停止目标 VM2 数据库。在 Manager 或 disql 中执行:

shutdown normal;

在 Linux 终端确认进程和端口监听均已停止

ps -ef | grep dmserver | grep -v grep
netstat -tunlp | grep 

说明:当 dmserver 进程查询和端口监听查询均无输出时,表示目标库已停止,可以继续执行还原。

2.9 目标 VM2 生成映射文件

进入 dmrman,生成目标库映射文件:

/dm/dmdbms/bin/dmrman
DUMP BACKUPSET '/dm/backup/full_bak_01' DATABASE '/dm/data/EXAMDB/dm.ini' MAPPED FILE '/dm/backup/vm1_to_vm2_map.txt';
exit;

查看映射文件中的 data_path 配置,确认各数据文件路径均指向目标库实际目录:

grep -n "data_path" /dm/backup/vm1_to_vm2_map.txt

本实验目标数据文件目录:/dm/data/EXAMDB

2.10 目标 VM2 执行全库物理还原

确认目标库已停止后,进入 dmrman 并按顺序执行以下三步:

/dm/dmdbms/bin/dmrman
RESTORE DATABASE '/dm/data/EXAMDB/dm.ini' FROM BACKUPSET '/dm/backup/full_bak_01' MAPPED FILE '/dm/backup/vm1_to_vm2_map.txt';
RECOVER DATABASE '/dm/data/EXAMDB/dm.ini' FROM BACKUPSET '/dm/backup/full_bak_01';
RECOVER DATABASE '/dm/data/EXAMDB/dm.ini' UPDATE DB_MAGIC;
exit;

2.11 启动目标 VM2 数据库并验证数据

在目标 VM2 上启动数据库:

su - dmdba
nohup /dm/dmdbms/bin/dmserver path=/dm/data/EXAMDB/dm.ini -noconsole > /dm/data/EXAMDB/dmserver_start.log 2>&1 &
tail -f /dm/data/EXAMDB/dmserver_start.log

物理还原后,使用该口令连接目标库:

/dm/dmdbms/bin/disql SYSDBA/密码@本机ip:端口号

查询测试表,验证 VM1 的数据已经恢复到 VM2:

select * from T_DM_FULL_PHY_TEST;

image.png

图 13 目标 VM2 查询到源库测试数据

三、实验结果

  • 源库 VM1 已成功生成全库物理备份集 /dm/backup/full_bak_01。
  • 使用 DMRMAN 对备份集执行了 CHECK BACKUPSET 校验,并使用 SHOW BACKUPSET 查看备份集信息。
  • 备份压缩包已通过 scp 成功传输到目标 VM2,并完成解压。
  • 目标 VM2 在停库后成功完成 RESTORE DATABASE / RECOVER DATABASE / UPDATE DB_MAGIC。
  • 目标 VM2 启动后能够查询到源库 VM1 中创建的 T_DM_FULL_PHY_TEST 表及 3 条测试数据。

四、实验注意事项

  1. 本实验使用库级物理备份集完成整库还原。按模式迁移属于逻辑导出导入场景,应使用 dexp/dimp 的 SCHEMAS 参数。
  2. 库级 RESTORE 属于脱机还原,执行前必须停止目标库。
  3. 还原的是源库全库数据,因此目标库中的数据库用户及口令信息来自源库备份时的数据字典。
  4. RESTORE 完成后,必须继续执行 RECOVER 和 UPDATE DB_MAGIC,数据库才能恢复到可正常启动的状态。
  5. 使用映射文件还原时,应逐项核对 data_path,确保其指向目标 VM2 上的实际数据文件路径;本实验目标目录为 /dm/data/EXAMDB。
评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服