1 概述
本文介绍达梦数据库命令行导入导出操作,基于dexp/dimp工具实现逻辑备份。逻辑备份分为4个级别:
1)数据库级
整库的对象和数据;
2)用户级
导出/导入某个用户(支持多个用户)的对象和数据;
3)模式级
导出/导入某个模式(支持多个模式)的对象和数据,默认级别;
4)表级
TABLES方式导出/导入一个或多个指定的表或表分区。导出/导入所有数据行、约束、索引等信息。
2 环境说明
总共三个库
1)localhost:5236
2)localhost:5237
用户UTMP 包含两个模式:UTMP和TEST。
3)localhost:5238
用户TEST 包含两个模式:TEST和TEST1;
用户USEA包含两个模式:USEA和USEA1。
3 库级
3.1 参数掌握
3.1.1 compile
作用:导入时是否自动编译存储过程、函数、包
COMPILE=Y:自动编译(推荐)
COMPILE=N:不编译(适合大量无效对象)
3.1.2 full
FULL=Y 代表:整库全量导出 / 整库全量导入
FULL=Y:全库模式
FULL=N:非全库(默认)
3.2 场景
5236端口,sysdba管理员账号登录,全库导出;
5238端口,sysdba账号登录,全库导入。
3.2.1 导出
./dexp SYSDBA/’“Dameng@123”’@localhost:5236 DIRECTORY=/dm/backup FILE=full_exp_20260512.dmp LOG=full_exp_20260512_dmp.log FULL=Y
3.2.2 导入
./dimp SYSDBA/’“Dameng@123”’@localhost:5238 DIRECTORY=/dm/backup FILE=full_exp_20260512.dmp LOG=full_imp_20260512_dmp.log FULL=Y
4 用户级
4.1 参数掌握
4.1.1 owner
OWNER = 所有者
在达梦 dexp(导出)/ dimp(导入)里:
OWNER = 用户名 = 模式名(Schema)
达梦创建用户时,自动创建同名模式,注意:
导出时:OWNER=张三 → 导出张三这个用户下的所有表、存储过程、视图……导出 TEST 用户 下的所有对象;只导出 TEST,不导出别的用户
导入时:OWNER=张三 → 只导入文件里张三这个用户的数据 从备份文件里,只把 TEST 用户的数据导入进来;忽略文件里其他用户的数据
OWNER 不能和 FROMUSER/TOUSER 一起用;用 OWNER → 同名导入;用 FROMUSER/TOUSER → 改名导入;两者互斥,不能同时写。
4.1.2 fromuser/touser
FROMUSER + TOUSER:达梦兼容 Oracle 的老写法
FROMUSER:源用户(备份文件里原来的用户)
TOUSER:目标用户(你要导入到哪个用户)
缺点:
只能一对一
不能同时映射多个用户
4.1.3 remap_schema
REMAP_SCHEMA:达梦官方推荐、更简洁、更强大的新写法
源用户:目标用户
优点:
写法更短、更清晰
支持一对多、多对多
达梦官方标准用法
多用户映射示例
REMAP_SCHEMA=USER_A:USER_B,USER_C:USER_D
4.2 导出
4.2.1 管理员用户导出
5236端口,sysdba管理员账号登录,导出TEST用户数据;
./dexp SYSDBA/’“Dameng@123”’@localhost:5236 DIRECTORY=/dm/backup FILE=SYSDBA_TEST_exp_20260512.dmp LOG=SYSDBA_TEST_exp_20260512_dmp.log OWNER=TEST
4.2.2 业务用户导出
5236端口,TEST管理员账号登录,导出TEST用户数据;
./dexp TEST/’“Dameng@123”’@localhost:5236 DIRECTORY=/dm/backup FILE=TEST_TEST_exp_20260512.dmp LOG=TEST_TEST_exp_20260512_dmp.log
4.3 导入
注意:具体的用户、模式、表相关环境,详见【2环境说明】章节。
4.3.1 场景1-导入到同用户【TEST->TEST】
5238端口,分别用SYSDBA管理员用户、业务用户TEST账号登录,数据导入到TEST用户。
4.3.1.1 管理员用户导入
sysdba管理员账号登录
./dimp SYSDBA/’“Dameng@123”’@localhost:5238 DIRECTORY=/dm/backup FILE=SYSDBA_TEST_exp_20260512.dmp LOG=SYSDBA_TEST_imp_20260512_dmp.log OWNER=TEST COMPILE=y
4.3.1.2 业务用户导入
TEST管理员账号登录
./dimp TEST/’“Dameng@123”’@localhost:5238 DIRECTORY=/dm/backup FILE=SYSDBA_TEST_exp_20260512.dmp LOG=TEST_TEST_imp_20260512_dmp.log COMPILE=y
4.3.2 场景2-导入到不同用户【TEST->USEA】
5238端口,分别用SYSDBA管理员用户、业务用户USEA账号登录,数据导入到USEA用户;
4.3.2.1 管理员用户导入
以下两种写法均可:
./dimp SYSDBA/’“Dameng@123”’@localhost:5238 DIRECTORY=/dm/backup FILE=SYSDBA_TEST_exp_20260512.dmp LOG=SYSDBA_USEA_imp_20260512_dmp.log REMAP_SCHEMA=TEST:USEA
./dimp SYSDBA/’“Dameng@123”’@localhost:5238 DIRECTORY=/dm/backup FILE=SYSDBA_TEST_exp_20260512.dmp LOG=SYSDBA_USEA_imp_20260512_dmp.log FROMUSER=TEST TOUSER=USEA
4.3.2.2 业务用户导入
以下两种写法均可:
./dimp USEA/’“Dameng@123”’@localhost:5238 DIRECTORY=/dm/backup FILE=USEA_TEST_exp_20260512.dmp LOG=SYSDBA_USEA_imp_20260512_dmp.log REMAP_SCHEMA=TEST:USEA
./dimp USEA/’“Dameng@123”’@localhost:5238 DIRECTORY=/dm/backup FILE=USEA_TEST_exp_20260512.dmp LOG=SYSDBA_USEA_imp_20260512_dmp.log FROMUSER=TEST TOUSER=USEA
5 模式级
5.1 参数掌握
5.1.1 schemas
指定导出 / 导入的具体模式列表,用于同模式名的备份与恢复
5.1.2 remap_schema
将导出文件中的源模式对象,全部重定义到目标模式下。
5.1.3 fromuser/touser
跨用户导入参数,将源用户数据导入目标用户。
5.2 场景 同用户、同模式;同用户、跨模式
5.2.1 导出
5236端口,sysdba管理员账号/业务用户账号登录,TEST模式导出;
5.2.1.1 SYSDBA管理员账号导出
./dexp SYSDBA/’“Dameng@123”’@localhost:5236 DIRECTORY=/dm/backup FILE=SCHEMA_SYSDBA_TEST_exp_20260512.dmp LOG=SCHEMA_SYSDBA_TEST_exp_20260512_dmp.log SCHEMAS=TEST
5.2.1.2 模式所属用户导出
./dexp TEST/’“Dameng@123”’@localhost:5236 DIRECTORY=/dm/backup FILE=SCHEMA_TEST_TEST_exp_20260512.dmp LOG=SCHEMA_TEST_TEST_exp_20260512_dmp.log SCHEMAS=TEST
5.2.2 导入
注意:具体的用户、模式、表相关环境,详见【2环境说明】章节。
5.2.2.1 同用户、同模式
./dimp SYSDBA/’“Dameng@123”’@localhost:5238 DIRECTORY=/dm/backup FILE=SCHEMA_TEST_TEST_exp_20260512.dmp LOG=SCHEMA_SYSDBA_TEST_imp_20260512_dmp.log SCHEMAS=TEST
./dimp TEST/’“Dameng@123”’@localhost:5238 DIRECTORY=/dm/backup FILE=SCHEMA_TEST_TEST_exp_20260512.dmp LOG=SCHEMA_TEST_TEST_imp_20260512_dmp.log SCHEMAS=TEST
5.2.2.2 同用户、跨模式
./dimp SYSDBA/’“Dameng@123”’@localhost:5238 DIRECTORY=/dm/backup FILE=SCHEMA_TEST_TEST_exp_20260512.dmp LOG=SCHEMA_SYSDBA_TEST_TEST1_imp_20260512_dmp.log REMAP_SCHEMA=TEST:TEST1
./dimp TEST/’“Dameng@123”’@localhost:5238 DIRECTORY=/dm/backup FILE=SCHEMA_TEST_TEST_exp_20260512.dmp LOG=SCHEMA_TEST_TEST1_imp_20260512_dmp.log REMAP_SCHEMA=TEST:TEST1
5.2.2.3 跨用户、同模式
./dimp SYSDBA/’“Dameng@123”’@localhost:5237 DIRECTORY=/dm/backup FILE=SCHEMA_TEST_TEST_exp_20260512.dmp LOG=SCHEMA_SYSDBA_TEST_TEST1_imp_20260512_dmp.log FROMUSER=TEST TOUSER=UTMP REMAP_SCHEMA=TEST:TEST
./dimp UTMP/’“Dameng@123”’@localhost:5237 DIRECTORY=/dm/backup FILE=SCHEMA_TEST_TEST_exp_20260512.dmp LOG=SCHEMA_TEST_TEST1_imp_20260512_dmp.log FROMUSER=TEST TOUSER=UTMP REMAP_SCHEMA=TEST:TEST
5.2.2.4 跨用户、跨模式
./dimp SYSDBA/’“Dameng@123”’@localhost:5237 DIRECTORY=/dm/backup FILE=SCHEMA_TEST_TEST_exp_20260512.dmp LOG=SCHEMA_SYSDBA_TEST_TEST1_imp_20260512_dmp.log REMAP_SCHEMA=TEST:UTMP
./dimp SYSDBA/’“Dameng@123”’@localhost:5237 DIRECTORY=/dm/backup FILE=SCHEMA_TEST_TEST_exp_20260512.dmp LOG=SCHEMA_SYSDBA_TEST_TEST1_imp_20260512_dmp.log FROMUSER=TEST TOUSER=UTMP
–业务用户
./dimp UTMP/’“Dameng@123”’@localhost:5237 DIRECTORY=/dm/backup FILE=SCHEMA_TEST_TEST_exp_20260512.dmp LOG=SCHEMA_SYSDBA_TEST_TEST1_imp_20260512_dmp.log REMAP_SCHEMA=TEST:UTMP
./dimp UTMP/’“Dameng@123”’@localhost:5237 DIRECTORY=/dm/backup FILE=SCHEMA_TEST_TEST_exp_20260512.dmp LOG=SCHEMA_SYSDBA_TEST_TEST1_imp_20260512_dmp.log FROMUSER=TEST TOUSER=UTMP
标准写法如下,一般情况下,一个用户默认对应的是名字相同的模式,formuser/touser是针对用户的,remap_schema 是针对模式的,为了简便,写成了可替代。
./dimp UTMP/’“Dameng@123”’@localhost:5237 DIRECTORY=/dm/backup FILE=SCHEMA_TEST_TEST_exp_20260512.dmp LOG=SCHEMA_SYSDBA_TEST_TEST1_imp_20260512_dmp.log FROMUSER=TEST TOUSER=UTMP
FROMUSER=TEST TOUSER=UTMP REMAP_SCHEMA=TEST:UTMP
6 表级
6.1 参数
tables 后面直接跟多张表名,用 英文逗号 分隔
schemas 模式
fromuser/touser 跨用户导入参数,将源用户数据导入目标用户
6.2 场景
表的导入导出,其中导入存在的情况较多,涉及参数包含【表、模式、用户】,2的3次方。具体详见导入章节。
6.3 导出
./dexp SYSDBA/’“Dameng@123”’@localhost:5236 DIRECTORY=/dm/backup FILE=TABLE_TEST_COURSE_exp_20260512.dmp LOG=TABLE_SYSDBA_TEST_exp_20260512_dmp.log TABLES=TEST.COURSE
./dexp TEST/’“Dameng@123”’@localhost:5236 DIRECTORY=/dm/backup FILE=TABLE_TEST_COURSE_exp_20260512.dmp LOG=TABLE_SYSDBA_TEST_exp_20260512_dmp.log TABLES=COURSE
6.4 导入
6.4.1 同用户同模式同表
./dimp SYSDBA/’“Dameng@123”’@localhost:5238 DIRECTORY=/dm/backup FILE=TABLE_TEST_COURSE_exp_20260512.dmp LOG=TABLE_SYSDBA_TEST_TEST1_imp_20260512_dmp.log
./dimp TEST/’“Dameng@123”’@localhost:5238 DIRECTORY=/dm/backup FILE=TABLE_TEST_COURSE_exp_20260512.dmp LOG=TABLE_TEST_TEST1_imp_20260512_dmp.log
6.4.2 同用户跨模式同表
./dimp SYSDBA/’“Dameng@123”’@localhost:5238 DIRECTORY=/dm/backup FILE=TABLE_TEST_COURSE_exp_20260512.dmp LOG=TABLE.log REMAP_SCHEMA=TEST:TEST1
./dimp TEST/’“Dameng@123”’@localhost:5238 DIRECTORY=/dm/backup FILE=TABLE_TEST_COURSE_exp_20260512.dmp LOG=TABLE.log REMAP_SCHEMA=TEST:TEST1
6.4.3 跨用户同模式同表
./dimp SYSDBA/’“Dameng@123”’@localhost:5237 DIRECTORY=/dm/backup FILE=TABLE_TEST_COURSE_exp_20260512.dmp LOG=TABLE.log FROMUSER=TEST TOUSER=UTMP REMAP_SCHEMA=TEST:TEST
./dimp UTMP/’“Dameng@123”’@localhost:5237 DIRECTORY=/dm/backup FILE=TABLE_TEST_COURSE_exp_20260512.dmp LOG=TABLE.log FROMUSER=TEST TOUSER=UTMP REMAP_SCHEMA=TEST:TEST
6.4.4 跨用户跨模式同表
./dimp SYSDBA/’“Dameng@123”’@localhost:5238 DIRECTORY=/dm/backup FILE=TABLE_TEST_COURSE_exp_20260512.dmp LOG=TABLE.log FROMUSER=TEST TOUSER=USEA
./dimp USEA/’“Dameng@123”’@localhost:5238 DIRECTORY=/dm/backup FILE=TABLE_TEST_COURSE_exp_20260512.dmp LOG=TABLE.log FROMUSER=TEST TOUSER=USEA
正常应该把用户、表空间的名称 都写完整,存在用户与模式不一致的情况。
./dimp SYSDBA/’“Dameng@123”’@localhost:5238 DIRECTORY=/dm/backup FILE=TABLE_TEST_COURSE_exp_20260512.dmp LOG=TABLE.log FROMUSER=TEST TOUSER=USEA REMAP_SCHEMA=TEST:USEA1
./dimp USEA/’“Dameng@123”’@localhost:5238 DIRECTORY=/dm/backup FILE=TABLE_TEST_COURSE_exp_20260512.dmp LOG=TABLE.log FROMUSER=TEST TOUSER=USEA REMAP_SCHEMA=TEST:USEA1
6.4.5 同用户同模式跨表
./dimp SYSDBA/’“Dameng@123”’@localhost:5238 DIRECTORY=/dm/backup FILE=TABLE_TEST_COURSE_exp_20260512.dmp LOG=TABLE.log REMAP_TABLE=COURSE:COURSE1
./dimp TEST/’“Dameng@123”’@localhost:5238 DIRECTORY=/dm/backup FILE=TABLE_TEST_COURSE_exp_20260512.dmp LOG=TABLE.log REMAP_TABLE=COURSE:COURSE1
6.4.6 同用户跨模式跨表
./dimp SYSDBA/’“Dameng@123”’@localhost:5238 DIRECTORY=/dm/backup FILE=TABLE_TEST_COURSE_exp_20260512.dmp LOG=TABLE.log TABLES=TEST.COURSE REMAP_SCHEMA=TEST:TEST1 REMAP_TABLE=COURSE:COURSE1
./dimp TEST/’“Dameng@123”’@localhost:5238 DIRECTORY=/dm/backup FILE=TABLE_TEST_COURSE_exp_20260512.dmp LOG=TABLE.log TABLES=COURSE REMAP_SCHEMA=TEST:TEST1 REMAP_TABLE=COURSE:COURSE1
6.4.7 跨用户同模式跨表
./dimp SYSDBA/’“Dameng@123”’@localhost:5237 DIRECTORY=/dm/backup FILE=TABLE_TEST_COURSE_exp_20260512.dmp LOG=TABLE.log TABLES=TEST.COURSE FROMUSER=TEST TOUSER=UTMP REMAP_SCHEMA=TEST:TEST REMAP_TABLE=COURSE:COURSE1
./dimp UTMP/’“Dameng@123”’@localhost:5237 DIRECTORY=/dm/backup FILE=TABLE_TEST_COURSE_exp_20260512.dmp LOG=TABLE.log TABLES=COURSE FROMUSER=TEST TOUSER=UTMP REMAP_SCHEMA=TEST:TEST REMAP_TABLE=COURSE:COURSE1
6.4.8 跨用户跨模式跨表
./dimp SYSDBA/’“Dameng@123”’@localhost:5237 DIRECTORY=/dm/backup FILE=TABLE_TEST_COURSE_exp_20260512.dmp LOG=TABLE.log FROMUSER=TEST TOUSER=UTMP REMAP_TABLE=COURSE:COURSE1
./dimp UTMP/’“Dameng@123”’@localhost:5237 DIRECTORY=/dm/backup FILE=TABLE_TEST_COURSE_exp_20260512.dmp LOG=TABLE.log FROMUSER=TEST TOUSER=UTMP REMAP_TABLE=COURSE:COURSE1
7 数据库、用户、模式、表空间之间的关系
1)相互关系
一个数据库包含多个用户;
一个用户包含多个模式,一个用户默认拥有一个同名模式。用户创建的对象默认属于自己的模式。模式不可以更改所属用户【模式(Schema)不能直接更换所属用户。模式与用户之间的绑定关系在创建时确定,且系统不支持通过简单语句(如 ALTER SCHEMA … OWNER TO …)修改模式的所有者】;
一个用户可以在多个表空间创建对象【创建用户时若不指定,默认使用 MAIN 表空间;创建用户时可指定默认表空间和索引表空间。】
一个表空间可以被多个用户共享使用;
一个表空间可以包含多个数据文件。
2)完整层级关系(从逻辑到物理)
用户 (User) 登录数据库。
用户在自己的 模式 (Schema) 下创建 表 (Table)。
创建表时,数据被写入用户指定的 表空间 (Tablespace)。
表空间 (Tablespace) 管理并将数据物理写入 数据文件 (.DBF)。
3)一句话总结:
用户管权限,模式管对象,表空间管逻辑存储,数据文件管物理磁盘。
文章
阅读量
获赞
