前言
逻辑导出(dexp)和逻辑导入(dimp)是 DM 数据库的两个命令行工具,分别用来实现对 DM 数据库的逻辑备份和逻辑还原。逻辑备份和逻辑还原都是在联机方式下完成,联机方式是指数据库服务器正常运行过程中进行的备份和还原。dexp 和 dimp 是 DM 数据库自带的工具,只要安装了 DM 数据库,就可以在安装目录/dmdbms/bin 中找到。
功能简介
逻辑导出和逻辑导入数据库对象分为四种级别:数据库级、用户级、模式级和表级。四种级别独立互斥,不能同时存在。四种级别所提供的功能:
- 数据库级(FULL):导出或导入整个数据库中的所有对象。
- 用户级(OWNER):导出或导入一个或多个用户所拥有的所有对象。
- 模式级(SCHEMAS):导出或导入一个或多个模式下的所有对象。
- 表级(TABLES):导出或导入一个或多个指定的表或表分区。
注意事项
- 数据库版本 :源端导出的客户端版本号要低于导入目的端客户端版本号;
- 参数一致 : 页大小、簇大小以及字符集编码必须一致,大小写是否敏感、VARCHAR类型是否以字符为单位需要配置 IGNORE_INIT_PARA 忽略差异;
- 导入导出保持一致 : 全库导出的DMP,目的端需要全库导入;按用户权限导出的DMP,目的端所使用用户权限要保持一致;
- 导入导出模式不同 : 需要使用命令行配置参数 REMAP_SCHEMA 映射源端模式名与目的端模式名;
DEXP 工具常规使用
- 参数 USERID 必须置于首位,此外的多个参数之间排列顺序无影响,参数之间使用空格间隔;
## 导出模式 USER01 模式下的所有对象。
dexp USERID=SYSDBA/SYSDBA@192.168.30.179:5237 FILE=db_str.dmp LOG=db_str.log SCHEMAS=USER01 DIRECTORY=/mnt/data/dexp
## 导出 table1,table2 两张表的所有数据和信息。
dexp USERID=SYSDBA/SYSDBA@192.168.30.179:5237 FILE=db_str.dmp LOG=db_str.log TABLES=table1,table2 DIRECTORY=/mnt/data/dexp
## FUZZY_MATCH 用于指定 TABLES 选项是否支持模糊匹配
dexp USERID=SYSDBA/SYSDBA@192.168.30.179:5237 FILE=db_str.dmp LOG=db_str.log TABLES=OTHER.R% FUZZY_MATCH=Y
## QUERY 用于指定过滤条件来对表数据进行导出
dexp USERID=SYSDBA/SYSDBA@192.168.30.179:5237 FILE=db_str.dmp LOG=db_str.log TABLES=OTHER.READER QUERY="WHERE AGE=19"
## PARALLEL 用于指定导出的过程中所使用的线程数目,如果CPU 核心数为 N 的话,那一般来说 PARALLEL 为 N 或者 N+1 最合适
dexp USERID=SYSDBA/SYSDBA@192.168.30.179:5237 FILE=db_str.dmp LOG=db_str.log FULL=Y DIRECTORY=/mnt/data/dexp PARALLEL=2
## TABLE_PARALLEL 用于指定导出每张表所使用的线程数。可选参数,缺省为单线程。如果 CPU 核数为 N 的话,那一般来说 TABLE_PARALLEL 为 N 或者 N+1 最合适
dexp USERID=SYSDBA/SYSDBA@192.168.30.179:5237 FILE=db_str.dmp LOG=db_str.log FULL=Y DIRECTORY=/mnt/data/dexp TABLE_PARALLEL=3
## EXCLUDE 用来批量设置导出时忽略的对象种类,将当前用户下的 table1、table2 的对象信息导出时不导出约束
dexp SYSDBA/SYSDBA192.168.30.179:5237 FILE=/mnt/data/db_str.dmp LOG=db_str.log TABLES=table1,table2 EXCLUDE=/(CONSTRAINTS/)
## INCLUDE 用来批量设置导出时包含的对象种类。可选参数。<对象种类名>:CONSTRAINTS、INDEXES、ROWS、TRIGGERS 或 GRANTS。
dexp USERID=SYSDBA/SYSDBA FILE=db_str.dmp LOG=db_str.log TABLES=table1 DIRECTORY=/mnt/data/dexp INCLUDE=/(CONSTRAINTS,INDEXES/)
DEXP 参数解析
- 如果单独设置和批量设置同时出现时,那么以最后出现的那个为准;
- CONSTRAINTS:设置是否导出约束,可选参数。取值范围:Y/N。Y:导出约束,缺省值;N:不导出约束。
- TABLESPACE:设置导出的对象定义中是否包含表空间,可选参数。取值范围:N/Y。N:不包含表空间,缺省值;Y:包含表空间。
- GRANTS:设置是否导出权限,可选参数。取值范围:Y/N。Y:导出权限,缺省值;N:不导出权限。
- INDEXES:设置是否导出索引,可选参数。取值范围:Y/N。Y:导出索引,缺省值;N:不导出索引。
- TRIGGERS:设置是否导出触发器,可选参数。取值范围:Y/N。Y:导出触发器,缺省值;N:不导出触发器。
- ROWS:设置是否导出数据,可选参数。取值范围:Y/N。Y:导出数据,缺省值;N:不导出数据。
- NOLOGFILE 用于设置是否使用日志文件。可选参数。
- NOLOG 设置屏幕上是否显示日志信息。可选参数。
- LOG_WRITE 用于日志信息实时写入日志文件。可选参数。
- DUMMY 用于设置交互信息处理。可选参数,缺省使用 P 打印交互信息。Y:不提供交互界面,所有交互都按 YES 处理。N:不提供交互界面,所有交互都按 NO 处理。
- PARFILE 用于将常用的参数设置保存到文件中。
- FEEDBACK 用来指明在导出数据的过程中每间隔多少行打印一次进度信息。
- COMPRESS 指定是否压缩导出文件。可选参数。缺省为不压缩。
- ENCRYPT、ENCRYPT_PASSWORD、ENCRYPT_NAME 三个参数用来设置导出文件加密。可选参数。
- FILESIZE 用于指定单个导出文件(FILE)大小或日志文件(LOG)大小的上限。可以按字节[B]、K[B]、M[B]、G[B]的方式指定大小。可选参数。
- FILENUM 用于指定一个模板导出文件的个数。取值范围为 1~99,缺省为 99。可选参数。FILENUM 需要和 FILESIZE 搭配使用 FILENUM*FILESIZE 要大于等于导出的文件总大小,否则会报错空间不足。
- DESCRIBE 用于设置导出数据文件的描述信息,记录在数据文件中。可选参数。
- COL_DEFAULT_SEPARATE 用于设置是否单独导出列默认值。可选参数。
- WITH_UR 用于设置导出数据是否允许脏读。可选参数。
- SIMPLE_LOG 用于设置导出日志是否只打印简要日志,简要日志只打印导出对象个数和导出表数据行数。可选参数。
DIMP 工具常规使用
## PARALLEL 用于指定导入的过程中所使用的线程数目,如果CPU 核数为 N 的话,PARALLEL 为 N 或者 N+1 最合适。
dimp USERID=SYSDBA/SYSDBA FILE=/mnt/data/dexp/db_str.dmp LOG=db_str.log FULL=Y DIRECTORY=/mnt/data/dimp PARALLEL=2
## TABLE_PARALLEL 在 FAST_LOAD 为 Y 时有效,用于指定导入每张表所使用的线程数,在 MPP 模式下会转换成单线程。
dimp USERID=SYSDBA/SYSDBA FILE=/mnt/data/dexp/db_str.dmp LOG=db_str.log FULL=Y DIRECTORY=/mnt/data/dimp TABLE_PARALLEL=3
## 设置 EXCLUDE=(CONSTRAINTS),将当前用户下的 table1、table2 的对象信息导入时不导入约束。
dimp SYSDBA/SYSDBA FILE=/mnt/data/db_str.dmp LOG=db_str.log TABLES=table1,table2 EXCLUDE=/(CONSTRAINTS/)DIRECTORY=/mnt/data/dimp
## 设置 ROWS=N 不导入表中的数据。
dimp USERID=SYSDBA/SYSDBA FILE=/mnt/data/dexp/db_str.dmp NOLOGFILE=Y FULL=Y DIRECTORY=/mnt/data/dimp ROWS=N
## 用于将表的索引/约束创建信息写入指定的文件。
dimp USERID=SYSDBA/SYSDBA FILE=/mnt/data/dexp/db_str.dmp LOG=db_str.log FULL=Y INDEXFILE=/mnt/data/dimp/dimp.log
DIMP 参数解析
- IGNORE 指定忽略创建数据库对象(表、类、java 类、domain、sequence、comment、view、synonym、trigger、package、dblink、user、存储过程/函数、role 对象创建、权限授权语句、索引、约束等)错误。可选参数。缺省为 N,不忽略。
- TABLE_EXISTS_ACTION 用于要导入的表已经存在时的处理方式。TABLE_EXISTS_ACTION=[SKIP | APPEND | TRUNCATE | REPLACE]
- FAST_LOAD 用于设置是否使用 dmfldr 进行数据导入,缺省为 N。当 FAST_LOAD=Y 时 才 可 以 设 置 TABLE_PARALLEL 参 数 , 否则TABLE_PARALLEL 参数无效。
- FLDR_ORDER 用于设置使用 dmfldr 时,是否严格按导出顺序来导入数据。FLDR_ORDER=Y/N,Y:表示按照导出顺序来导入数据,缺省值。
- COMMIT_ROWS 用于设置批量提交的行数,缺省为 5000 行。
- EXCLUDE 用来批量设置导入时忽略的对象种类。
- GRANTS:设置是否导入权限,可选参数。取值范围:Y/N。Y:导入权限,缺省值;N:不导入权限。
- CONSTRAINTS:设置是否导入约束,可选参数。取值范围:Y/N。Y:导入约束,缺省值;N:不导入约束。
- INDEXES:设置是否导入索引,可选参数。取值范围:Y/N。Y:导入索引,缺省值;N:不导入索引。
- TRIGGERS:设置是否导入触发器,可选参数。取值范围:Y/N。Y:导入触发器,缺省值;N:不导入触发器。
- ROWS:设置是否导入数据,可选参数。取值范围:Y/N。Y:导入数据,缺省值;N:不导入数据。
- NOLOGFILE 用于设置是否使用日志文件。可选参数。
- NOLOG 设置屏幕上是否显示日志信息。可选参数。
- LOG_WRITE 用于日志信息实时写入日志文件。可选参数。
- DUMMY 用于设置交互信息处理。可选参数,缺省使用 P 打印交互信息。Y:不提供交互界面,所有交互都按 YES 处理。N:不提供交互界面,所有交互都按 NO 处理。
- PARFILE 用于将常用的参数设置保存到文件中。
- FEEDBACK 用来指明在导出数据的过程中每间隔多少行打印一次进度信息。
- COMPILE 如果导入时包含过程/函数、视图、物化视图、触发器、类和包,用于设置是否在导入时对过程或函数执行编译。编译相当于执行重建操作,用于检查过程或函数是否还有效。
- INDEXFILE 用于将表的索引/约束创建信息写入指定的文件。
- INDEXFIRST 用于设置导入时是否先建索引。可选参数。
- REMAP_SCHEMA 将源模式中的数据导入到目标模式中。可选参数。<SOURCE_SCHEMA>:<TARGET_SCHEMA>
- ENCRYPT_PASSWORDENCRYPT_PASSWORD、ENCRYPT_NAME 如果数据文件是通过加密后得到的,在数据文件导入到数据库时,需要提供加密密钥和加密算法。
- DESCRIBE 用于设置导出数据文件的描述信息,记录在数据文件中。可选参数。
- TASK_THREAD_NUMBER 用于设置 dmfldr 处理用户数据的线程数目。但当 CPU 个数大于 8 时,默认值都被置为 8。
- BUFFER_NODE_SIZE 用于设置 dmfldr 指定读取文件缓冲区页大小。值越大,缓冲区的页数越多,每次可以读取的数据就越多,每次发送到服务器的数据也就越多,效率越高。
- TASK_SEND_NODE_NUMBER 用于设置 dmfldr 发送节点个数。
- PPIMARY_CONFLICT 用于设置主键冲突的处理方式。PRIMARY_CONFLICT=[IGNORE|OVERWRITE|OVERWRITE2]。
- TABLE_FIRST 用于控制是否强制先导入表对象。可选参数,缺省为 N。
- SHOW_SERVER_INFO 用于控制是否显示服务器信息。可选参数,缺省为 N。
- IGNORE_INIT_PARA 用于指定源库和目标库之间忽略差异的建库参数。
- REMAP_TABLE 将源表中的数据导入到目的表中。可选参数。
- REMAP_TABLESPACE 将源表空间中的数据导入到目的表空间中。使用该参数的前提是导出文件中包含源表表空间。
- SIMPLE_LOG 用于设置导入日志是否只打印简要日志,简要日志只打印导入对象个数和导入表数据行数。