达梦数据库的逻辑导出(dexp
)和导入(dimp
)工具支持多种场景的数据迁移与备份,以下是不同场景的具体操作及注意事项:
• 适用场景:全库备份或迁移。
• 导出命令:
./dexp USERID=SYSDBA/SYSDBA FILE=full.dmp DIRECTORY=/backup FULL=Y LOG=full.log
• 导入命令:
./dimp USERID=SYSDBA/SYSDBA FILE=full.dmp DIRECTORY=/backup FULL=Y LOG=imp_full.log
• 说明:导出所有用户、模式、表及数据,需确保目标数据库参数(如字符集、页大小等)与源库一致。
• 适用场景:迁移某用户下所有对象。
• 导出命令:
./dexp USERID=SYSDBA/SYSDBA FILE=owner.dmp DIRECTORY=/backup OWNER=用户 LOG=owner.log
• 导入命令:
./dimp USERID=SYSDBA/SYSDBA FILE=owner.dmp DIRECTORY=/backup OWNER=用户 LOG=imp_owner.log
• 说明:目标库需提前创建同名用户并授权。
• 适用场景:迁移特定模式下的数据。
• 导出命令:
./dexp USERID=SYSDBA/SYSDBA FILE=schema.dmp DIRECTORY=/backup SCHEMAS=模式名 LOG=schema.log
• 导入命令:
./dimp USERID=SYSDBA/SYSDBA FILE=schema.dmp DIRECTORY=/backup SCHEMAS=模式名 LOG=imp_schema.log
• 说明:支持跨用户模式映射(REMAP_SCHEMA=原模式:目标模式
)。
• 适用场景:迁移单个或多个表。
• 导出命令:
./dexp USERID=SYSDBA/SYSDBA FILE=tables.dmp DIRECTORY=/backup TABLES=表1,表2 LOG=tables.log
• 导入命令:
./dimp USERID=SYSDBA/SYSDBA FILE=tables.dmp DIRECTORY=/backup TABLES=表1,表2 LOG=imp_tables.log
• 说明:支持模糊匹配(FUZZY_MATCH=Y
)和子集筛选(QUERY="WHERE条件"
)。
使用REMAP_SCHEMA
参数可将数据从源用户/模式映射到目标用户/模式:
./dimp USERID=SYSDBA/SYSDBA FILE=user.dmp REMAP_SCHEMA=原用户:目标用户 LOG=remap.log
• 注意:目标用户需提前创建且拥有足够权限。
若源库与目标库的初始化参数(如字符集、页大小)不一致,导入可能报错。解决方法:
dminit
命令创建参数一致的实例。TABLE_EXISTS_ACTION
:指定冲突处理方式(如REPLACE
覆盖或SKIP
跳过)。• 问题:若源库字符集(如GB18030)与目标库(如UTF8)不兼容,可能导致数据截断。
• 解决:
• 调整源数据长度以适配目标库。
• 临时修改系统字符集环境变量(如Linux下设置LANG=zh_CN.gbk
)后再导入。
文章
阅读量
获赞