dexp 与 dimp简介
逻辑导出(dexp)和逻辑导入(dimp)是 DM 数据库的两个命令行工具,分别用来实现对 DM 数据库的逻辑备份和逻辑还原。逻辑备份和逻辑还原都是在联机方式下完成,联机方式是指数据库服务器正常运行过程中进行的备份和还原。dexp 和 dimp 是 DM 数据库自带的工具,只要安装了 DM 数据库,就可以在安装目录/dmdbms/bin 中找到。
逻辑导出和逻辑导入数据库对象分为四种级别:数据库级、用户级、模式级和表级。
- 四种级别独立互斥,不能同时存在。四种级别所提供的功能:
- 数据库级(FULL):导出或导入整个数据库中的所有对象。
- 用户级(OWNER):导出或导入一个或多个用户所拥有的所有对象。
- 模式级(SCHEMAS):导出或导入一个或多个模式下的所有对象。
- 表级(TABLES):导出或导入一个或多个指定的表或表分区
下面列举一些常用的操作命令对比,大家感觉一下相关操作的差距:
逻辑导出
- DM 导出全库:
dexp USERID=SYSDBA/oracle123 FULL=Y FILE=db_str.dmp DIRECTORY=/home/dmdba LOG=db_str.log
- Oracle 导出全库
expdp system/manager DIRECTORY=DP_DIR DUMPFILE=full.dmp FULL=y;
- DM 导出用户:two
dexp USERID=two/two OWNER=two FILE=two.dmp DIRECTORY=/home/dmdba LOG=two.log
- Oracle 导出用户:two
expdp two/'two' directory=dp_dir dumpfile=two.dmp
- DM 导出表:
# 导出表:t
[dmdba@localhost ~]$ dexp USERID=two/two TABLES=t FILE=t.dmp DIRECTORY=/home/dmdba LOG=t.log
# 导出表:t、t1
dexp USERID=two/two TABLES=t,t1 FILE=t.dmp DIRECTORY=/home/dmdba LOG=t.log
# 导出分区表:callinfo,分区:p1,参数说明:TABLE_PARALLEL=3 线程数为 3
dexp USERID=two/two TABLES=callinfo:p1 FILE=callinfo_p1.dmp DIRECTORY=/home/dmdba LOG=callinfo_p1.log TABLE_PARALLEL=3
- 导出分区表示列:
-- 创建分区语句:
SQL>
2 CREATE TABLE callinfo(
3 caller CHAR(15),
4 callee CHAR(15),
5 time DATETIME,
6 duration INT
7 )
8 PARTITION BY RANGE(time)(
9 PARTITION p1 VALUES LESS THAN ('2010-04-01'),
10 PARTITION p2 VALUES LESS THAN ('2010-07-01'),
11 PARTITION p3 VALUES LESS THAN ('2010-10-01'),
12 PARTITION p4 VALUES EQU OR LESS THAN (MAXVALUE)
13 );
操作已执行
已用时间: 16.777(毫秒). 执行号:5206.
- Oracle 导出表
# 导出表
expdp two/'two' directory=dp_dir dumpfile=t.dmp tables=t
# 导出分区表
expdp two/'two' directory=dp_dir dumpfile=t_p1.dmp tables=t1:p1
逻辑导入
- DM 全库导入
dimp USERID=SYSDBA/oracle123 FULL=Y FILE=db_str.dmp DIRECTORY=/home/dmdba LOG=db_str.log
- Oracle 全库导入
impdp system/manager DIRECTORY=DP_DIR DUMPFILE=full.dmp FULL=y;
- DM 按用户导入
dimp USERID=two/two OWNER=two FILE=two.dmp DIRECTORY=/home/dmdba LOG=two.log
- Oracle 导入用户:two
impdp two/'two' directory=dp_dir dumpfile=two.dmp
- DM 按表导入
dimp USERID=two/two TABLES=t,t1 FILE=t.dmp DIRECTORY=/home/dmdba LOG=t.log
- Oracle 按表导入
impdp two/'two' directory=dp_dir dumpfile=t.dmp tables=t
- 示例:按表导入
- DM TABLE_EXISTS_ACTION
TABLE_EXISTS_ACTION 用于要导入的表已经存在时的处理方式。默认为直接报错。
语法如下:
TABLE_EXISTS_ACTION=[SKIP | APPEND | TRUNCATE | REPLACE]
SKIP:跳过此表。
APPEND:直接向现有表中导入数据
TRUNCATE:先删除现有表中的数据,再向表中导入数据
REPLACE:先删除现有表,再导数据 - Oracle 相关参数说明及操作
#SKIP:默认操作:跳过此表
impdp system/sys directory=expdp_dir dumpfile=t.dmp logfile=t.log TABLE_EXISTS_ACTION=SKIP
#APPEND:在原来数据的基础上增加数据
impdp system/sys directory=expdp_dir dumpfile=t.dmp logfile=t.log TABLE_EXISTS_ACTION=APPEND
#REPLACE:先drop表,然后创建表,最后插入数据
impdp system/sys directory=expdp_dir dumpfile=t.dmp logfile=t.log TABLE_EXISTS_ACTION=REPLACE
#TRUNCATE:先truncate,然后再插入数据
impdp system/sys directory=expdp_dir dumpfile=t.dmp logfile=t.log TABLE_EXISTS_ACTION=TRUNCATE
远程dexp 与 dimp
- dexp
[dmdba@localhost ~]$ dexp two/two@192.168.5.137:5236 FILE=two.dmp LOG=two.log DIRECTORY=/home/dmdba FULL=Y
- dimp
[dmdba@dm206 ~]$ dimp two/two@192.168.5.137:5236 FILE=two.dmp LOG=two.log DIRECTORY=/home/dmdba FULL=Y
dexpdp与dimpdp
- dimpdp、dexpdp与dexp、dixp 语法相同。
- 唯一的区别在于,dexp 导出的文件必须存放在客户端,dexpdp 导出的文件必须存放在服务器端。dimpdp同理
--先连接上远程的数据库服务器 192.168.60
disql SYSDBA/oracle123@192.168.5.137
--在远程服务器上创建目录
CREATE OR REPLACE DIRECTORY "GYFDIR" AS '/home/dmdba';
--使用 dexpdp 导出文件
dexpdp USERID=two/two@192.168.5.137:5236 FILE=two.dmp LOG=two.log FULL=Y DIRECTORY=GYFDIR
备份脚本
- 简单写了个导出脚本供参考:
#!/bin/sh
source /home/dmdba/.bash_profile
#清除备份文件
if [ -f /home/dmdba/two.dmp ];then
rm -rf /home/dmdba/two.dmp
fi
#导出命令
dexp USERID=two/two OWNER=two FILE=two.dmp DIRECTORY=/home/dmdba LOG=two.log
#清除昨天的备份文件
y_dir=`date +%Y-%m-%d -d "1 day ago"`
if [ -d /home/dmdba/$y_dir ];then
rm -rf /home/dmdba/$y_dir
fi
#生成今天的备份目录
f_dir=`date +%Y-%m-%d`
if [ -d /home/dmdba/$f_dir ];then
rm -rf /home/dmdba/$f_dir
mkdir /home/dmdba/$f_dir
else
mkdir /home/dmdba/$f_dir
fi
#打包:
tar -zcvPf /home/dmdba/two.tar.gz /home/dmdba/two*
#删除
rm -rf /home/dmdba/two.dmp
#迁移到今天的备份目录
mv /home/dmdba/two* /home/dmdba/$f_dir
总结
达梦的(dexp/dimp)与Oracle的(exp/imp)的命令操作非常相似,操作也是比较简单。
最后修改时间:2023-12-28 22:30:45
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。