在生产环境中,由于网络未放通、没有图形化界面等原因,很多情况下DTS不能直接使用,在这种情况下逻辑导入导出dexp/dimp在达梦库到达梦库的数据迁移中是最直接也是最高效的方式。本文将介绍比较常用的一些参数以及几个常见的场景
指定数据库连接的相关信息,包括用户名、密码、IP和端口号,如下所示
userid='sysdba/"Dameng@123"'@127.0.0.1:5238
在网络能通的情况下,修改IP和端口可以实现远程导出和导入数据库
作为DBA,在进行逻辑导出时使用SYSDBA用户是最好的选择,如果没有这个条件的话也可以使用普通用户。普通用户在常规权限配置下只对该用户下的对象有导出权限,导出其他用户的对象需要有对应的查询权限和DUMP ANY TABLE权限
指定导出的文件名,缺省值为dexp.dmp,命名上一般建议体现出导出的方式和时间,文件格式为.dmp,如下所示
##按TESTUSER1全用户导出
file=exp_TESTUSER1_20260701.dmp
##全库导出
file=exp_FULL_20260701.dmp
也可以在FILE中指定导出的dmp文件存放的目录,如下所示
file=/data/dump/exp_FULL_20260701.dmp
指定导出的文件和日志存放的目录,如下所示
directory=/data/dump
如果不加该参数则以执行dexp命令时所在的目录为dmp文件存放目录,目录也可以在FILE参数中指定,一般来说不用特意添加该参数
指定日志名,缺省值为dexp.log,一般来说除后缀外命名和FILE一致,如
log=exp_FULL_20260701.log
FULL:全库导出,格式为FULL=y,全库导出可能会将SYSDBA等系统用户下的数据一并导出,一般情况下不使用
TABLES:导出指定的表,格式为TABLES=USER1.TAB1,USER2.TAB2,…
SCHEMAS:导出指定的模式,格式同上
OWNER:导出指定的用户,格式同上
一般情况下,OWNER和SCHEMAS实现的效果是一样的,但有时候一个用户下会有多个模式,这时候导出OWNER相当于导出多个SCHEMA
实际情况下OWNER和TABLES是最常用的导出选项
指定导出的线程数,和导出的速度直接挂钩。PARALLEL默认为16,TABLE_PARALLEL默认为8,一般情况下无需更改,大批量的表导出时可视服务器CPU资源情况酌情增加PARALLEL
EXCLUDE:导出时忽略指定类型的对象
INCLUDE:导出时只导出指定类型的对象
两者的格式一致,均为
EXCLUDE/INCLUDE=CONSTRAINTS,INDEXES,ROWS,TRIGGERS,GRANTS,VIEWS,PROCEDURE,PACKAGE,SEQUENCE,TABLES,STATISTICS,HINT
CONSTRAINTS:是否导出约束,缺省值为Y
GRANTS:是否导出权限,缺省值为Y
INDEXES:是否导出索引,缺省值为Y
TRIGGERS:是否导出触发器,缺省值为Y
ROWS:是否导出数据行,缺省值为Y
和EXCLUDE/INCLUDE参数实现的功能相似,两者取一个使用即可
指定导出表的WHERE过滤条件,格式为
QUERY=USERNAME1.TABLE_NAME1:"where ***",USERNAME2.TABLE_NAME2:"where ***"
应用案例可参考
显示参数的相关帮助信息
dimp大部分参数和dexp一致,一般来说dexp导出时已经限制了需要导入的数据,dimp全库导入即可
dimp独有的需要的注意的参数如下
指定当导入表已经存在时要执行的操作,可选项有SKIP、APPEND、TRUNCATE、REPLACE、TRUNCATE_CASCADE
SKIP:跳过已存在的表去处理下一个对象
APPEND:追加数据,插入到已存在的表中
TRUNCATE:删除现有表中的所有数据,再导入新数据
REPLACE:DROP原表并以dmp文件为准重新建表,再导入数据。如果源端和目标端表结构不一致且目标端原有的表的数据无需保留,可以使用REPLACE导入数据
TRUNCATE_CASCADE:删除现有表中的所有数据。并级联删除依赖表的数据,再导入新数据
指定导入的模式,当源端导出的模式和目标端导入的模式不一致时需要使用该参数,格式为
REMAP_SCHEMA=USERNAME1:USERNAME2
指定导入的表,需要将源端表的数据导入到目标端另一张表或者需要导入时修改表名可以使用该参数,格式为
REMAP_TABLE=TABLE_NAME1:TABLE_NAME2
指定导入的表空间,将导出的原表所在的表空间映射到目标端另一个表空间时需要使用该参数,该参数需要在导出时添加TABLESPACE=Y配合使用,由于导出时不指定表空间会在导入时导入到用户的默认表空间,因此该参数一般无需使用
不进行数据导入,而是将导入的sql语句生成文件,该参数不能和TABLE_EXISTS_ACTION一起使用
sqlfile=imp_full_20260701.sql
用处很多,例如需要单独提取索引的创建语句并添加并行时可以使用
dexp userid='sysdba/"Dmdb#1234"':5238 file=/home/dmdba/exp_DMPUSER_20260701.dmp log=/home/dmdba/exp_DMPUSER_20260701.log owner=DMP_USER
dexp userid='sysdba/"Dmdb#1234"':5238 file=/home/dmdba/exp_DMPUSER_20260701_2.dmp log=/home/dmdba/exp_DMPUSER_20260701_2.log owner=DMP_USER include=tables
dimp userid='sysdba/"Dmdb#1234"':5238 file=/home/dmdba/exp_DMPUSER_20260701_2.dmp log=/home/dmdba/imp_DMPUSER_20260701_2.log full=y sqlfile=DMP_USER.sql
生成的SQL文件如下
文章
阅读量
获赞
