参数
|
参数含义
|
默认值
|
FULL
|
是否导出整个数据库
|
N
|
FUZZY_MATCH
|
TABLES选项是否支持模糊匹配
|
N
|
CONSTRAINTS
|
是否导出约束
|
Y
|
TABLESPACE
|
导出的对象定义是否包含表空间
|
N
|
GRANTS
|
是否导出权限
|
Y
|
INDEXES
|
是否导出索引
|
Y
|
TRIGGERS
|
是否导出触发器
|
Y
|
ROWS
|
是否导出数据行
|
Y
|
NOLOGFILE
|
不使用日志文件
|
N
|
NOLOG
|
屏幕上不显示日志信息
|
N
|
LOG_WRITE
|
日志信息实时写入文件
|
N
|
COMPRESS
|
是否压缩导出数据文件
|
N
|
ENCRYPT
|
导出数据是否加密
|
N
|
DROP
|
导出后删除原表,但不级联删除
|
N
|
LOCAL
|
MPP环境使用MPP_LOCAL登录
|
N
|
参数注意事项:
- TABLESPACE参数可解决数据恢复更换表空间的问题(可对比Oracle的REMAP_TABLESPACE参数),在做数据备份时需要提前为数据恢复做考虑。
- COMPRESS参数可对备份数据进行压缩以节省备份空间,但要注意开启压缩后,无论数据备份还是数据恢复速度都会变慢。
- PWD密码中带有特殊字符(/,@.:等),需要外加三层双引号("""""")进行转义。
- FILE和LOG中指定的路径,优先级高于DIRECTORY中指定的路径。如果都没有指定路径,则使用系统当前路径。
- 对象(CONSTRAINTS、GRANTS、INDEXES、TRIGGERS、ROWS)分别单独设置,和EXCLUDE/INCLUDE中批量设置功能一样。如果单独设置和批量同时出现时,以最后出现的为准。
- 对于导出单个文件过大的情况,可使用FILESIZE限制单个文件上限,同时配合FILE参数中的%u来自动扩展文件名,配合FILENUM控制文件个数。
- 对于命令过于复杂,长度过长的可使用PARFILE进行命令封装。
2、备份测试
2.1、测试案例1-导出schemas

- dxep xxx/xxx@10.100.x.x:5236 directory=/dmdata file=exp.test1.dmp log=exp.test1.log schemas=test1
2.2、测试用例2-导出tables,并使用query过滤age小于20的记录
- dexp xxx/xxx@10.100.x.x:5236 directory=/dmdata file=exp.test1_1.dmp log=exp.test1_1.log tables=test1.test query=" WHERE AGE<20"
2.3、测试用例3-导出tables,并指定定义表空间为test1data(后续恢复时验证)
- dexp xxx/xxx@10.100.x.x:5236 directory=/dmdata file=exp.test1_2.log tables=test1.test tablespace=Y
(二)逻辑恢复
1、参数及注意事项
参数及默认值内容详见官方手册。在此只列出部分带有默认值的参数作为强化记忆。并对注意事项进行备注说明。
参数
|
参数含义
|
默认值
|
FULL
|
是否导入整个数据库
|
N
|
IGNORE
|
忽略创建错误
|
N
|
FAST_LOAD
|
是否使用dmfldr进行数据导入
|
N
|
GRANTS
|
是否导入权限
|
Y
|
CONSTRAINTS
|
是否导入约束
|
Y
|
INDEXES
|
是否导入索引
|
Y
|
TRIGGERS
|
是否导入触发器
|
Y
|
ROWS
|
是否导入数据行
|
Y
|
NOLOGFILE
|
不使用日志文件
|
N
|
NOLOG
|
屏幕上不显示日志信息
|
N
|
LOG_WRITE
|
日志信息实时写入文件
|
N
|
COMPILE
|
编译过程、程序包和函数
|
Y
|
INDEXFIRST
|
导入时先创建索引
|
N
|
TABLE_FIRST
|
是否强制导入表
|
N
|
LOCAL
|
MPP环境使用MPP_LOCAL登录
|
N
|
参数注意事项:
- 一般情况下,OWNER和SCHEMAS导入导出是相同的,但是用户可以包含多个模式,在这种情况下SCHEMAS的导入导出是OWNER导入导出的一个子集。
- 当FAST_LOAE=Y是才可以设置TABLE_PARALLEL参数,否则参数无效。
2、恢复测试
2.1、恢复用例1-将测试用例1恢复至test2模式下
- dimp xxx/xxx@10.100.x.x:5236 directory=/dmdata file=exp.test1.dmp log=imp_test1.log remap_schema=TEST1:TEST2
查看test所属表空间:可以看到由于备份时未指定tablespace选项,导出test表定义时未包含表空间,直接恢复到test2的默认表空间test2data中。

2.2、恢复用例2-将测试用例2恢复到test2模式下
- dimp xxx/xxx@10.100.x.x:5236 directory=/dmdata file=exp.test1_1.dmp log=imp.test1_1.log remap_schema=TEST1:TEST2
查看表数据:可以看到确为age小于20的2条记录。

2.3、恢复用例3-将测试用例3恢复到test2模式下
- dimp xxx/xxx@10.100.x.x:5236 directory=dmdata file=exp.test1_2.dmp log=imp.test1_2.log remap_schema=TEST1:TEST2
查看test所属表空间:可以看到由于备份时指定tablespace选项为Y,导出test表定义时包含表空间test1data,恢复时就直接恢复到test1data表空间中。

(三)Oracle和达梦数据库逻辑备份对比
将Oracle数据库TEST用户TEST01表迁移至达梦数据库,都执行逻辑备份,对比时间和数据量。
|
Oracle
|
达梦
|
导出数据量(不压缩)
|
7G
|
8.5G
|
导出用时(不压缩)
|
4分18秒
|
7分23秒
|
导出数据量(压缩)
|
1.4G
|
1.4G
|
导出用时(压缩)
|
5分5秒
|
10分17秒
|
1、Oracle逻辑备份


- 导出测试1:不压缩,导出大小为7G,用时4分18秒。
- 导出测试2:压缩,导出大小为1.4G,用时5分5秒。
2、达梦逻辑备份

- 导出测试1:不压缩,导出大小为8.5G,用时7分23秒。
- 导出测试2:压缩,导出大小为1.4G,用时10分17秒。
(四)Oracle和达梦数据库逻辑恢复对比
导入对象为上一小节中导出的TEST用户TEST01表。
|
Oracle
|
达梦
|
恢复用时(不压缩)
|
3分55秒
|
11分11秒
|
恢复用时(压缩)
|
6分16秒
|
11分10秒
|
1、Oracle逻辑恢复
2、达梦逻辑恢复