一、功能简介
DM 数据库的备份还原包括两种类型:物理备份还原和逻辑备份还原。物理备份还原是对数据库的操作系统物理文件(如数据文件、控制文件和日志文件等)的备份还原。
逻辑导出(dexp)和逻辑导入(dimp)是 DM 数据库的两个命令行工具,分别用来实现对 DM 数据库的逻辑备份和逻辑还原。逻辑备份和逻辑还原都是在联机方式下完成,联机方式是指数据库服务器正常运行过程中进行的备份和还原 dexp 和 dimp 是 DM 数据库自带的工具,只要安装了 DM 数据库,就可以在安装目录 /dmdbms/bin 中找到。
逻辑导出和逻辑导入数据库对象分为四种级别:数据库级、用户级、模式级和表级。四种级别独立互斥,不能同时存在。四种级别所提供的功能:
数据库级(FULL):导出或导入整个数据库中的所有对象。
用户级(OWNER):导出或导入一个或多个用户所拥有的所有对象。
模式级(SCHEMAS):导出或导入一个或多个模式下的所有对象。
表级(TABLES):导出或导入一个或多个指定的表或表分区。
二、dexp 逻辑导出
dexp 工具可以对本地或者远程数据库进行数据库级、用户级、模式级和表级的逻辑备份。备份的内容非常灵活,可以选择是否备份索引、数据行和权限,是否忽略各种约束(外键约束、非空约束、唯一约束等),在备份前还可以选择生成日志文件,记录备份的过程以供查看。
dexp 工具名称有两种写法 dexp 和 dexpdp。两者语法完全相同。唯一的区别在于,dexp 导出的文件必须存放在客户端,dexpdp 导出的文件必须存放在服务器端。
1. 使用 dexp 工具
dexp 工具需要从命令行启动。在 cmd 命令行工具中找到 dexp 所在安装目录 /dmdbms/bin,输入 dexp 和参数后回车。
语法如下:
dexp PARAMETER=<value> { PARAMETER=<value> }
或
dexpdp PARAMETER=<value> { PARAMETER=<value> }
PARAMETER:dexp 参数。多个参数之间排列顺序无影响,参数之间使用空格间隔。
\<value\>:参数取值。
例如,将用户名和密码均为 SYSDBA,IP地址为 172.19.1.151,端口号为 5236 的数据库采用 FULL 方式完全导出。导出文件名为 db_str.dmp,导出的日志文件名为 db_str.log,导出文件的路径为/mnt/dexp/data。
./dexp USERID=SYSDBA/SYSDBA@172.19.1.151:5235 FILE=db_str.dmp
DIRECTORY=/mnt/dexp/data LOG=db_str.log FULL=Y
2. dexp 参数一览表
参数 | 含义 | 备注 |
USERID | 数据库的连接信息 | 必选 |
FILE | 明确指定导出文件名称 | 可选。如果缺省该参数,则导出文件名为dexp.dmp |
DIRECTORY | 导出文件所在目录 | 可选 |
FULL | 导出整个数据库(N) | 可选,四者中选其一。缺省为SCHEMAS |
OWNER | 用户名列表,导出一个或多个用户所拥有的所有对象 | |
SCHEMAS | 模式列表,导出一个或多个模式下的所有对象 | |
TABLES | 表名列表,导出一个或多个指定的表或表分区 | |
FUZZY_MATCH | TABLES选项是否支持模糊匹配(N) | 可选 |
QUERY | 用于指定对导出表的数据进行过滤的条件。 | 可选 |
PARALLEL | 用于指定导出的过程中所使用的线程数目 | 可选 |
TABLE_PARALLEL | 用于指定导出每张表所使用的线程数,在MPP模式下会转换成单线程 | 可选 |
TABLE_POOL | 用于设置导出过程中存储表的缓冲区个数 | 可选 |
EXCLUDE | 1. 导出内容中忽略指定的对象。对象有CONSTRAINTS、INDEXES、ROWS、TRIGGERS和GRANTS。 | 可选 |
比如:EXCLUDE= (CONSTRAINTS,INDEXES) | ||
2. 忽略指定的表,使用TABLES:INFO格式,如果使用表级导出方式导出,则使用TABLES:INFO格式的EXCLUDE无效。例如:EXCLUDE= TABLES:table1,table2 | ||
3. 忽略指定的模式,使用SCHEMAS:INFO格式,如果使用表级,模式级导出方式导出,则使用SCHEMAS:INFO格式的EXCLUDE无效。例如:EXCLUDE=SCHEMAS:SCH1,SCH2 | ||
INCLUDE | 导出内容中包含指定的对象 | 可选 |
例如:INCLUDE=(CONSTRAINTS,INDEXES) | ||
或者INCLUDE=TABLES:table1,table2 | ||
CONSTRAINTS | 导出约束 (Y) | 可选。 |
TABLESPACE | 导出的对象定义是否包含表空间(N) | 此处单独设置与和EXCLUDE/INCLUDE中批量设置功能一样。设置一个即可 |
GRANTS | 导出权限 (Y) | |
INDEXES | 导出索引 (Y) | |
TRIGGERS | 导出触发器(Y) | |
ROWS | 导出数据行 (Y) | |
LOG | 明确指定日志文件名称 | 可选,如果缺省该参数,则导出文件名为dexp.log |
NOLOGFILE | 不使用日志文件(N) | 可选 |
NOLOG | 屏幕上不显示日志信息(N) | 可选 |
LOG_WRITE | 日志信息实时写入文件 (N) | 可选 |
DUMMY | 交互信息处理: 打印(P), 所有交互都按YES处理(Y),NO(N)。默认为NO,不打印交互信息。 | 可选 |
PARFILE | 参数文件名,如果dexp的参数很多,可以存成参数文件 | 可选 |
FEEDBACK | 每 x 行显示进度 (0) | 可选 |
COMPRESS | 是否压缩导出数据文件(N) | 可选 |
ENCRYPT | 导出数据是否加密 (N) | 可选, |
ENCRYPT_PASSWORD | 导出数据的加密密钥 | 和ENCRYPT同时使用 |
ENCRYPT_NAME | 导出数据的加密算法 | 可选。 |
和ENCRYPT、ENCRYPT_PASSWORD同时使用。缺省为RC4 | ||
FILESIZE | 用于指定单个导出文件大小的上限。可以按字节[B]、K[B]、M[B]、G[B]的方式指定大小 | 可选 |
FILENUM | 多文件导出时,一个模板可以生成文件数,范围为[1,99],默认99 | 可选 |
DROP | 导出后删除原表,但不级联删除 (N) | 可选 |
DESCRIBE | 导出数据文件的描述信息,记录在数据文件中 | 可选 |
HELP | 显示帮助信息 | 可选 |
注意:
每个参数含义后面的括号内为(N)则表示该参数缺省为否,为(Y)则表示为是,虽然参数大部分为可选参数,但后台这些参数都会传到服务器,此时参数的值就是缺省值。
三、dimp 逻辑导入
dimp逻辑导入工具利用dexp工具生成的备份文件对本地或远程的数据库进行联机逻辑还原。dimp导入是dexp导出的相反过程。还原的方式可以灵活选择,如是否忽略对象存在而导致的创建错误、是否导入约束、是否导入索引、导入时是否需要编译、是否生成日志等。
dimp工具名称有两种写法dimp和dimpdp。两者语法完全相同。唯一的区别在于,dimp导入的文件必须存放在客户端,dexpdp导入的文件必须存放在服务器端。
1. 使用 dimp 工具
dimp工具需要从命令行启动。在cmd命令行工具中找到dimp所在安装目录/dmdbms/bin,输入dimp和参数后回车。
语法如下:
dimp PARAMETER=value { PARAMETER=value } |
PARAMETER:dimp参数。多个参数之间排列顺序无影响,参数之间使用空格间隔。
value:参数取值。
例如,将逻辑备份采用FULL方式完全导入到用户名和密码为SYSDBA,IP地址为172.19.1.150,端口号为5236的数据库。导入文件名为db_str.dmp,导入的日志文件名为db_str.log,路径为/mnt/data/dexp。
./dimp USERID=SYSDBA/SYSDBA@192.168.0.248:8888 FILE=db_str.dmp DIRECTORY=/mnt/data/dexp LOG=db_str.log FULL=Y
2. dimp参数一览表
参数 | 含义 | 备注 |
USERID | 数据库的连接信息 | 必选 |
FILE | 输入文件,即dexp导出的文件 | 必选 |
DIRECTORY | 导入文件所在目录 | 可选 |
FULL | 导入整个数据库(N) | 可选,四者中选其一。缺省为SCHEMAS |
OWNER | 导入指定的用户名下的模式 | |
SCHEMAS | 导入的模式列表 | |
TABLES | 表名列表,指定导入的tables名称。不支持对外部表进行导入 | |
PARALLEL | 用于指定导入的过程中所使用的线程数目 | 可选 |
TABLE_PARALLEL | 用于指定导入的过程中每张表所使用的线程数 | 可选。在FAST_LOAD为Y时有效 |
IGNORE | 忽略创建错误(N)。如果表已经存在则向表中插入数据,否则报错表已经存在 | 可选 |
TABLE_EXISTS_ACTION | 需要的导入表在目标库中存在时采取的操作 [SKIP | APPEND | TRUNCATE | REPLACE] | 可选 |
FAST_LOAD | 是否使用dmfldr进行数据导入(N) | 可选 |
FLDR_ORDER | 使用dmfldr是否需要严格按顺序来导数据(Y) | 可选 |
COMMIT_ROWS | 批量提交的行数(5000) | 可选 |
EXCLUDE | 忽略指定的对象(CONSTRAINTS,INDEXES,ROWS,TRIGGERS,GRANTS)。格式 EXCLUDE = (CONSTRAINTS,INDEXES,ROWS,TRIGGERS,GRANTS) | 可选。例如 EXCLUDE = (CONSTRAINT) |
GRANTS | 导入权限(Y) | 可选 |
CONSTRAINTS | 导入约束(Y) | 可选 |
INDEXES | 导入索引(Y) | 可选 |
TRIGGERS | 导入触发器(Y) | 可选 |
ROWS | 导入数据行(Y) | 可选 |
LOG | 日志文件 | 可选 |
NOLOGFILE | 不使用日志文件(N) | 可选 |
NOLOG | 屏幕上不显示日志信息(N) | 可选 |
DUMMY | 交互信息处理:打印(P)。取值Y/N | 可选 |
Y:打印所有交互信息 | ||
N:不打印交互信息 | ||
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,因为dmfldr是一行一行提交的 | 可选 |
PRIMARY_CONFLICT | 主键冲突的处理方式[IGNORE | OVERWRITE | OVERWRITE2],默认报错 | 可选 |
TABLE_FIRST | 是否强制先导入表(默认N),Y表示先导入表,N正常导入 | 可选 |
SHOW_SERVER_INFO | 是否显示服务器信息(默认N),Y表示显示导出文件对应服务器信息,实际不导入;N表示不显示导出文件对应服务器信息,正常导入 | 可选 |
HELP | 显示帮助信息 | 可选 |