注册
dexp/dimp 逻辑备份与还原实操
专栏/技术分享/ 文章详情 /

dexp/dimp 逻辑备份与还原实操

好运连连 2026/10/23 69 0 0
摘要

DM8 学习笔记:dexp/dimp 逻辑备份与还原实操

一、前言

在学习 DM8 数据库备份与还原的过程中,除了使用 dmrman 、disql工具进行物理备份与还原,还可以使用 dexp 和 dimp 实现数据库对象的逻辑导出与导入。

dexp 是逻辑导出工具,dimp 是逻辑导入工具。两者配合使用,可以根据实际需求导出数据库中的对象和数据,并在需要时重新导入。

与物理备份相比,逻辑备份更侧重于数据库对象及数据本身,支持整库、用户、模式和指定表等不同范围,适用于逻辑备份、数据迁移以及指定对象恢复等场景。

二、dexp/dimp 基本理解

2.1 dexp:逻辑导出

dexp 用于将数据库中的对象及数据以二进制格式导出到逻辑备份文件中。根据实际需求,可以选择不同的导出范围。

2.2 dimp:逻辑导入

dimp 用于读取 dexp 生成的逻辑备份文件,并将其中的对象和数据导入目标数据库。

需要注意,导入前需要关注目标数据库的用户、权限、对象状态以及源端与目标端的兼容性。

2.3 与物理备份的区别

对比项 dexp/dimp dmrman 等物理备份工具
操作对象 数据库逻辑对象及数据 数据库物理文件、数据页等
主要用途 逻辑备份、对象迁移、数据导入导出 数据库物理备份与恢复
操作方式 逻辑导出与逻辑导入 物理备份、还原与恢复
典型文件 .dmp 等逻辑导出文件 物理备份集

两者适用于不同的场景,实际使用时应根据现场情况选择合适的方式。

三、实验环境与准备

项目 配置
数据库 DM8
操作系统 Linux
数据库端口 5236
DM8 安装目录 /home/dmdba/dmdbms
备份目录 /dmdata/dmbak
测试对象 SYSDBA.WZL_TEST

确认 dexp 和 dimp 工具存在:

ls -l /home/dmdba/dmdbms/bin/dexp
ls -l /home/dmdba/dmdbms/bin/dimp

先准备一张测试表及少量数据。

CREATE TABLE SYSDBA.WZL_TEST (
    ID INT PRIMARY KEY,
    NAME VARCHAR(50),
    CREATE_TIME DATE
);

INSERT INTO SYSDBA.WZL_TEST
VALUES (1, '测试数据1', SYSDATE);

INSERT INTO SYSDBA.WZL_TEST
VALUES (2, '测试数据2', SYSDATE);

INSERT INTO SYSDBA.WZL_TEST
VALUES (3, '测试数据3', SYSDATE);

COMMIT;

SELECT * FROM SYSDBA.WZL_TEST ORDER BY ID;

确认测试表及数据正常后,开始进行逻辑备份与还原。

四、指定表的逻辑备份与还原

4.1 使用 dexp 导出指定表

本次只导出测试表,使用 TABLES 参数指定导出对象。

dexp USERID=SYSDBA/Wei_1234@192.168.234.111:5236 FILE=WZL_TEST.dmp LOG=WZL_TEST_exp.log DIRECTORY=/dmdata/dmbak TABLES=SYSDBA.WZL_TEST

成功导出打印如下
image.png

参数说明:

  • USERID:指定数据库连接信息。
  • FILE:指定导出文件名称。
  • LOG:指定导出日志文件名称。
  • DIRECTORY:指定文件目录。
  • TABLES:指定需要导出的表。

导出完成后,检查生成的文件及日志:

ls -lh /dmdata/dmbak
cat /dmdata/dmbak/WZL_TEST_exp.log

确认日志中没有影响导出成功的错误,并检查目标表是否已被导出。

4.2 使用 dimp 导入测试表

为了验证导出文件是否能够用于恢复,本次先删除测试表,再通过 dimp 重新导入。

DROP TABLE SYSDBA.WZL_TEST;

执行导入:

dimp USERID=SYSDBA/Wei_739867901@192.168.234.111:5236 FILE=WZL_TEST.dmp LOG=WZL_TEST_imp.log DIRECTORY=/dmdata/dmbak TABLES=SYSDBA.WZL_TEST

成功导入打印如下

image.png
检查导入日志:

cat /dmdata/dmbak/WZL_TEST_imp.log

image.png

4.3 验证还原结果

通过 disql 查询测试表:

SELECT COUNT(*) FROM SYSDBA.WZL_TEST;

SELECT * FROM SYSDBA.WZL_TEST ORDER BY ID;

image.png
对比导出前记录的数据,确认表结构和数据恢复成功。

五、整库逻辑备份与还原

与指定表导出不同,整库逻辑备份使用 FULL=Y 参数。该方式用于导出数据库范围内的逻辑对象,适用于整库逻辑迁移等场景。

为了避免影响现有测试环境,新建一个独立的实例进行导入验证。

5.1 使用 dexp 导出整库

执行整库逻辑导出:

dexp USERID=SYSDBA/Wei_739867901@192.168.234.111:5236 FILE=FULL_DB.dmp LOG=FULL_DB_exp.log DIRECTORY=/dmdata/dmbak FULL=Y

与指定表导出相比,本次不再使用 TABLES 参数,而是通过 FULL=Y 指定整库导出范围。

导出完成后,检查备份文件和日志:

ls -lh /dmdata/dmbak
cat /dmdata/dmbak/FULL_DB_exp.log

完整输出
image.png

文件大小
image.png

确认导出任务正常结束,并记录导出文件的实际大小、日志结果及耗时。

5.2 准备目标数据库

整库逻辑导入前,需要明确目标环境。

本次建议使用独立的目标 DM8 实例,避免直接向正在使用的源数据库执行整库导入。

准备时需要关注:

  • 目标数据库已完成初始化并能够正常连接。
  • 源端和目标端的 DM8 版本及兼容性符合要求。
  • 目标端具备导入所需的磁盘空间和目录权限。
  • 对用户、模式、权限以及已有对象进行提前检查。
  • 根据实际迁移需求确认目标库中是否存在冲突对象。

需要注意,FULL=Y 表示选择整库逻辑导入范围,并不意味着 dimp 会自动完成目标数据库的初始化,也不应将其理解为覆盖目标库所有物理文件。

5.3 使用 dimp 导入整库

在目标数据库上执行导入:

dimp USERID=SYSDBA/Wei_739867901@192.168.234.111:5239 FILE=FULL_DB.dmp LOG=FULL_DB_imp.log DIRECTORY=/dmdata/dmbak FULL=Y

其中,目标地址应替换为目标数据库的实际 IP 或主机名,DIRECTORY 应指向目标端能够读取导出文件的目录。

如果备份文件保存在源数据库服务器,需要先将文件传输到目标端,或者根据实际部署方式使用适当的文件访问路径。

导入过程中应关注命令输出及日志,特别是用户、对象创建、权限和数据导入相关的错误信息。

完整输出
image.png

5.4 验证整库导入结果

image.png
整库导入完成后,不应只根据命令执行结束就判断备份恢复成功。

建议从以下几个方面进行检查:

  1. 检查导入日志,确认是否存在导入失败的对象。
  2. 检查需要迁移的用户和模式是否存在。
  3. 检查关键表、视图及其他重要对象是否成功导入。
  4. 对重点表进行数据条数及关键数据校验。
  5. 对有业务依赖的对象进行必要的功能验证。

如果是实际迁移任务,还需要结合源端和目标端的对象清单进行核对。

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服