一、前言
1.1 概念
逻辑备份还原是对数据库逻辑组件(如表、视图和存储过程等数据库对象)的备份还原。逻辑导出(dexp)和逻辑导入(dimp)是 DM 数据库的两个命令行工具,分别用来实现对 DM 数据库的逻辑备份和逻辑还原。逻辑备份和逻辑还原都是在联机方式下完成,即在数据库服务器正常运行过程中进行的备份和还原。
1.2 术语
- 逻辑导出:使用 dexp 工具可以对本地或者远程数据库进行数据库级、用户级、模式级和表级的逻辑备份。
- 逻辑导入:dimp 逻辑导入工具利用 dexp 工具生成的备份文件对本地或远程的数据库进行联机逻辑还原。dimp 导入是 dexp 导出的相反过程。
1.3 适用范围
本文所涉及的内容适用于 DM8 数据库的逻辑备份还原。
二、dexp 逻辑导出
dexp 工具可以对本地或者远程数据库进行数据库级、用户级、模式级和表级的逻辑备份。备份的内容非常灵活,可以选择是否备份索引、数据行和权限,是否忽略各种约束(外键约束、非空约束、唯一约束等),在备份前还可以选择生成日志文件,记录备份的过程以供查看。
2.1 使用 dexp 工具
dexp 工具需要从命令行启动。以数据库软件安装目录为 /dm8/bin 为例,在 /dm8/bin 路径下输入 dexp 和参数后回车。参数在下一节详细介绍。
##语法如下
dexp PARAMETER=<value> { PARAMETER=<value> }
2.2 dexp 相关参数含义
参数 | 含义 | 备注 |
USERID | 数据库的连接信息 | 必选 |
FILE | 明确指定导出文件名称 | 可选。如果缺省该参数,则导出文件名为dexp.dmp |
DIRECTORY | 导出文件所在目录 | 可选 |
FULL | 导出整个数据库(N) | 可选,四者中选其一。缺省为SCHEMAS |
OWNER | 用户名列表,导出一个或多个用户所拥有的所有对象 | |
SCHEMAS | 模式列表,导出一个或多个模式下的所有对象 | |
TABLES | 表名列表,导出一个或多个指定的表或者表分区 | |
FUZZY_MATCH | TABLES 选项是否支持模糊匹配(N) | 可选 |
QUERY | 用于指定对导出表的数据进行过滤的条件 | 可选 |
PARALLEL | 用于指定导出的过程中所使用的线程数目 | 可选 |
TABLE_PARALLEL | 用于指定导出每张表所使用的线程数,在MPP模式下会转换成单线程 | 可选 |
TABLE_POOL | 用于设置导出过程中存储表的缓冲区个数 | 可选 |
此处列举参数为 dexp 部分参数,更多参数详细说明可以参考数据库安装路径 doc 目录下《DM8_dexp 和 dimp 使用手册》。
2.3 四种级别导出功能
2.3.1 FULL
FULL 方式导出数据库的所有对象。
##设置 FULL=Y,导出数据库的所有对象,导出数据库文件和日志文件放在路径 /mnt/data/dexp下。
./dexp USERID=SYSDBA/SYSDBA FILE=db_str.dmp LOG=db_str.log FULL=Y DIRECTORY=/mnt/data/dexp
2.3.2 OWNER
OWNER 方式导出一个或多个用户拥有的所有对象。
##设置 OWNER=USER01,导出用户 USER01 所拥有的对象全部导出。
./dexp USERID=SYSDBA/SYSDBA FILE=db_str.dmp LOG=db_str.log OWNER=USER01 DIRECTORY=/mnt/data/dexp
2.3.3 SCHEMAS
SCHEMAS 方式的导出一个或多个模式下的所有对象。
##设置 SCHEMAS=USER01,导出模式 USER01 模式下的所有对象。
./dexp USERID=SYSDBA/SYSDBA FILE=db_str.dmp LOG=db_str.log SCHEMAS=USER01 DIRECTORY=/mnt/data/dexp
2.3.4 TABLES
TABLES 方式导出一个或多个指定的表或表分区。导出所有数据行、约束、索引等信息。
##设置 TABLES=table1,table2,导出 table1,table2 两张表的所有数据和信息。
./dexp USERID=SYSDBA/SYSDBA FILE=db_str.dmp LOG=db_str.log TABLES=table1,table2 DIRECTORY=/mnt/data/dexp
和 TABLES 导出有关的参数还有 QUERY、EXCLUDE 和 INCLUDE,都是用来设置过滤条件的。
2.4 使用示范
2.4.1 环境准备
导出库:环境为 Linux,服务器为 192.168.0.248,用户名和密码均为 SYSDBA。导出的是 DM 数据库系统安装时自带的名为 BOOKSHOP 的示例库,端口号 5236。
2.4.2 dexp 逻辑导出
导出数据库的所有对象 (FULL=Y),导出文件为 dexp01.dmp ,导出日志为 dexp01.log,导出文件和日志文件都存放在 /emc_2/data/dexp 目录中。
./dexp SYSDBA/SYSDBA@192.168.0.248:5236 FILE=dexp01.dmp LOG=dexp01.log DIRECTORY=/emc_2/data/dexp FULL=Y
##若使用加密参数对备份进行加密,可使用加密参数 ENCRYPT、ENCRYPT_PASSWORD、ENCRYPT_NAME 。
##具体使用方法如下:
./dexp SYSDBA/SYSDBA@192.168.0.248:5236 FILE=dexp03.dmp LOG=dexp03.log DIRECTORY=/emc_2/data/dexp FULL=Y ENCRYPT=Y ENCRYPT_PASSWORD=damengren ENCRYPT_NAME= DES_CBC
##导出数据库的所有对象 (FULL=Y),导出文件为 dexp03.dmp,导出日志为 dexp03.log,导出文件和日志文件都存放在 /emc_2/data/dexp 目录中。
三、dimp 逻辑导入
dimp 逻辑导入工具利用 dexp 工具生成的备份文件对本地或远程的数据库进行联机逻辑还原。dimp 导入是 dexp 导出的相反过程。还原的方式可以灵活选择,例如是否忽略对象存在而导致的创建错误、是否导入约束、是否导入索引、导入时是否需要编译、是否生成日志等。
3.1 使用 dimp 工具
dimp 工具需要从命令行启动。以数据库软件安装目录为 /dm8/bin 为例,在 /dm8/bin 路径下输入 dimp 和参数后回车。参数在下一节详细介绍。
##语法如下
dimp PARAMETER=value { PARAMETER=value }
##将逻辑备份采用 FULL 方式完全导入到用户名和密码为 SYSDBA,IP 地址为 192.168.0.248,端口号为 8888 的数据库。导入文件名为 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
3.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) | 可选 |
此处列举参数为 dimp 部分参数,更多参数详细说明可以参考数据库安装路径 doc 目录下《DM8_dexp 和 dimp 使用手册》。
3.3 四种级别导入功能
3.3.1 FULL
FULL 方式导入整个数据库。
##设置 FULL=Y,导入数据库,导入的数据库文件在 /mnt/data/dexp,即将生成的日志文件放在 /mnt/data/dimp。
./dimp USERID=SYSDBA/SYSDBA FILE=/mnt/data/dexp/db_str.dmp LOG=db_str.log FULL=Y DIRECTORY=/mnt/data/dimp
3.3.2 OWNER
OWNER 方式导入一个或多个用户拥有的所有对象。
##设置 OWNER=USER01,导入用户 USER01 所拥有的对象全部导出。导入的数据库文件在 /mnt/data/dexp,即将生成的日志文件放在 /mnt/data/dimp。
./dimp USERID=SYSDBA/SYSDBA FILE=/mnt/data/dexp/db_str.dmp LOG=db_str.log OWNER=USER01 DIRECTORY=/mnt/data/dimp
3.3.3 SCHEMAS
SCHEMAS 方式的导入一个或多个模式下的所有对象。
##设置 SCHEMAS=USER01,导入模式 USER01 模式下的所有对象。导入的数据库文件在/mnt/data/dexp,即将生成的日志文件放在 /mnt/data/dimp。
./dimp USERID=SYSDBA/SYSDBA FILE=/mnt/data/dexp/db_str.dmp LOG=db_str.log SCHEMAS=USER01 DIRECTORY=/mnt/data/dimp
3.3.4 TABLES
TABLES 方式导入一个或多个指定的表或表分区。导入所有数据行、约束、索引等信息。
##设置 TABLES=table1,table2,导入 table1,table2 两张表的所有数据和信息。导入的数据库文件在 /mnt/data/dexp,即将生成的日志文件放在 /mnt/data/dimp。
./dimp USERID=SYSDBA/SYSDBA FILE=/mnt/data/dexp/db_str.dmp LOG=db_str.log TABLES=table1,table2 DIRECTORY=/mnt/data/dimp
与 TABLES 导入有关的参数还有 EXCLUDE,用来指定导入时过滤某类对象。
3.4 使用示范
3.4.1 环境准备
导入库:环境为 Linux,服务器为 192.168.0.248,用户名和密码均为 SYSDBA。准备一个空数据库作为导入库,端口号为 8888。
3.4.2 dimp 逻辑导入
导入 SYSDBA、OTHER、PERSON 模式中的数据 (SCHEMAS = SYSDBA,OTHER,PERSON),导入文件就是上一步导出的文件 dexp01.dmp ,导入日志 dimp02.log 放入 /emc_2/data/dimp 目录中。
./dimp SYSDBA/SYSDBA@192.168.0.248:8888 FILE=/emc_2/data/dexp/dexp01.dmp LOG=dimp02.log DIRECTORY=/emc_2/data/dimp SCHEMAS=SYSDBA,OTHER,PERSON
四、使用图形化工具进行逻辑导入导出
使用方式:打开数据库管理工具,右键选择【导入】/【导出】即可进行逻辑导入导出。
4.1 逻辑导出
以下图片为逻辑导出的选项界面,包含导出目录、导出文件、日志文件和导出选项。
- 导出目录可以选择逻辑导出的文件存储位置,例如下图中导出目录为
D:\DM8\data\DAMENG\dexp
。 - 导出文件的命名格式为 .dmp。
- 日志文件与导出文件存储在同一导出目录下。
导出选项可以根据逻辑导出的实际需要设置。包括设置文件大小、文件数、描述信息、权限、压缩等等。
4.2 逻辑导入
以下图片为逻辑导入的选项界面,包含导入目录、导入文件、日志文件和导入选项。
- 导入目录可以选择逻辑导入的文件存储位置,例如下图中导入目录为
D:\DM8\data\DAMENG\dexp
。 - 导入文件选择逻辑导出的文件。例如,逻辑导出表的相关数据,导出文件的格式为 test.dmp,逻辑导入时,导入文件选择为 test.dmp。
- 日志文件不能与旧文件同名。
导入选项可以根据逻辑导入的实际需要设置。包括数据行,是否选择索引约束、并发数等等。
五、参考
若以上内容无法解决您的问题,可到 达梦技术社区 提问交流。
官方文档地址
https://eco.dameng.com/document/dm/zh-cn/ops/logical-backup-restore.html