逻辑导出(dexp)和逻辑导入(dimp)是 DM 数据库的两个命令行工具,分别用来实现对 DM 数据库的逻辑备份和逻辑还原。逻辑备份和逻辑还原都是在联机方式下完成,联机方式是指数据库服务器正常运行过程中进行的备份和还原。dexp 和 dimp 是 DM 数据库自带的工具,只要安装了 DM 数据库,就可以在安装目录/dmdbms/bin 中找到。
逻辑导出和逻辑导入数据库对象分为四种级别:数据库级、用户级、模式级和表级。四种级别独立互斥,不能同时存在。四种级别所提供的功能:
数据库级(FULL):导出或导入整个数据库中的所有对象。
用户级(OWNER):导出或导入一个或多个用户所拥有的所有对象。
模式级(SCHEMAS):导出或导入一个或多个模式下的所有对象。
表级(TABLES):导出或导入一个或多个指定的表或表分区。
本文主要记录,在阅读《DM8_dexp和dimp使用手册.pdf》手册过程中,实验学习到的知识点及问题。
[dmdba@localhost backup]$ dexp SYSDBA/SYSDBA@192.168.188.10:5236 DIRECTORY=/home/dmdba/backup file=dexp_full_2023-03-16.dmp log=dexp_full_2023-03-16.log full=y
注意:观察输出的日志是否有告警信息。
语法:OWNER=<用户名>{,<用户名>}
例如,设置 OWNER=SHEN,导出用户 SHEN所拥有的对象全部导出。
[dmdba@localhost backup]$ dexp SYSDBA/SYSDBA@192.168.188.10:5236 DIRECTORY=/home/dmdba/backup file=dexp_shen_2023-03-16.dmp log=dexp_shen_2023-03-16.log owner=SHEN
语法:SCHEMAS=<模式名>{,<模式名>}
例如,设置 SCHEMAS=SHEN,导出模式 SHEN模式下的所有对象。
dexp SYSDBA/SYSDBA@192.168.188.10:5236 DIRECTORY=/home/dmdba/backup file=dexp_schemas_2023-03-16.dmp log=dexp_schemas_2023-03-16.log schemas=SHEN
语法:TABLES=<表名>{,<表名>}
例如,设置 TABLES=SHEN.TEST导出所有数据和信息。
dexp SYSDBA/SYSDBA@192.168.188.10:5236 DIRECTORY=/home/dmdba/backup file=dexp_test_2023-03-16.dmp log=dexp_test_2023-03-16.log tables=SHEN.TEST
语法:FULL=Y
例如,设置 FULL=Y,导入整个数据库,导入的数据库文件在/home/dmdba/backup,即将生成的日志文件放在dimp_full_2023-03-16.log。
[dmdba@localhost backup]$ dimp SYSDBA/SYSDBA@192.168.188.10:5236 DIRECTORY=/home/dmdba/backup FILE=/home/dmdba/backup/dexp_full_2023-03-16.dmp LOG=dimp_full_2023-03-16.log FULL=Y
语法:OWNER=<用户名>{,<用户名>}
例如,设置 OWNER=SHEN,导入用户 SHEN所拥有的对象全部导出。导入的数据库文件在/home/dmdba/backup,即将生成的日志文件放在/home/dmdba/backup。
dimp SYSDBA/SYSDBA@192.168.188.10:5236 DIRECTORY=/home/dmdba/backup FILE=/home/dmdba/backup/dexp_shen_2023-03-16.dmp LOG=dimp_shen_2023-03-16-002.log OWNER=SHEN
语法:SCHEMAS=<模式名>{,<模式名>}
例如,设置 SCHEMAS=SHEN,导入模式 SHEN模式下的所有对象。导入的数据库文件在/home/dmdba/backup,即将生成的日志文件放在/home/dmdba/backup。
[dmdba@localhost ~]$ dimp SYSDBA/SYSDBA@192.168.188.10:5236 DIRECTORY=/home/dmdba/backup FILE=dexp_schemas_2023-03-16.dmp LOG=dimp_schemas_2023-03-16-001.log SCHEMAS=SHEN
语法:TABLES=<表名>{,<表名>}
例如,设置 TABLES=table1,table2,导入 table1,table2 两张表的所有数据和信息。导入的数据库文件在/mnt/data/dexp,即将生成的日志文件放在/mnt/data/dimp。
dimp SYSDBA/SYSDBA@192.168.188.10:5236 DIRECTORY=/home/dmdba/backup FILE=/home/dmdba/backup/dexp_test_2023-03-16.dmp LOG=dimp_test_2023-03-16.log TABLES=SHEN.TEST
1、导入 dmp 文件时提示报错“该工具不能解析此文件,请使用更高版本的工具”
解决办法:dexp/dimp 的版本太低,要么用导出 dmp 文件的那个版本,要么用更新的版本。
2、导入报错:Error Code:-70013,转换失败
解决办法:先查看导出数据的源数据库的系统环境变量设置情况,然后设置导入目数据库的操作系统环境变量:export lang= 源数据库的环境变量
3、导入 dmp 文件,出现警告:无效的对象
解决办法:dimp 导入之前要先建好用户,如果需要换模式名,前提是需要指定映射。
4、dimp 或者管理工具导入会报错:“[警告]Error Code:-70016,日期超出范围”
解决办法:
(1)通过达梦 DTS 工具进行数据迁移;
(2)将源库表的 date 类型改为 timestamp(0),然后再导出。可以用语句拼接批量改:select 'alter table '||owner||'.'||table_name||' modify '||column_name||' TIMESTAMP(0);' from
5、使用管理工具进行导入的时候提示警告:导入导出编码方式不一致,可能无法转换
解决方法:该警告对导入没有影响,可以忽略。
如果想不出现该警告可以修改本地编码与导入文件编码一致,修改方法:在 dm_svc.conf 文件中指定本地编码,增加一行:CHAR_CODE=(PG_GB18030)
文章
阅读量
获赞