我们一起看看达梦数据库的逻辑备份恢复工具:dexp/dimp
准备工作
针对数据库对象,有 FULL、 OWNER、 SCHEMAS、 TABLES 四种导出方式可供选择。一
次导出只能指定一种方式。 可选参数,缺省为 SCHEMA。
FULL 方式导出整个数据库。
OWNER 方式导出一个或多个用户拥有的所有对象
SCHEMAS 方式的导出一个或多个模式下的所有对象。
TABLES 方式导出和导入一个或多个指定的表或表分区。导出所有数据行、 约束、索引
等信息
参数有很多,有几个参数会比较常用,可以好好的记住。
能提升性能的PARALLEL;
能有选择导出的EXCLUDE和INCLUDE命令;
能节省空间的COMPRESS命令。
另外达梦提供了导出的加密参数 ENCRYPT ENCRYPT_PASSWORD ENCRYPT_NAME,这个是Oracle没有提供的。
[root@dm1 bin]# df -h
文件系统 容量 已用 可用 已用%% 挂载点
/dev/sda1 18G 12G 5.3G 69% /
tmpfs 996M 100K 996M 1% /dev/shm
服务器[localhost:5237]:处于普通打开状态
登录使用时间: 5.864(毫秒)
disql V7.6.0.96-Build(2018.09.19-97292)ENT
Connected to: DM 7.1.6.96
查看当前用户的情况
SQL> select username from dba_users;
行号 USERNAME
1 SYS
2 SYSDBA
3 SYSAUDITOR
4 SYSSSO
5 U1
6 TEST
7 LJB
7 rows got
已用时间: 43.774(毫秒). 执行号:3.
SQL>
导出
同时考虑并行、路径、加密等参数
./dexp USERID=SYSDBA/SYSDBA@localhost:5237 FILE=dbexp_str.dmp LOG=db_str.log FULL=Y DIRECTORY=/dm7/data/dexp ENCRYPT=Y ENCRYPT_PASSWORD=abcdefg ENCRYPT_NAME=DES_CBC parallel=2
[root@dm1 bin]# ./dexp USERID=SYSDBA/SYSDBA@localhost:5237 FILE=dbexp_str.dmp LOG=db_str.log FULL=Y DIRECTORY=/dm7/data/dexp ENCRYPT=Y ENCRYPT_PASSWORD=abcdefg ENCRYPT_NAME=DES_CBC parallel=2
dexp V7.6.0.96-Build(2018.09.19-97292)ENT
导出第 1 个SYSPACKAGE_DEF: SYSTEM_PACKAGES
导出第 2 个SYSPACKAGE_DEF: SYS_VIEW
----- 共导出 2 个SYSPACKAGE_DEF -----
----- 共导出 0 个SYNONYM -----
----- 共导出 0 个DBLINK -----
导出第 1 个USER: U1
导出第 2 个USER: TEST
导出第 3 个USER: LJB
----- 共导出 3 个USER -----
----- 共导出 0 个ROLE -----
----- 共导出 0 个CONTEXT -----
----- 共导出 0 个DIRECTORY -----
----- 共导出 0 个SYSTEM_PRIVILEGE -----
----- 共导出 0 个ROLE_PRIVILEGE -----
导出第 1 个ROLE_PRIVILEGE: DBA
导出第 2 个ROLE_PRIVILEGE: PUBLIC
导出第 3 个ROLE_PRIVILEGE: PUBLIC
导出第 4 个ROLE_PRIVILEGE: DBA
导出第 5 个ROLE_PRIVILEGE: PUBLIC
----- 共导出 5 个ROLE_PRIVILEGE -----
正在导出 第1 个SCHEMA :LJB
开始导出模式[LJB]…
----- 共导出 0 个SEQUENCE -----
----- 共导出 0 个VIEW -----
----- 共导出 0 个TRIGGER -----
----- 共导出 0 个COMMENT TAB -----
----- 共导出 0 个COMMENT COL -----
----- 共导出 0 个PROCEDURE -----
----- 共导出 0 个SYNONYM -----
----- 共导出 0 个DBLINK -----
----- 共导出 0 个TRIGGER -----
----- 共导出 0 个PACKAGE -----
----- 共导出 0 个PKG_BODY -----
----- 共导出 0 个OBJECT of NO REFER OTHER CLASS -----
----- 共导出 0 个OBJECT of REFER OTHER CLASS -----
----- 共导出 0 个JCLASS -----
----- 共导出 0 个CLASS_BODY -----
----- 共导出 0 个DOMAIN -----
导出模式下的对象权限…
----- [2019-10-06 18:06:19]导出表:DEPARTMENTS -----
导出模式下的对象权限…
----- [2019-10-06 18:06:19]导出表:CHANGE_TABLE -----
导出模式下的对象权限…
表DEPARTMENTS导出结束,共导出 3 行数据
----- [2019-10-06 18:06:19]导出表:EMPLOYEES -----
导出触发器: TRIGGER1
导出约束:CONS134218775
导出模式下的对象权限…
表CHANGE_TABLE导出结束,共导出 9 行数据
----- [2019-10-06 18:06:20]导出表:T -----
导出模式下的对象权限…
表EMPLOYEES导出结束,共导出 3 行数据
----- [2019-10-06 18:06:20]导出表:T1 -----
导出索引:IDX_ID_T1
导出模式下的对象权限…
表T1导出结束,共导出 1 行数据
---- [2019-10-06 18:06:20]导出表:T2 -----
导出索引:IDX_ID_T2
导出模式下的对象权限…
表T导出结束,共导出 1307 行数据
----- [2019-10-06 18:06:20]导出表:T3 -----
导出索引:IDX_ID_T3
导出模式下的对象权限…
表T2导出结束,共导出 10 行数据
----- [2019-10-06 18:06:20]导出表:T4 -----
导出索引:IDX_ID_T4
表T3导出结束,共导出 100 行数据
导出模式下的对象权限…
----- [2019-10-06 18:06:20]导出表:T5 -----
导出索引:IDX_ID_T5
导出模式下的对象权限…
表T4导出结束,共导出 1000 行数据
----- [2019-10-06 18:06:21]导出表:T6 -----
导出索引:IDX_ID_T6
导出模式下的对象权限…
表T5导出结束,共导出 10000 行数据
----- [2019-10-06 18:06:26]导出表:T7 -----
导出索引:IDX_ID_T7
导出模式下的对象权限…
表T6导出结束,共导出 100000 行数据
表T7导出结束,共导出 1000000 行数据
模式[LJB]导出结束…
成功导出 第1 个SCHEMA :LJB
正在导出 第2 个SCHEMA :TEST
开始导出模式[TEST]…
----- 共导出 0 个SEQUENCE -----
----- 共导出 0 个VIEW -----
----- 共导出 0 个TRIGGER -----
----- 共导出 0 个COMMENT TAB -----
----- 共导出 0 个COMMENT COL -----
----- 共导出 0 个PROCEDURE -----
----- 共导出 0 个SYNONYM -----
----- 共导出 0 个DBLINK -----
----- 共导出 0 个TRIGGER -----
----- 共导出 0 个PACKAGE -----
----- 共导出 0 个PKG_BODY -----
----- 共导出 0 个OBJECT of NO REFER OTHER CLASS -----
----- 共导出 0 个OBJECT of REFER OTHER CLASS -----
----- 共导出 0 个JCLASS -----
----- 共导出 0 个CLASS_BODY -----
----- 共导出 0 个DOMAIN -----
导出模式下的对象权限…
模式[TEST]导出结束…
成功导出 第2 个SCHEMA :TEST
正在导出 第3 个SCHEMA :U1
开始导出模式[U1]…
----- 共导出 0 个SEQUENCE -----
----- 共导出 0 个VIEW -----
----- 共导出 0 个TRIGGER -----
----- 共导出 0 个COMMENT TAB -----
----- 共导出 0 个COMMENT COL -----
----- 共导出 0 个PROCEDURE -----
----- 共导出 0 个SYNONYM -----
----- 共导出 0 个DBLINK -----
----- 共导出 0 个TRIGGER -----
----- 共导出 0 个PACKAGE -----
----- 共导出 0 个PKG_BODY -----
----- 共导出 0 个OBJECT of NO REFER OTHER CLASS -----
----- 共导出 0 个OBJECT of REFER OTHER CLASS -----
----- 共导出 0 个JCLASS -----
----- 共导出 0 个CLASS_BODY -----
----- 共导出 0 个DOMAIN -----
导出模式下的对象权限…
模式[U1]导出结束…
成功导出 第3 个SCHEMA :U1
正在导出 第4 个SCHEMA :SYSDBA
开始导出模式[SYSDBA]…
----- 共导出 0 个SEQUENCE -----
----- 共导出 0 个VIEW -----
----- 共导出 0 个TRIGGER -----
----- 共导出 0 个COMMENT TAB -----
----- 共导出 0 个COMMENT COL -----
----- 共导出 0 个PROCEDURE -----
----- 共导出 0 个SYNONYM -----
----- 共导出 0 个DBLINK -----
导出第 1 个TRIGGER: A
----- 共导出 1 个TRIGGER -----
----- 共导出 0 个PACKAGE -----
----- 共导出 0 个PKG_BODY -----
----- 共导出 0 个OBJECT of NO REFER OTHER CLASS -----
----- 共导出 0 个OBJECT of REFER OTHER CLASS -----
----- 共导出 0 个JCLASS -----
----- 共导出 0 个CLASS_BODY -----
----- 共导出 0 个DOMAIN -----
导出模式下的对象权限…
----- [2019-10-06 18:07:00]导出表:TAB1 -----
导出模式下的对象权限…
表TAB1导出结束,共导出 3 行数据
模式[SYSDBA]导出结束…
成功导出 第4 个SCHEMA :SYSDBA
共导出 4 个SCHEMA
整个导出过程共花费 41.595 s
成功终止导出, 没有出现警告
[root@dm1 bin]#
导入
导入dimp
./dimp SYSDBA/SYSDBA@localhost:5237 FILE=/dm7/data/dexp/dbexp_str.dmp DIRECTORY=/dm7/data/dimp FULL=Y REMAP_SCHEMA=SYSDBA:bbk ENCRYPT_PASSWORD=abcdefg ENCRYPT_NAME=DES_CBC
dimp V7.6.0.96-Build(2018.09.19-97292)ENT
[警告]不存在的文件路径/dm7/data/dimp
[警告]日志文件创建失败
导入 GLOBAL 对象……
导入 SYSPACKAGES_DEF 对象……
导入 SYSPACKAGES_DEF 对象……
CREATE USER “U1” IDENTIFIED BY WRAPPED ‘lnxbR:t]\e]5S*z1RGT8!ke0!o7u0i%yZ9XLa1IaU0}%)(’;
[警告]Error Code:-2124,第1 行附近出现错误:
对象[U1]已存在
导入 USER 对象……
CREATE USER “TEST” IDENTIFIED BY WRAPPED ‘lnxbR:t]\g_?Sz1U7<(22`IdUX}xNdFpu!1dL)=XBZp@(7’;
[警告]Error Code:-2124,第1 行附近出现错误:
对象[TEST]已存在
导入 USER 对象……
CREATE USER “LJB” IDENTIFIED BY WRAPPED ‘dg}Pn0w[i,gR;U_*@^U#O9w1sx1?DaI\DLx%F3Z\4$2’;
[警告]Error Code:-2124,第1 行附近出现错误:
对象[LJB]已存在
导入 USER 对象……
导入 UR_PRIV 对象……
导入 UR_PRIV 对象……
导入 UR_PRIV 对象……
导入 UR_PRIV 对象……
导入 UR_PRIV 对象……
GLOBAL 对象导入完毕……
导入 SCHEMA 对象……
开始导入模式[LJB]…
导入模式中的 NECESSARY GLOBAL 对象……
模式中的 NECESSARY GLOBAL 对象导入完成……
----- [2019-10-06 18:33:59]导入表:DEPARTMENTS -----
[警告]表已存在,表 DEPARTMENTS 导入失败…
----- [2019-10-06 18:33:59]导入表:CHANGE_TABLE -----
[警告]表已存在,表 CHANGE_TABLE 导入失败…
----- [2019-10-06 18:33:59]导入表:EMPLOYEES -----
[警告]表已存在,表 EMPLOYEES 导入失败…
----- [2019-10-06 18:33:59]导入表:T -----
[警告]表已存在,表 T 导入失败…
----- [2019-10-06 18:33:59]导入表:T1 -----
[警告]表已存在,表 T1 导入失败…
----- [2019-10-06 18:33:59]导入表:T2 -----
[警告]表已存在,表 T2 导入失败…
----- [2019-10-06 18:33:59]导入表:T3 -----
[警告]表已存在,表 T3 导入失败…
----- [2019-10-06 18:33:59]导入表:T4 -----
[警告]表已存在,表 T4 导入失败…
----- [2019-10-06 18:33:59]导入表:T5 -----
[警告]表已存在,表 T5 导入失败…
----- [2019-10-06 18:33:59]导入表:T6 -----
[警告]表已存在,表 T6 导入失败…
----- [2019-10-06 18:33:59]导入表:T7 -----
[警告]表已存在,表 T7 导入失败…
导入模式中的 GLOBAL 对象……
模式中的 GLOBAL 对象导入完成……
模式[LJB]导入完成…
开始导入模式[TEST]…
导入模式中的 NECESSARY GLOBAL 对象……
模式中的 NECESSARY GLOBAL 对象导入完成……
导入模式中的 GLOBAL 对象……
模式中的 GLOBAL 对象导入完成……
模式[TEST]导入完成…
开始导入模式[U1]…
导入模式中的 NECESSARY GLOBAL 对象……
模式中的 NECESSARY GLOBAL 对象导入完成……
导入模式中的 GLOBAL 对象……
模式中的 GLOBAL 对象导入完成……
模式[U1]导入完成…
开始导入模式[SYSDBA]…
导入模式中的 NECESSARY GLOBAL 对象……
模式中的 NECESSARY GLOBAL 对象导入完成……
----- [2019-10-06 18:33:59]导入表:TAB1 -----
创建表 TAB1 …
导入表 TAB1 的数据:3 行被处理
导入模式中的 GLOBAL 对象……
导入 TRIGGER 对象……
模式中的 GLOBAL 对象导入完成……
模式[bbk]导入完成…
导入 SCHEMA_GRANT 对象……
导入 SCHEMA_GRANT 对象……
导入 SCHEMA_GRANT 对象……
导入 SCHEMA_GRANT 对象……
导入 SCHEMA_GRANT 对象……
导入 SCHEMA_GRANT 对象……
导入 SCHEMA_GRANT 对象……
导入 SCHEMA_GRANT 对象……
导入 SCHEMA_GRANT 对象……
导入 SCHEMA_GRANT 对象……
导入 SCHEMA_GRANT 对象……
导入 SCHEMA_GRANT 对象……
导入 SCHEMA_GRANT 对象……
导入 SCHEMA_GRANT 对象……
导入 SCHEMA_GRANT 对象……
ALTER TRIGGER bbk.A COMPILE;
[警告]Error Code:-2103,第1 行附近出现错误:
无效的模式名[BBK]
整个导入过程共花费 4.917 s
成功终止导入, 但出现警告
[root@dm1 bin]#
DEXP/DIMP更常见的用途还是用在一些重要单表的备份上,以下可以只导某些表
SQL> drop table ljb.t1;
操作已执行
已用时间: 68.176(毫秒). 执行号:341.
SQL> drop table ljb.t2;
操作已执行
已用时间: 6.447(毫秒). 执行号:342.
./dimp ljb/LJB123456789@localhost:5237 FILE=/dm7/data/dexp/dbexp_str.dmp DIRECTORY=/dm7/data/dimp tables=ljb.t1, ljb.t2 ENCRYPT_PASSWORD=abcdefg ENCRYPT_NAME=DES_CBC
[root@dm1 bin]# ./dimp ljb/LJB123456789@localhost:5237 FILE=/dm7/data/dexp/dbexp_str.dmp DIRECTORY=/dm7/data/dimp tables=ljb.t1, ljb.t2 ENCRYPT_PASSWORD=abcdefg ENCRYPT_NAME=DES_CBC
dimp V7.6.0.96-Build(2018.09.19-97292)ENT
[警告]不存在的文件路径/dm7/data/dimp
[警告]日志文件创建失败
----- [2019-10-06 19:39:48]导入表:T1 -----
创建表 T1 …
导入表 T1 的数据:1 行被处理
导入表的索引:
IDX_ID_T1
导入成功……
----- [2019-10-06 19:39:48]导入表:T2 -----
创建表 T2 …
导入表 T2 的数据:10 行被处理
导入表的索引:
IDX_ID_T2
导入成功……
整个导入过程共花费 0.120 s
成功终止导入, 但出现警告
[root@dm1 bin]#
查看表果然恢复了
SQL> select count(*) from ljb.t1;
行号 COUNT(*)
1 1
已用时间: 0.463(毫秒). 执行号:361.
SQL>
结论:
导出需要加密,导入就需要解密;
导入对象有重复的时候,不会替代,只会报错;
模式不存在的时候,会新建模式导入
从备份中恢复一些单表,是更常用的一些用法,既是安全机制,也可以用在大的表的迁移中。
达梦数据库知识总结链接贴