DM8 dexp&dimp
1 功能简介
DM 数据库的备份还原包括两种类型:物理备份还原和逻辑备份还原。物理备份还原是对数据库的操作系统物理文件(如数据文件、控制文件和日志文件等)的备份还原。例如使用 RMAN 工具进行的备份还原。物理备份还原请参考《DM8 备份与还原》。逻辑备份还原是对数据库逻辑组件(如表、视图和存储过程等数据库对象)的备份还原。例如使用 dexp 和 dimp 进行的备份还原。逻辑备份还原正是本书所要介绍的内容。
逻辑导出(dexp)和逻辑导入(dimp)是 DM 数据库的两个命令行工具,分别用来实现对 DM 数据库的逻辑备份和逻辑还原。逻辑备份和逻辑还原都是在联机方式下完成,联机方式是指数据库服务器正常运行过程中进行的备份和还原 dexp 和 dimp 是 DM 数据库自带的工具,只要安装了 DM 数据库,就可以在安装目录 /dmdbms/bin 中找到。
逻辑导出和逻辑导入数据库对象分为四种级别:数据库级、用户级、模式级和表级。四种级别独立互斥,不能同时存在。四种级别所提供的功能:
- 数据库级(FULL):导出或导入整个数据库中的所有对象。
- 用户级(OWNER):导出或导入一个或多个用户所拥有的所有对象。
- 模式级(SCHEMAS):导出或导入一个或多个模式下的所有对象。
- 表级(TABLES):导出或导入一个或多个指定的表或表分区。
2 dexp 逻辑导出
dexp 工具可以对本地或者远程数据库进行数据库级、用户级、模式级和表级的逻辑备份。备份的内容非常灵活,可以选择是否备份索引、数据行和权限,是否忽略除主键和非空约束外的其他约束,在备份前还可以选择生成日志文件,记录备份的过程以供查看。
dexp 工具名称有两种写法 dexp 和 dexpdp,两者区别在于:dexp 导出的文件必须存放在客户端,dexpdp 导出的文件必须存放在服务器端。另外由于 dexpdp 是将客户端命令发给服务器启动 dexp 执行,如果客户端连接使用 dm_svc.conf 配置,服务器端也应该跟客户端配置一致。
2.1 使用 dexp 工具
dexp 工具需要从命令行启动。在 cmd 命令行工具中找到 dexp 所在安装目录 /dmdbms/bin,输入 dexp 和参数后回车。
dexp USERID=SYSDBA/DMdbatest1@192.168.157.11:5236 FILE=bingot1.dmp LOG=exp_bingot1.log DIRECTORY=/home/dmdba/ tables=bingo.t1,bingo.t2
2.2 dexp 参数一览表
参数 | 含义 | 备注 |
USERID | 数据库的连接信息 | 必选 |
FILE | 明确指定导出文件名称 | 可选 |
LOG | 明确指定日志文件名称 | 可选 |
DIRECTORY | 导出文件所在目录 | 可选 |
FULL | 导出整个数据库(N) | 可选,四者中选其一。缺省为SCHEMAS |
OWNER | 用户名列表,导出一个或多个用户所拥有的所有对象 | |
SCHEMAS | 模式列表,导出一个或多个模式下的所有对象 | |
TABLES | 表名列表,导出一个或多个指定的表或表分区 | |
FUZZY_MATCH | TABLES选项是否启用模糊匹配(N) | 可选 |
QUERY | 用于指定对导出表的数据进行过滤的条件。 | 可选 |
PARALLEL | 用于指定导出的过程中所使用的线程数目(16) | 可选 |
TABLE_PARALLEL | 用于指定导出每张表所使用的线程数(8);在MPP模式下会转换成单线程 | 可选 |
TABLE_POOL | 用于设置导出过程中存储表的缓冲区个数(8) | 可选 |
EXCLUDE | 批量设置导出内容中忽略的对象。 | 可选 |
2. EXCLUDE=TYPE:name1,name2 | ||
3. EXCLUDE=TYPE:cond{,TYPE:cond} | ||
INCLUDE | 批量设置导出时只导出指定的对象种类或某个具体对象。 | 可选 |
2. INCLUDE=TYPE:name1,name2 | ||
3. INCLUDE=TYPE:cond{,TYPE:cond} | ||
TABLESPACE | 导出表空间/表空间组和表空间/表空间组存储选项(N) | 可选 |
CONSTRAINTS | 导出约束 (Y) | 可选 |
GRANTS | 导出权限 (Y) | |
INDEXES | 导出索引 (Y) | |
TRIGGERS | 导出触发器(Y) | |
ROWS | 导出数据行 (Y) | |
NOLOGFILE | 不使用日志文件(N) | 可选 |
NOLOG | 屏幕上不显示日志信息(N) | 可选 |
LOG_WRITE | 日志信息实时写入文件 (N) | 可选 |
DUMMY | 设置交互信息处理方式(P:打印) | 可选 |
PARFILE | 参数文件名,如果dexp的参数很多,可以存成参数文件 | 可选 |
FEEDBACK | 每 x 行显示进度 (0) | 可选 |
COMPRESS | 是否压缩导出数据文件(N) | 可选 |
COMPRESS_LEVEL | 导出数据压缩等级(1)。取值范围0~9 | 可选 |
ENCRYPT | 导出数据是否加密 (N) | 可选, |
ENCRYPT_PASSWORD | 导出数据的加密密钥 | 和ENCRYPT同时使用 |
ENCRYPT_NAME | 导出数据的加密算法 | 可选。 |
和ENCRYPT、ENCRYPT_PASSWORD同时使用。缺省为RC4 | ||
FILESIZE | 用于指定单个导出文件大小的上限。可以按字节[B]、K[B]、M[B]、G[B]的方式指定大小 | 可选 |
FILENUM | 多文件导出时,一个模板可以生成的文件数(99)。取值范围1~99 | 可选 |
DROP | 导出后删除原表,但不级联删除 (N) | 可选 |
DESCRIBE | 导出数据文件的描述信息,记录在数据文件中 | 可选 |
FLASHBACK_SCN | 用于指定导出表数据的闪回LSN,和FLASHBACK_TIME一起使用时只有一个能生效,参数位置靠后的生效 | 可选 |
FLASHBACK_TIME | 用于指定导出表数据的闪回时间,和FLASHBACK_SCN一起使用时只有一个能生效,参数位置靠后的生效 | 可选 |
COL_DEFAULT_SEPARATE | 是否单独导出列(Y) | 可选 |
WITH_UR | 导出表数据是否允许脏读(N) | 可选 |
SIMPLE_LOG | 导出日志是否使用简要日志(N) | 可选 |
CTRL_INFO | 控制信息用来控制一些特殊情况导出(0) | 可选 |
CONFIG_FILE | 配置文件路径,配置默认连接串和密码信息 | 可选 |
FILE_VERSION | 用于指定导出的dmp文件的逻辑版本,有效范围9~28 | 可选 |
HELP | 显示帮助信息 | 可选 |
2.2.1 如何转义双引号
- dexp 和 dimp 要求使用双引号对双引号内的双引号转义。
- WINDOWS 命令行,使用双引号或者反斜杠对双引号内的双引号转义。
- LINUX 命令行,使用反斜杠对双引号内的双引号转义。
2.2.2 DIRECTORY
DIRECTORY 用于指定导出文件及日志文件生成的路径。长度不超过 256 个字符。
使用 dexp 工具时,DIRECTORY 为可选参数,缺省导出到 dexp 所在路径。
使用 dexpdp 工具时,DIRECTORY 为必选参数,并且指定的路径必须是通过 CREATE DIRECTORY 定义的目录名。
//在远程服务器上创建目录
CREATE OR REPLACE DIRECTORY "bingo_expdp" AS '/home/dmdba/expdp';
select * from dba_directories;
//使用dexpdp导出文件
dexpdp.exe USERID=SYSDBA/Dmsys_123@192.168.1.60:5236 FILE=dexpDP.dmp LOG=dexpDP.log FULL=Y DIRECTORY=TESTDIR
3 dimp 逻辑导入
dimp 逻辑导入工具利用 dexp 工具生成的备份文件对本地或远程的数据库进行联机逻辑还原。dimp 导入是 dexp 导出的相反过程。还原的方式可以灵活选择,如是否忽略对象存在而导致的创建错误、是否导入约束、是否导入索引、导入时是否需要编译、是否生成日志等。
dimp 工具名称有两种写法 dimp 和 dimpdp,两者区别在于:dimp 导入的文件必须存放在客户端,dimpdp 导入的文件必须存放在服务器端。另外由于 dimpdp 是将客户端命令发给服务器启动 dimp 执行,如果客户端连接使用 dm_svc.conf 配置,服务器端也应该跟客户端配置一致。
3.1 使用 dimp 工具
dimp 工具需要从命令行启动。在 cmd 命令行工具中找到 dimp 所在安装目录/dmdbms/bin,输入 dimp 和参数后回车。
dimp USERID=SYSDBA/DMdbatest1@192.168.157.11:5236 FILE=bingot1.dmp LOG=imp_bingot1.log DIRECTORY=/home/dmdba/ tables=bingo.t1,bingo.t2 remap_tablespace=BINGO:MAIN remap_schema=bingo:sysdba
3.2 dimp 参数一览表
参数 | 含义 | 备注 |
USERID | 数据库的连接信息 | 必选 |
FILE | 输入文件,即dexp或dexpdp导出的文件 | 可选 |
LOG | 日志文件 | 可选 |
DIRECTORY | 导入文件所在目录 | 可选 |
FULL | 整库导入(N) | 可选,四者中选其一。缺省为导入的文件导出时所用的方式 |
OWNER | 以用户方式导入 | |
SCHEMAS | 以模式方式导入 | |
TABLES | 以表名方式导入,指定导入的tables名称。不支持对外部表进行导入 | |
PARALLEL | 用于指定导入的过程中所使用的线程数目(16) | 可选 |
TABLE_PARALLEL | 用于指定导入的过程中每个表所使用的子线程数目(8) | 可选。在FAST_LOAD为Y时有效 |
IGNORE | 忽略创建错误 (N)。如果表已经存在则向表中插入数据,否则报错表已经存在。 | 可选 |
TABLE_EXISTS_ACTION | 需要的导入表在目标库中存在时采取的操作[SKIP | APPEND | TRUNCATE | REPLACE | TRUNCATE_CASCADE] | 可选 |
FAST_LOAD | 是否使用dmfldr进行数据导入(N) | 可选 |
FLDR_ORDER | 使用dmfldr是否需要严格按顺序来导数据(Y) | 可选 |
COMMIT_ROWS | 批量提交的行数(5000) | 可选 |
EXCLUDE | 批量设置导入时忽略的对象种类。 | 可选 |
2. EXCLUDE=TYPE:name1,name2 | ||
INCLUDE | 批量设置导入时只导入指定的对象种类或某个具体对象。 | 可选 |
2. INCLUDE=TYPE:name1,name2 | ||
GRANTS | 导入权限 (Y) | 可选 |
CONSTRAINTS | 导入约束 (Y) | 可选 |
INDEXES | 导入索引 (Y) | 可选 |
TRIGGERS | 导入触发器(Y) | 可选 |
ROWS | 导入数据行 (Y) | 可选 |
NOLOGFILE | 不使用日志文件(N) | 可选 |
NOLOG | 屏幕上不显示日志信息(N) | 可选 |
DUMMY | 设置交互信息处理(P:打印) | 可选 |
LOG_WRITE | 日志信息实时写入文件(N) | 可选 |
PARFILE | 参数文件名,如果dimp的参数很多,可以存成参数文件 | 可选 |
FEEDBACK | 显示每 x 行 (0) 的进度 | 可选 |
COMPILE | 编译过程, 程序包和函数 (Y) | 可选 |
INDEXFILE | 将表的索引/约束信息写入指定的文件 | 可选 |
INDEXFIRST | 导入时先建索引(N) | 可选 |
REMAP_SCHEMA | SOURCE_SCHEMA:TARGET_SCHEMA 将SOURCE_SCHEMA中的数据导入到TARGET_SCHEMA中 | 可选 |
ENCRYPT_PASSWORD | 数据的加密密钥 | 可选。和dexp中的ENCRYPT_PASSWORD设置的密钥一样 |
ENCRYPT_NAME | 数据的加密算法的名称 | 可选。和dexp中的ENCRYPT_NAME设置的加密算法一样 |
SHOW/ DESCRIBE | 打印出指定文件的信息 (N) | 可选 |
TASK_THREAD_NUMBER | 用于设置dmfldr处理用户数据的线程数目 | 可选 |
BUFFER_NODE_SIZE | 用于设置dmfldr读入文件缓冲区大小 | 可选 |
TASK_SEND_NODE_NUMBER | 用于设置dmfldr发送节点个数,取值范围16~65535 | 可选 |
LOB_NOT_FAST_LOAD | 如果一个表含有大字段,则不使用dmfldr(N) | 可选 |
PRIMARY_CONFLICT | 主键冲突的处理方式,默认报错 | 可选 |
TABLE_FIRST | 是否强制先导入表 (缺省N)。Y表示先导入表,N正常导入 | 可选 |
SHOW_SERVER_INFO | 是否显示服务器信息 (N),Y表示显示导出文件对应服务器信息,实际不导入,N表示不显示导出文件对应服务器信息,正常导入 | 可选 |
IGNORE_INIT_PARA | 指定源库和目标库之间忽略差异的建库参数(0)。0:不忽略建库参数差异,1:忽略CASE_SENSITIVE,2:忽略LENGTH_IN_CHAR,3:忽略CASE_SENSITIVE和LENGTH_IN_CHAR | 可选 |
AUTO_FREE_KEY | 导入数据完成后, 是否释放密钥(N)。Y:是,N:否 | 可选 |
REMAP_TABLE | 格式(SOURCE_TABLE:TARGET_TABLE), | 可选 |
REMAP_TABLESPACE | 格式(SOURCE_TABLESPACE:TARGET_TABLESPACE) | 可选 |
SIMPLE_LOG | 导入日志是否使用简要日志(N) | 可选 |
DATA_ONLY | 是否只导入表数据(N) | 可选 |
INDEX_OPTION | 使用快速装载时索引的设置选项(2)。1:不刷新二级索引,数据按照索引先排序,装载完后再将排序的数据插入索引;2:不刷新二级索引,数据装载完成重建后所有二级索引;刷新二级索引,数据装载的同时将数据插入二级索引 | 可选 |
CTRL_INFO | 控制信息用来控制一些特殊情况导入(0)。0:不导入表空间定义,1:导入表空间定义,2:校验导入文件的MD5值,并执行导入,4:校验导入文件的MD5值,但不执行导入,8:导入对象时忽略OR REPLACE条件 | 可选 |
CONFIG_FILE | 配置文件路径,配置默认连接串和密码信息 | 可选 |
FILE_VERSION | 用于指定将dmp文件降级后生成的新dmp文件的逻辑版本,有效范围9~27 | 可选 |
HELP | 显示帮助信息 | 可选 |
3.2.1 IGNORE
IGNORE 指定忽略创建数据库对象(表、类、java 类、domain、sequence、
comment、view、synonym、trigger、package、dblink、user、存储过程/函数、role 对象创建、权限授权语句、索引、约束等)错误。可选参数。缺省为 N,不忽略。
Y:忽略导入时所产生的创建数据库对象错误并继续执行。
N:不忽略导入时所产生的创建数据库对象错误。遇到错误的表会停止执行并报错,其他正常的表继续执行。缺省值
3.2.2 TABLE_EXISTS_ACTION
TABLE_EXISTS_ACTION 用于要导入的表已经存在时的处理方式。默认为直接报错。
语法如下:
CopyTABLE_EXISTS_ACTION=[SKIP | APPEND | TRUNCATE | REPLACE | TRUNCATE_CASCADE]
SKIP:跳过此表。
APPEND:直接向现有表中导入数据。
TRUNCATE:先删除现有表中的数据,再向表中导入数据。
REPLACE:先删除现有表,再导数据。
TRUNCATE_CASCADE:先删除现有表中的数据,并且级联删除依赖表数据,再向表中导入数据。
4 操作总结
功能上和oracle的exp、expdp、imp、impdp基本一致,语法基本相同。
……
关于达梦数据库更多的相关问题请浏览达梦云适配技术社区
达梦云适配技术社区
https://eco.dameng.com/




