注册
DM数据库逻辑备份还原学习心得
培训园地/ 文章详情 /

DM数据库逻辑备份还原学习心得

DM_126974 2026/03/18 702 0 0

一、概述

1.1 概念

定义:
逻辑备份是对数据库逻辑组件(如表、视图、存储过程、函数、触发器、序列等数据库对象)的备份还原过程。与物理备份直接拷贝数据文件不同,逻辑备份通过提取数据库对象的结构定义(DDL语句)和数据行内容,生成独立于物理存储格式的备份文件(.dmp)。这些备份文件实质上是可读的SQL语句集合,记录了对象的创建脚本和数据插入语句。
与物理备份的区别:
物理备份直接扫描数据库的物理数据文件,将已分配、已使用的数据页复制保存到备份集中,不关心数据页中的具体内容。物理备份关注的是"数据存储在什么位置",可以恢复到任意时间点(配合归档日志),恢复速度快,但跨平台能力差。逻辑备份关注的是"数据内容是什么",将数据对象转换为SQL语句,灵活性强,可以跨平台迁移,但恢复速度相对较慢,因为需要逐条执行SQL重建数据。

1.2 dexp 与 dimp

dexp:逻辑导出工具,用于备份
dimp:逻辑导入工具,用于还原
特点:联机操作,达梦安装后自带,位于安装目录的bin下

1.3 适用场景

·源端与目标端网络不通时的数据迁移;
·选择性备份/还原特定数据库对象;
·数据库版本升级或跨平台迁移(需注意版本兼容性);
·开发库向生产库的数据同步;

1.4 重要前提

低版本dimp无法导入高版本dexp导出的文件
源端和目标端的初始化参数需一致:大小写敏感、字符集、VARCHAR单位、尾部空格填充等

二、备份级别

2.1 数据库级(FULL)

数据库级导出/导入是指对整个数据库中的所有对象进行操作,包括所有用户、模式、表、视图、存储过程、触发器、序列、同义词、包等全部数据库对象。
适用场景:
全库备份:对数据库进行完整的逻辑备份,作为物理备份的补充
完整迁移:将整个数据库从一个环境迁移到另一个环境,特别是跨平台迁移
克隆环境:搭建与生产环境结构完全一致的测试环境
执行要点:
·全库导出使用FULL=Y参数,会导出所有对象,包括系统对象和用户对象
·全库导入时,目标库可以是空库,也可以覆盖已有库(需谨慎)
·全库导入需要较高的权限(通常用SYSDBA执行)
·备份文件较大,导出导入时间较长,建议在业务低峰期进行

2.2 用户级(OWNER)

用户级导出/导入是指对一个或多个用户所拥有的所有对象进行操作。每个用户拥有自己的模式(默认模式与用户名同名),以及该模式下的所有对象。
适用场景:
迁移特定用户数据:将某个业务用户的所有对象迁移到新环境
用户级别备份:针对重要业务用户的单独备份
用户重部署:当某个用户的对象需要重新部署时
执行要点:
·使用OWNER参数指定一个或多个用户名,多个用户名用逗号分隔
·导出的内容包含该用户拥有的所有模式下的对象
·导入前,目标库需提前创建同名用户并授予相应权限
·支持跨用户映射:可使用REMAP_SCHEMA将源用户映射到目标端的不同用户

2.3 模式级(SCHEMAS)

模式级导出/导入是指对一个或多个模式下的所有对象进行操作。模式是数据库对象的集合,每个用户至少拥有一个与其同名的默认模式,也可以创建其他模式。
适用场景:
特定业务模块迁移:迁移某个业务模块对应的模式
模式重命名迁移:将源库的某模式迁移到目标库的不同模式下
部分数据同步:只需同步某个模式的数据
执行要点:
·使用SCHEMAS参数指定一个或多个模式名
·模式与用户有对应关系,但不等同:一个用户可以拥有多个模式
·导入前,目标库需存在对应的模式(或使用映射到已有模式)

2.4 表级(TABLES)

表级导出/导入是指对一个或多个指定的表或表分区进行操作,包括表的结构、数据、约束、索引、触发器等相关对象。
适用场景:
误删表恢复:从备份中单独恢复某张被误删的表
部分数据同步:只需同步某几张核心表的数据
特定范围数据导出:结合QUERY参数导出满足条件的数据行
表结构迁移:只需迁移表结构(不包含数据)的场景
执行要点:
·使用TABLES参数指定表名列表,格式为模式名.表名
·支持使用QUERY参数添加过滤条件,只导出满足条件的数据
·支持使用EXCLUDE排除指定对象,使用INCLUDE包含指定对象

三、命令行操作详解(dexp/dimp)

3.1 基本语法格式

bash
./dexp USERID=用户名/密码@IP:端口 参数=值
./dimp USERID=用户名/密码@IP:端口 参数=值

3.2 导出操作

全库导出 ./dexp USERID=SYSDBA/Dameng123@192.168.1.100:5236 FILE=full.dmp DIRECTORY=/dm/backup LOG=full.log FULL=Y 导出所有对象
用户导出 ./dexp USERID=SYSDBA/Dameng123@... FILE=user.dmp LOG=user.log OWNER=TEST 导出TEST用户所有对象
模式导出 ./dexp USERID=SYSDBA/Dameng123@... FILE=schema.dmp LOG=schema.log SCHEMAS=DMHR 导出DMHR模式
表导出 ./dexp USERID=SYSDBA/Dameng123@... FILE=table.dmp LOG=table.log TABLES=DMHR.EMPLOYEE 导出指定表

3.3 导入操作

全库导入:./dimp USERID=SYSDBA/Dameng123@... FILE=full.dmp DIRECTORY=/dm/backup FULL=Y 全库还原
用户导入:./dimp USERID=SYSDBA/Dameng123@... FILE=user.dmp OWNER=TEST
模式导入:./dimp USERID=SYSDBA/Dameng123@... FILE=schema.dmp
表导入:./dimp USERID=SYSDBA/Dameng123@... FILE=table.dmp TABLES=DMHR.EMPLOYEE 导入指定表

四、图形化操作

4.1 达梦管理工具(DM Manager)

右键点击数据库/模式/表,选择“导出dmp”或“导入dmp”
图形化界面配置参数,可实时预览对应的命令行
适合不熟悉命令行的初学者快速上手

4.2 图形化与命令行的选择

日常简单操作可用图形化
脚本化、自动化任务建议用命令行
复杂场景(如跨模式映射、条件导出)两者均可,命令行更灵活

五、常见问题

5.1 版本兼容性问题

低版本dimp无法导入高版本dexp导出的文件
尽量保持源端和目标端的达梦版本一致

5.2 初始化参数不一致

字符集、大小写敏感、页大小等参数不一致可能导致导入失败
解决方法:重新初始化目标库,或使用TABLE_EXISTS_ACTION参数

5.3 用户/模式不存在

按用户/模式导入前,需先在目标库创建对应用户和模式
可使用REMAP_SCHEMA映射到已有模式

5.4 导入时表已存在如何处理

SKIP:跳过
REPLACE:替换
APPEND:追加数据
TRUNCATE:清空后导入

5.6 日志检查要点

导入导出完成后,务必检查日志最后一行是否有报错
“正常导出/导入”字样表示成功

六、总结

逻辑备份还原是达梦数据库日常运维的必备技能,建议形成完整的备份策略,利用定期物理全备,保障灾难恢复能力;对重要业务表定期逻辑备份,便于细粒度恢复;在数据库结构变更前做逻辑备份,事后可以直接回滚;而如果是跨环境迁移,则优先使用逻辑备份。

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服