目录
- [1. 达梦备份体系](#1. 达梦备份体系)
- [2. 物理备份与逻辑备份的核心区别](#2. 物理备份与逻辑备份的核心区别)
- [3. 物理备份底层机制](#3. 物理备份底层机制)
- [3.5 物理备份还原语法与常用参数](#3.5 物理备份还原语法与常用参数)
- [4. 逻辑备份底层机制](#4. 逻辑备份底层机制)
- [4.4 逻辑备份还原语法与常用参数](#4.4 逻辑备份还原语法与常用参数)
- [5. VMware + 麒麟 10 环境规划](#5. VMware + 麒麟 10 环境规划)
- [6. 物理备份还原实战](#6. 物理备份还原实战)
- [7. 逻辑备份还原实战](#7. 逻辑备份还原实战)
- [8. DBA 生产检查清单](#8. DBA 生产检查清单)
- [9. 常见场景选型](#9. 常见场景选型)
- [10. 总结](#10. 总结)
1. 达梦备份体系
达梦数据库备份还原可以分成两条主线:
| 类型 | 最适合解决什么问题 |
|---|---|
| 物理备份 | 数据文件损坏、整库故障、介质故障、需要恢复到某个时间点 |
| 逻辑备份 | 单表恢复、模式迁移、跨库迁移、升级前对象留底、开发测试环境刷新 |
2. 物理备份与逻辑备份的核心区别
2.1 对比总表
| 对比项 | 物理备份 | 逻辑备份 |
|---|---|---|
| 关注点 | 数据文件、有效数据页、归档日志 | 表、模式、用户、数据行、对象定义 |
| 常用工具 | SQL 、DMRMAN、CONSOLE、MANAGER | dexp、dimp、dexpdp、dimpdp |
| 备份结果 | 备份集目录,含 .bak 和 .meta |
.dmp 文件和 .log 日志 |
| 恢复粒度 | 库、表空间、数据文件、表备份集 | FULL、OWNER、SCHEMAS、TABLES |
| 速度 | 大库灾备通常更快 | 对象多、索引多时可能较慢 |
| 迁移能力 | 受版本、路径、初始化参数影响更明显 | 更适合跨环境、跨用户、部分对象迁移 |
| 灾难恢复 | 强 | 弱 |
| 对象级恢复 | 相对笨重 | 强 |
2.2 选择原则
text
整库灾难找物理;
对象迁移找逻辑;
误删单表用临时库恢复备份集,再逻辑抽取;
升级变更前,物理兜底 + 逻辑留样。
2.3 容易混淆的三个动作
| 动作 | 做了什么 | 达梦场景 |
|---|---|---|
| 备份 | 把数据页、归档或对象导出成文件 | backup database、dexp |
| 还原 | 把物理备份集的数据页写回目标数据文件 | restore database |
| 恢复 | 重做归档日志,让数据库达到一致状态或指定时间点 | recover database |
注意:物理恢复中,
restore不是终点。通常还需要recover database,并在恢复完成后执行update db_magic。
3. 物理备份底层机制
3.1 物理备份到底备了什么
物理备份不是导出 SQL,也不是逐表扫描数据。它的核心动作是:
数据文件
扫描有效数据页
写入备份片 .bak
备份元信息
写入 .meta
备份期间产生的 REDO / 归档
备份集目录
备份集一般包含:
| 文件 | 作用 |
|---|---|
.bak |
保存数据页或日志内容 |
.meta |
保存备份集元数据,如备份范围、数据文件、源库信息、备份片信息 |
3.2 为什么联机备份强依赖归档
联机备份时数据库仍然在运行,业务事务可能持续修改数据。此时备份读到的数据页可能并不处于同一个时间点:
text
备份开始 ────── 业务继续写入 ────── 备份结束
│ │ │
└─ 读到一部分旧页 └─ 产生 REDO 日志 └─ 需要日志保证一致性
所以物理联机备份必须依赖归档日志来保证恢复能力。没有连续归档,就无法可靠恢复到故障前的精确状态。
3.3 物理备份类型速查
| 类型 | 是否常用 | 说明 |
|---|---|---|
| 联机库备份 | 常用 | 数据库 OPEN 状态执行,生产主力备份方式 |
| 脱机库备份 | 常用 | 停库后用 DMRMAN 执行,适合维护窗口 |
| 表空间备份 | 进阶 | 局部物理保护,恢复时依赖归档 |
| 表级物理备份 | 进阶 | 一次备份一张用户表,不支持增量 |
| 归档备份 | 常用 | 只备份归档日志,配合数据备份形成恢复链 |
| 完全备份 | 必备 | 增量链的基础 |
| 差异增量 | 常用 | 基于上一次全备或增量 |
| 累积增量 | 常用 | 只基于全备,恢复链更短 |
3.4 差异增量 vs 累积增量

| 类型 | 优点 | 缺点 |
|---|---|---|
| 差异增量 | 每次备份较小 | 恢复链可能较长 |
| 累积增量 | 恢复链短 | 越靠后备份越大 |
3.5 物理备份还原语法与常用参数
物理备份常用 SQL 语法如下:
| 操作 | 语法示例 | 说明 |
|---|---|---|
| 库级全备 | backup database full backupset '/opt/dmbak/full/db_full_01'; |
备份整个数据库 |
| 库级增量 | backup database increment with backupdir '/opt/dmbak/full' backupset '/opt/dmbak/inc/db_inc_01'; |
基于已有备份集做增量 |
| 累积增量 | backup database increment cumulative with backupdir '/opt/dmbak/full' backupset '/opt/dmbak/inc/db_cum_01'; |
基于全备做累积增量 |
| 表空间备份 | backup tablespace ts_bak full backupset '/opt/dmbak/full/ts_bak_01'; |
备份指定表空间 |
| 表级物理备份 | backup table bakuser.t_order backupset '/opt/dmbak/full/t_order_bak_01'; |
一次备份一张用户表 |
常用参数说明:
| 参数 | 作用 |
|---|---|
FULL |
完全备份 |
INCREMENT |
增量备份 |
CUMULATIVE |
累积增量备份 |
WITH BACKUPDIR |
指定基备份集搜索目录 |
BACKUPSET |
指定备份集目录 |
BACKUPINFO |
写入备份描述 |
MAXPIECESIZE |
限制单个备份片大小 |
COMPRESSED LEVEL |
设置压缩等级 |
PARALLEL |
并行备份 |
WITHOUT LOG |
不备份日志,生成非一致性备份,恢复时更依赖归档 |
DMRMAN 常用语法:
| 操作 | 语法示例 |
|---|---|
| 校验备份集 | check backupset '/opt/dmbak/full/db_full_01'; |
| 查看备份集 | show backupset '/opt/dmbak/full/db_full_01'; |
| 还原数据库 | restore database '/opt/dmdbms/data/DAMENG/dm.ini' from backupset '/opt/dmbak/full/db_full_01'; |
| 恢复--从备份集 | recover database '/opt/dmdbms/data/DAMENG/dm.ini' from backupset '/opt/dmbak/full/db_full_01'; |
| 恢复--从归档 | recover database '/opt/dmdbms/data/DAMENG/dm.ini' with archivedir '/opt/dmdbms/arch'; |
| 恢复--指定时间点 | recover database '/opt/dmdbms/data/DAMENG/dm.ini' with archivedir '/opt/dmdbms/arch' until time '2026-05-15 10:30:00'; |
| 更新 DB_MAGIC | recover database '/opt/dmdbms/data/DAMENG/dm.ini' update db_magic; |
4. 逻辑备份底层机制
4.1 逻辑备份到底备了什么
逻辑备份读取数据库对象和数据内容,写入 .dmp 文件:
数据库对象
dexp 读取元数据
表数据
dexp 读取数据行
导出文件 .dmp
dimp 导入目标库
逻辑导出可以包含:
- 表定义
- 表数据
- 索引
- 约束
- 权限
- 触发器
- 视图
- 存储过程
- 包
- 序列
- 统计信息
4.2 dexp 的四种导出级别
| 级别 | 参数 | 典型场景 |
|---|---|---|
| 数据库级 | FULL=Y |
整库逻辑备份、升级前全量留底 |
| 用户级 | OWNER=USER1 |
按业务用户迁移 |
| 模式级 | SCHEMAS=SCH1 |
按模式迁移或恢复 |
| 表级 | TABLES=SCH1.T1 |
单表恢复、关键表快照 |
4.3 逻辑备份强在哪里
text
物理备份强在"救库"
逻辑备份强在"挑对象"
逻辑备份的优势:
- 可以导出单表、单模式、单用户。
- 可以用
QUERY过滤部分数据。 - 可以用
REMAP_SCHEMA跨用户导入。 - 可以用
REMAP_TABLESPACE调整目标表空间。 - 可以用
SHOW=Y先查看导出文件内容,不实际导入。 - 可以在迁移、升级、测试环境刷新中灵活使用。
逻辑备份的限制:
- 数据库必须能正常连接。
- 不适合作为唯一灾备手段。
- 大量对象、索引、约束导入时耗时较长。
- 跨版本、大小写敏感、字符集、兼容模式不一致时,需要提前验证。
4.4 逻辑备份还原语法与常用参数
dexp 用于逻辑导出,dimp 用于逻辑导入。逻辑备份还原面向的是数据库对象和数据内容,例如表、模式、用户、视图、索引、约束、权限、触发器、存储过程等。
dexp 逻辑导出基础语法:
bash
./dexp USERID=用户名/密码@IP:端口 FILE=导出文件 LOG=日志文件 DIRECTORY=导出目录 导出级别
示例:
bash
./dexp USERID=SYSDBA/'"Dameng@1234"'@127.0.0.1:5236 \
FILE=dm_full_20260515.dmp \
LOG=dm_full_20260515.log \
DIRECTORY=/opt/dmexp/full \
FULL=Y
dimp 逻辑导入基础语法:
bash
./dimp USERID=用户名/密码@IP:端口 FILE=导入文件 LOG=日志文件 DIRECTORY=日志目录 导入级别
示例:
bash
./dimp USERID=SYSDBA/'"Dameng@1234"'@127.0.0.1:5236 \
FILE=/opt/dmexp/full/dm_full_20260515.dmp \
LOG=dm_full_20260515_imp.log \
DIRECTORY=/opt/dmexp/log \
FULL=Y
常见导入导出级别:
| 级别 | 参数示例 | 说明 |
|---|---|---|
| 整库级 | FULL=Y |
导入或导出整个数据库对象 |
| 用户级 | OWNER=BAKUSER |
导入或导出指定用户拥有的对象 |
| 模式级 | SCHEMAS=BAKUSER |
导入或导出指定模式下的对象 |
| 表级 | TABLES=BAKUSER.T_ORDER |
导入或导出指定表 |
常用参数:
| 参数 | 作用 | 备注 |
|---|---|---|
USERID |
数据库连接信息 | 必填,Linux 下密码含特殊字符时要注意引号 |
FILE |
指定 .dmp 文件 |
导出时为生成文件,导入时为读取文件 |
LOG |
指定日志文件 | 建议每次导入导出都保留日志 |
DIRECTORY |
指定文件或日志目录 | dexp 中表示导出目录,dimp 中常用于日志目录 |
FULL |
整库级导入导出 | FULL=Y 表示整库 |
OWNER |
用户级导入导出 | 适合按业务用户迁移 |
SCHEMAS |
模式级导入导出 | 适合按模式迁移或恢复 |
TABLES |
表级导入导出 | 适合单表备份、恢复、迁移 |
QUERY |
条件导出 | Linux 下建议写成 QUERY='WHERE ID <= 10000' |
SHOW=Y |
只查看导入文件内容 | 不真正执行导入,适合导入前确认对象 |
REMAP_SCHEMA |
模式映射 | 例如 REMAP_SCHEMA=BAKUSER:BAKUSER_TEST |
REMAP_TABLESPACE |
表空间映射 | 目标表空间需提前规划 |
TABLE_EXISTS_ACTION |
目标表已存在时的处理策略 | 常用 SKIP、APPEND、TRUNCATE、REPLACE |
PARALLEL |
导入导出线程数 | 大数据量场景可适当调整 |
TABLE_PARALLEL |
单表并行度 | 大表导入导出时更常用 |
ROWS=N |
只导对象定义,不导数据 | 适合只迁移结构 |
INDEXES=N |
不处理索引 | 大数据导入后可再重建索引 |
CONSTRAINTS=N |
控制约束处理 | 主键和非空约束需特别注意 |
GRANTS=N |
不处理授权 | 适合目标库权限重新规划的场景 |
ENCRYPT=Y |
导出文件加密 | 需保存好加密密码 |
COMPRESS=Y |
导出文件压缩 | 可减少文件体积 |
TABLE_EXISTS_ACTION 常用取值:
| 取值 | 行为 | 适合场景 | 风险 |
|---|---|---|---|
SKIP |
表存在则跳过 | 只导入目标库不存在的表 | 已有表不会刷新 |
APPEND |
向已有表追加数据 | 补充新数据 | 主键或唯一键重复会报错 |
TRUNCATE |
先清空表数据,再导入 | 表结构正确,只刷新数据 | 会删除目标表现有数据 |
REPLACE |
先删除表,再按导出文件重建并导入 | 表结构也要恢复 | 可能影响依赖对象、授权和触发器 |
TRUNCATE_CASCADE |
级联清空依赖表数据,再导入 | 存在外键依赖且确认可清理 | 风险最高,生产慎用 |
建议:
FULL=Y更适合导入空库;如果导入到已有库,建议先使用SHOW=Y查看导出文件内容,再根据对象重复情况选择TABLE_EXISTS_ACTION。
5. VMware + 麒麟 10 环境规划
5.1 实验环境
| 项目 | 示例 |
|---|---|
| 虚拟化平台 | VMware Workstation / ESXi |
| 操作系统 | 银河麒麟高级服务器操作系统 V10 |
| 数据库 | DM8 |
| 数据库用户 | dmdba |
| 实例名 | DMSERVER |
| 数据库名 | DAMENG |
| 端口 | 5236 |
5.2 目录规划
| 目录 | 用途 | 生产建议 |
|---|---|---|
/opt/dmdbms |
数据库软件目录 | 已安装目录 |
/opt/dmdbms/data |
数据文件根目录 | 当前实例目录为 /opt/dmdbms/data/DAMENG |
/opt/dmdbms/arch |
归档目录 | 你当前环境已有该目录 |
/opt/dmbak |
物理备份目录 | 你已在 /opt 下创建 |
/opt/dmexp |
逻辑导出目录 | 你已在 /opt 下创建 |
bash
mkdir -p /opt/dmbak/full /opt/dmbak/inc /opt/dmbak/arch /opt/dmexp/full /opt/dmexp/schema /opt/dmexp/table /opt/dmexp/log
chown -R dmdba:dinstall /opt/dmdbms /opt/dmbak /opt/dmexp
chmod -R 775 /opt/dmdbms/arch /opt/dmbak /opt/dmexp
生产提醒:如果数据、归档、备份都在同一块虚拟磁盘上,这只能防误操作,不能防磁盘故障。真正的备份必须离开原故障域。
命令提醒:组名是
dinstall,不是didstall;chown的用户组和路径之间要有空格,例如chown -R dmdba:dinstall /opt/dmbak /opt/dmexp。
6. 物理备份还原实战
6.1 开启归档(程序设计,备份必须设置归档,否则报错)
bash
su - dmdba
cd /opt/dmdbms/bin
./disql SYSDBA/"Dameng@1234"@localhost:5236
sql
alter database mount;
alter database archivelog;
alter database add archivelog '
TYPE=LOCAL,
DEST=/opt/dmdbms/arch,
FILE_SIZE=1024,
SPACE_LIMIT=51200
';
alter database open;
检查:
sql
select arch_mode from v$database;
select arch_type, arch_dest, arch_file_size, arch_space_limit from v$dm_arch_ini;

6.2 准备测试数据
sql
create tablespace ts_bak datafile '/opt/dmdbms/data/DAMENG/ts_bak01.dbf' size 128;
create user bakuser identified by "Dameng@1234" default tablespace ts_bak;
grant resource, public to bakuser;
conn bakuser/"Dameng@1234"@localhost:5236;
create table t_order (
id int primary key,
order_no varchar(40),
amount decimal(10,2),
create_time datetime default sysdate
);
insert into t_order(id, order_no, amount) values(1, 'DM202605150001', 100.00);
insert into t_order(id, order_no, amount) values(2, 'DM202605150002', 200.00);
commit;
6.3 库级全备
sql
backup database full
backupset '/opt/dmbak/full/db_full_20260515_01'
backupinfo 'full backup before business change';

校验备份集:
bash
cd /opt/dmdbms/bin
./dmrman
text
RMAN> check backupset '/opt/dmbak/full/db_full_20260515_01';
RMAN> show backupset '/opt/dmbak/full/db_full_20260515_01';


6.4 增量备份
sql
conn bakuser/"Dameng@1234"@localhost:5236;
insert into t_order(id, order_no, amount) values(3, 'DM202605150003', 300.00);
insert into t_order(id, order_no, amount) values(4, 'DM202605150004', 400.00);
commit;
差异增量:
sql
conn SYSDBA/"Dameng@1234"@localhost:5236;
backup database increment
with backupdir '/opt/dmbak/full'
backupset '/opt/dmbak/inc/db_inc_20260515_01'
backupinfo 'increment backup after full backup';
累积增量:
sql
backup database increment cumulative
with backupdir '/opt/dmbak/full'
backupset '/opt/dmbak/inc/db_cum_20260515_01';
6.5 表空间和表级物理备份
表空间备份:
sql
backup tablespace ts_bak full
backupset '/opt/dmbak/full/ts_bak_full_01';
表级物理备份:
sql
backup table bakuser.t_order
backupset '/opt/dmbak/full/t_order_bak_01';
6.6 DMRMAN 脱机还原恢复(直接从底层物理页恢复,需要脱机停库)
停库:
bash
su - root
systemctl stop DmServiceDMSERVER
进入 DMRMAN:
bash
su - dmdba
cd /opt/dmdbms/bin
./dmrman
第一步,校验并还原备份集:
text
RMAN> check backupset '/opt/dmbak/full/db_full_20260515_01';
RMAN> restore database '/opt/dmdbms/data/DAMENG/dm.ini' from backupset '/opt/dmbak/full/db_full_20260515_01';

第二步,还原完成后,根据恢复目标选择下面三种方式之一,执行恢复相关操作。
注意
执行过 `recover ... update db_magic` 后,恢复流程已经结束。
如果要换另一种恢复方式,需要重新执行 `restore database ... from backupset ...`。
方式一:恢复到备份集结束状态:
text
RMAN> recover database '/opt/dmdbms/data/DAMENG/dm.ini' from backupset '/opt/dmbak/full/db_full_20260515_01';
RMAN> recover database '/opt/dmdbms/data/DAMENG/dm.ini' update db_magic;

方式二:利用归档恢复到最新状态:
text
RMAN> recover database '/opt/dmdbms/data/DAMENG/dm.ini' with archivedir '/opt/dmdbms/arch';
RMAN> recover database '/opt/dmdbms/data/DAMENG/dm.ini' update db_magic;

方式三:利用归档恢复到指定时间点:
text
RMAN> recover database '/opt/dmdbms/data/DAMENG/dm.ini' with archivedir '/opt/dmdbms/arch' until time '2026-05-15 10:30:00';
RMAN> recover database '/opt/dmdbms/data/DAMENG/dm.ini' update db_magic;

6.7 物理恢复注意点
| 检查项 | 为什么重要 |
|---|---|
| 备份集是否完整 | .bak 和 .meta 缺一不可 |
| 归档是否连续 | 时间点恢复依赖连续归档 |
dm.ini 路径是否正确 |
DMRMAN 根据它定位目标库 |
是否执行 recover |
只还原不恢复,数据库可能不一致 |
是否更新 DB_MAGIC |
避免恢复库与原库归档链混淆 |
7. 逻辑备份还原实战
7.1 整库逻辑导出导入
导出:
bash
cd /opt/dmdbms/bin
./dexp USERID=SYSDBA/'"Dameng@1234"'@127.0.0.1:5236 \
FILE=dm_full_20260515.dmp \
LOG=dm_full_20260515.log \
DIRECTORY=/opt/dmexp/full \
FULL=Y

导入:
bash
./dimp USERID=SYSDBA/'"Dameng@1234"'@127.0.0.1:5236 \
FILE=/opt/dmexp/full/dm_full_20260515.dmp \
LOG=dm_full_20260515_imp.log \
DIRECTORY=/opt/dmexp/log \
FULL=Y
先看内容,不导入:
bash
./dimp USERID=SYSDBA/'"Dameng@1234"'@127.0.0.1:5236 \
FILE=/opt/dmexp/full/dm_full_20260515.dmp \
SHOW=Y \
FULL=Y


7.2 用户级和模式级导出
用户级:
bash
./dexp USERID=SYSDBA/'"Dameng@1234"'@127.0.0.1:5236 \
FILE=bakuser_owner_20260515.dmp \
LOG=bakuser_owner_20260515.log \
DIRECTORY=/opt/dmexp/schema \
OWNER=BAKUSER

模式级:
bash
./dexp USERID=SYSDBA/'"Dameng@1234"'@127.0.0.1:5236 \
FILE=bakuser_schema_20260515.dmp \
LOG=bakuser_schema_20260515.log \
DIRECTORY=/opt/dmexp/schema \
SCHEMAS=BAKUSER

跨用户导入:
模式映射导入:
有时我们并不希望把逻辑备份导回原模式,而是希望导入到一个新的测试模式中。例如,源库中对象属于 BAKUSER,现在希望导入到 BAKUSER_TEST,用于恢复验证或数据比对。
这种场景使用 dimp 的 REMAP_SCHEMA 参数。它的本质是模式转换,即把导出文件中的源模式对象映射到目标模式下,而不是简单理解为"跨用户导入"。
语法格式:
bash
REMAP_SCHEMA=源模式:目标模式
它表示:导入时将导出文件中 BAKUSER 模式下的对象映射到 BAKUSER_TEST 模式下。
导入前先创建目标用户/模式:
sql
create user bakuser_test identified by "Dameng@1234" default tablespace ts_bak;
grant resource, public to bakuser_test;
执行导入:
bash
./dimp USERID=SYSDBA/'"Dameng@1234"'@127.0.0.1:5236 \
FILE=/opt/dmexp/schema/bakuser_schema_20260515.dmp \
LOG=bakuser_schema_remap.log \
DIRECTORY=/opt/dmexp/log \
SCHEMAS=BAKUSER \
REMAP_SCHEMA=BAKUSER:BAKUSER_TEST

这种做法的好处是不会直接覆盖原 BAKUSER 模式,可以先在 BAKUSER_TEST 中检查数据是否正确,再决定是否回迁到生产模式。
7.3 表级导出导入
导出单表:
bash
./dexp USERID=SYSDBA/'"Dameng@1234"'@127.0.0.1:5236 \
FILE=t_order_20260515.dmp \
LOG=t_order_20260515.log \
DIRECTORY=/opt/dmexp/table \
TABLES=BAKUSER.T_ORDER

按条件导出:
bash
./dexp USERID=SYSDBA/'"Dameng@1234"'@127.0.0.1:5236 \
FILE=t_order_part_20260515.dmp \
LOG=t_order_part_20260515.log \
DIRECTORY=/opt/dmexp/table \
TABLES=BAKUSER.T_ORDER \
QUERY='WHERE ID <= 10000'

导入单表:
bash
./dimp USERID=SYSDBA/'"Dameng@1234"'@127.0.0.1:5236 \
FILE=/opt/dmexp/table/t_order_20260515.dmp \
LOG=t_order_imp_20260515.log \
DIRECTORY=/opt/dmexp/log \
TABLES=BAKUSER.T_ORDER
7.4 目标表已存在怎么办
| 参数 | 行为 | 适合场景 | 风险 |
|---|---|---|---|
SKIP |
表存在则跳过 | 只导不存在的表 | 已有表不会刷新 |
APPEND |
追加数据 | 补充新数据 | 主键/唯一键重复会报错 |
TRUNCATE |
清空原表数据再导入 | 表结构正确,只刷新数据 | 会删除目标表现有数据 |
REPLACE |
删除原表并按导出文件重建 | 表结构也要恢复 | 影响依赖对象和授权 |
TRUNCATE_CASCADE |
级联清空依赖表数据再导入 | 有外键依赖且确认可清理 | 风险最高 |
示例:
bash
./dimp USERID=SYSDBA/'"Dameng@1234"'@127.0.0.1:5236 \
FILE=/opt/dmexp/table/t_order_20260515.dmp \
LOG=t_order_append.log \
DIRECTORY=/opt/dmexp/log \
TABLES=BAKUSER.T_ORDER \
TABLE_EXISTS_ACTION=APPEND

这种情况下导入不会覆盖原数据,重复主键的行会失败;如果实验环境想重新灌入这张表,可改用 TABLE_EXISTS_ACTION=TRUNCATE。
./dimp USERID=SYSDBA/'"Dameng@1234"'@127.0.0.1:5236 \
FILE=/opt/dmexp/table/t_order_20260515.dmp \
LOG=t_order_truncate.log \
DIRECTORY=/opt/dmexp/log \
TABLES=BAKUSER.T_ORDER \
TABLE_EXISTS_ACTION=TRUNCATE

7.5 本次实验用到的逻辑导入参数
| 参数 | 作用 |
|---|---|
PARALLEL |
导出或导入线程数 |
TABLE_PARALLEL |
单表导出或导入线程数 |
ROWS=N |
只导对象定义,不导数据 |
INDEXES=N |
不处理索引 |
CONSTRAINTS=N |
控制约束处理 |
GRANTS=N |
不处理授权 |
TRIGGERS=N |
不处理触发器 |
EXCLUDE |
排除指定对象类型 |
INCLUDE |
只处理指定对象类型 |
REMAP_SCHEMA |
源模式映射到目标模式 |
REMAP_TABLESPACE |
源表空间映射到目标表空间 |
ENCRYPT=Y |
导出文件加密 |
COMPRESS=Y |
导出文件压缩 |
SHOW=Y |
查看导入文件内容,不执行导入 |
8. 生产检查清单
8.1 每次备份后
- 备份命令是否成功返回
- 备份日志是否有错误或警告
- 备份集是否执行
check backupset - 备份目录空间是否充足
- 归档目录空间是否充足
8.2 每次恢复前
- 明确恢复目标:整库、表空间、单表、单模式
- 明确恢复时间点或 LSN
- 确认备份链完整
- 确认归档连续
- 优先恢复到临时库验证
- 评估是否会覆盖生产数据
8.3 每次逻辑导入前
- 先用
SHOW=Y查看导出文件内容 - 检查目标库是否已有同名对象
- 检查目标表空间是否存在
- 检查大小写敏感、字符集、兼容模式
- 明确
TABLE_EXISTS_ACTION策略 - 导入后检查无效对象、索引、约束、权限
9. 常见场景选型
| 场景 | 推荐方案 |
|---|---|
| 磁盘损坏、数据文件丢失 | 物理全备 + 增量 + 归档恢复 |
| 整库回退到误操作前 | 物理备份 + 指定时间点恢复 |
| 误删单表 | 临时库物理恢复后逻辑抽取,或使用表级逻辑备份 |
| 迁移某个业务用户 | dexp OWNER / dimp OWNER |
| 迁移某个模式 | dexp SCHEMAS / dimp SCHEMAS |
| 迁移几张表 | dexp TABLES / dimp TABLES |
| 版本升级前兜底 | 物理全备 + 关键模式逻辑导出 |
| 开发环境刷新 | 逻辑导入或物理克隆,按数据量选择 |
| 大库常规灾备 | 周全备 + 日增量 + 连续归档 + 异地复制 |
10. 总结
关键结论
| 结论 | 说明 |
|---|---|
| 物理备份是灾难恢复底座 | 没有物理备份,介质故障时很难可靠恢复 |
| 逻辑备份是对象级恢复利器 | 单表、模式、跨库迁移更灵活 |
| 归档连续性决定恢复上限 | 归档断链会直接影响时间点恢复 |
| 备份成功不等于可恢复 | 必须校验、演练、异地保存 |
| DBA 要优先恢复到临时库 | 降低生产二次破坏风险 |