1、概念
逻辑备份还原是对数据库逻辑组件(如表、视图和存储过程等数据库对象)的备份还原。逻辑导出(dexp)和逻辑导入(dimp)是 DM 数据库的两个命令行工具,分别用来实现对 DM 数据库的逻辑备份和逻辑还原。逻辑备份和逻辑还原都是在联机方式下完成,即在数据库服务器正常运行过程中进行的备份和还原。
2、DEXP
DEXP逻辑导出有FULL、OWNER、SCHEMAS、TABLES四种级别的。
2.1全库备份
FULL 方式导出数据库的所有对象。
[dmdba@lei2 ~]$ dexp USERID=lei/leileilei FILE=fulldb0903.dmp LOG=fulldb0903.log FULL=Y DIRECTORY=/dmdba/dmbak/
...
整个导出过程共花费 7.295 s
成功终止导出, 没有出现警告
[dmdba@lei2 ~]$ ll /dmdba/dmbak/
total 360
-rw-rw-r-- 1 dmdba dmdba 345188 Sep 2 15:22 fulldb0903.dmp
-rw-rw-r-- 1 dmdba dmdba 19824 Sep 2 15:22 fulldb0903.log
2.2OWNER备份
OWNER 方式导出一个或多个用户拥有的所有对象。
[dmdba@lei2 ~]$ dexp USERID=lei/leileilei FILE=lei0903.dmp LOG=lei0903.log OWNER=lei DIRECTORY=/dmdba/dmbak
...
整个导出过程共花费 0.328 s
成功终止导出, 没有出现警告
[dmdba@lei2 ~]$ ll /dmdba/dmbak/*lei*
-rw-rw-r-- 1 dmdba dmdba 204506 Sep 2 15:27 /dmdba/dmbak/lei0903.dmp
-rw-rw-r-- 1 dmdba dmdba 2187 Sep 2 15:27 /dmdba/dmbak/lei0903.log
2.3SCHEMA备份
SCHEMAS 方式的导出一个或多个模式下的所有对象。
[dmdba@lei2 ~]$ dexp USERID=lei/leileilei FILE=schema_lei0903.dmp LOG=schema_lei0903.log SCHEMAS=lei DIRECTORY=/dmdba/dmbak
...
整个导出过程共花费 0.318 s
成功终止导出, 没有出现警告
[dmdba@lei2 ~]$ ll /dmdba/dmbak/schema*
-rw-rw-r-- 1 dmdba dmdba 204232 Sep 2 15:29 /dmdba/dmbak/schema_lei0903.dmp
-rw-rw-r-- 1 dmdba dmdba 2142 Sep 2 15:29 /dmdba/dmbak/schema_lei0903.log
2.4TABLE备份
TABLES方式导出一个或多个指定的表或表分区。导出所有数据行、约束、索引等信息。
[dmdba@lei2 ~]$ dexp USERID=lei/leileilei FILE=lei_t2.dmp LOG=lei_t2.log TABLES=lei.t2 DIRECTORY=/dmdba/dmbak
...
整个导出过程共花费 0.095 s
成功终止导出, 没有出现警告
[dmdba@lei2 ~]$ ll /dmdba/dmbak/*t2*
-rw-rw-r-- 1 dmdba dmdba 113767 Sep 2 15:31 /dmdba/dmbak/lei_t2.dmp
-rw-rw-r-- 1 dmdba dmdba 427 Sep 2 15:31 /dmdba/dmbak/lei_t2.log
3、DIMP
DIMP导入也有四种级别:FULL、OWNER、SCHEMAS、TABLES。
3.1全库还原
FULL 方式导入数据库的所有对象。
SQL> drop user lei cascade;
操作已执行
已用时间: 48.362(毫秒). 执行号:65501.
[dmdba@lei2 ~]$ dimp USERID=SYSDBA/SYSDBA FILE=/dmdba/dmbak/lei0903.dmp LOG=/dmdba/dmbak/dimp_lei0903.log FULL=Y DIRECTORY=/dmdba/dmbak
...
[2/13]整个导入过程共花费 0.048 s
成功终止导入, 出现9个警告
3.2OWNER还原
OWNER 方式导入一个或多个用户拥有的所有对象。
[dmdba@lei2 ~]$ dimp USERID=SYSDBA/SYSDBA FILE=/dmdba/dmbak/lei0903.dmp LOG=/dmdba/dmbak/dimp_lei0903.log OWNER=lei DIRECTORY=/dmdba/dmbak
...
整个导入过程共花费 10.135 s
3.3SCHEMA还原
SCHEMAS 方式的导入一个或多个模式下的所有对象。
[dmdba@lei2 ~]$ dimp USERID=SYSDBA/SYSDBA FILE=/dmdba/dmbak/schema_lei0903.dmp LOG=/dmdba/dmbak/dimp_schema_lei0903.log SCHEMAS=lei DIRECTORY=/dmdba/dmbak
3.4TABLE还原
TABLES方式导入一个或多个指定的表或表分区。导出所有数据行、约束、索引等信息。

[dmdba@lei2 ~]$ dimp USERID=SYSDBA/SYSDBA FILE=lei_t2.dmp LOG=dimp_lei_t2.log TABLES=lei.t2 DIRECTORY=/dmdba/dmbak
4、常用参数示例
4.1TABLE_EXISTS_ACTION
需要的导入表在目标库中存在时采取的操作[SKIP | APPEND | TRUNCATE | REPLACE | TRUNCATE_CASCADE]
SKIP:跳过此表。
APPEND:直接向现有表中导入数据。
TRUNCATE:先删除现有表中的数据,再向表中导入数据。
REPLACE:先删除现有表,再导数据。
TRUNCATE_CASCADE:先删除现有表中的数据,并且级联删除依赖表数据,再向表中导入数据。
[dmdba@lei2 ~]$ dimp USERID=SYSDBA/SYSDBA FILE=lei_t5.dmp LOG=dimp_lei_t5.log TABLES=lei.t5 DIRECTORY=/dmdba/dmbak TABLE_EXISTS_ACTION=REPLACE
[dmdba@lei2 ~]$ dimp USERID=SYSDBA/SYSDBA FILE=lei_t5.dmp LOG=dimp_lei_t5.log TABLES=lei.t5 DIRECTORY=/dmdba/dmbak TABLE_EXISTS_ACTION=APPEND
[dmdba@lei2 ~]$ dimp USERID=SYSDBA/SYSDBA FILE=lei_t5.dmp LOG=dimp_lei_t5.log TABLES=lei.t5 DIRECTORY=/dmdba/dmbak TABLE_EXISTS_ACTION=TRUNCATE
[dmdba@lei2 ~]$ dimp USERID=SYSDBA/SYSDBA FILE=lei_t5.dmp LOG=dimp_lei_t5.log TABLES=lei.t5 DIRECTORY=/dmdba/dmbak TABLE_EXISTS_ACTION=TRUNCATE_CASCADE
[dmdba@lei2 ~]$ dimp USERID=SYSDBA/SYSDBA FILE=lei_t5.dmp LOG=dimp_lei_t5.log TABLES=lei.t5 DIRECTORY=/dmdba/dmbak TABLE_EXISTS_ACTION=SKIP
4.2REMAP_SCHEMA
SOURCE_SCHEMA:TARGET_SCHEMA 将SOURCE_SCHEMA中的数据导入到TARGET_SCHEMA中。
<source_schema>:源模式。如果指定的源模式不存在,则导入到对象原来所在的模式。
<target_schema>:目标模式。如果目标模式不存在,先创建目标模式,再继续导入。
[dmdba@lei2 ~]$ dimp USERID=SYSDBA/SYSDBA FILE=lei_t5.dmp LOG=dimp_lei_t5.log TABLES=lei.t5 DIRECTORY=/dmdba/dmbak REMAP_SCHEMA=lei:ray
SQL> select count(*) from lei.t5;
行号 COUNT(*)
---------- --------------------
1 2
已用时间: 0.564(毫秒). 执行号:9002.
SQL> select count(*) from ray.t5;
行号 COUNT(*)
---------- --------------------
1 2
已用时间: 0.559(毫秒). 执行号:9003.
4.3REMAP_TABLESPACE
(SOURCE_TABLESPACE:TARGET_TABLESPACE)将SOURCE_TABLESPACE表空间映射到TARGET_TABLESPACE表空间中
<SOURCE_TABLESPACE>:源表空间。
<TARGET_TABLESPACE>:目的表空间。
[dmdba@lei2 ~]$ dimp USERID=SYSDBA/SYSDBA FILE=lei_t5.dmp LOG=dimp_lei_t5.log TABLES=lei.t5 DIRECTORY=/dmdba/dmbak REMAP_TABLESPACE=dmhr:main
4.3REMAP_TABLESPACE
(SOURCE_TABLESPACE:TARGET_TABLESPACE)将SOURCE_TABLESPACE表空间映射到TARGET_TABLESPACE表空间中
<SOURCE_TABLESPACE>:源表空间。
<TARGET_TABLESPACE>:目的表空间。
[dmdba@lei2 ~]$ dimp USERID=SYSDBA/SYSDBA FILE=lei_t5.dmp LOG=dimp_lei_t5.log TABLES=lei.t5 DIRECTORY=/dmdba/dmbak REMAP_TABLESPACE=dmhr:main
4.4PARALLEL
PARALLEL 用于指定导入的过程中所使用的线程数目。可选参数。如果 CPU 核数为 N 的话,那一般来说 PARALLEL 为 N 或者 N+1 最合适。
[dmdba@lei2 ~]$ dimp USERID=SYSDBA/SYSDBA FILE=lei_t5.dmp LOG=dimp_lei_t5.log TABLES=lei.t5 DIRECTORY=/dmdba/dmbak table_exists_action=replace parallel=4
更多内容请参考:https://eco.dameng.com