在使用Oracle的exp和imp工具进行数据迁移时,EXP-00091与IMP-00010是一对容易连续出现的错误。EXP-00091发生在导出阶段,提示导出参数中存在环境问题;IMP-00010则出现在导入阶段,表示文件格式无法被识别。二者往往源于同一根因:客户端环境配置不一致或版本错位。理解其底层机制,才能从根本上消除报错。

一、EXP-00091错误成因与处理
EXP-00091的全称是“Exporting questionable statistics”,但实践中更多是由于NLS_LANG环境变量未设置或与数据库字符集不一致,导致导出时无法正确转换语言区域信息。Oracle在启动exp时会读取客户端的NLS_LANG,若其值不在服务端支持范围内,就会报该错误并跳过统计信息导出。
排查时先登录数据库确认字符集:
SELECT parameter, value
FROM nls_database_parameters
WHERE parameter IN ('NLS_CHARACTERSET', 'NLS_NCHAR_CHARACTERSET');
假设返回字符集为AL32UTF8,则客户端在Linux下应这样设置:
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8 exp user/pass@orcl file=test.dmp owner=scott
如果仍报EXP-00091,可加上statistics=none参数忽略统计信息,但这只是规避而非根治。根治方案是统一NLS_LANG与数据库一致,并确保操作系统 locale 支持该语言环境。
二、IMP-00010错误成因与处理
IMP-00010的含义是“not a valid export file”,即imp认为dmp文件不是合法的导出文件。最常见场景是高版本数据库(如19c)用exp导出,却在低版本(如11g)用imp导入。因为dmp文件头记录了导出工具版本,低版本imp无法解析高版本格式。
验证文件头可用strings命令查看:
strings test.dmp | head -5
若看到类似“EXPORT:V19.00.00”标识,而本地imp为11.2.0,则会触发IMP-00010。此时应使用与目标库同版本或更高的imp,或者改用数据泵expdp/impdp。若必须坚持低版本导入,只能回到高版本环境用exp的version参数降级:
exp user/pass@orcl file=test.dmp owner=scott version=11.2.0.0.0
这样生成的dmp可被11g的imp读取。注意version值需写全四点格式,否则部分老客户端不识别。
三、综合解决流程与示例
实际工程中建议遵循以下顺序:先查数据库字符集,再设NLS_LANG,然后用匹配版本导出,最后在同版本或高版本导入。下面给出一个完整的Linux迁移脚本片段:
# 设置环境变量 export ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_1 export PATH=$ORACLE_HOME/bin:$PATH export NLS_LANG=AMERICAN_AMERICA.AL32UTF8 # 导出(指定版本兼容低库) exp system/oracle@srcdb file=/backup/scott.dmp owner=scott version=11.2.0.0.0 # 在目标11g机器导入 imp system/oracle@tgtdb file=/backup/scott.dmp fromuser=scott touser=scott_new
该流程同时规避了EXP-00091与IMP-00010。若目标端字符集不同,还应提前用CSSCAN评估数据损坏风险,必要时做字符集转换而非强行导入。
当错误依然出现时,可开启exp/imp的日志跟踪:加上log参数并检查trace文件。有时杀毒软件或网络盘会篡改dmp头部字节,造成IMP-00010假象,此时重新生成文件到本地磁盘即可。
四、常见误区与总结
不少现场人员看到EXP-00091就盲目加statistics=none,结果虽导出成功,却因未设NLS_LANG导致后续imp出现乱码或IMP-00010。二者本质都指向环境一致性。另一个误区是用文本编辑器打开dmp试图修改版本号,这会破坏二进制结构,绝对禁止。
正确认知是:exp/imp是弱耦合工具,依赖客户端与服务端协商。保持NLS_LANG一致、版本号向下兼容、文件传输无损,就能稳定解决这两类错误。对于大规模迁移,优先采用expdp/impdp,其报错体系更清晰且支持断点续做。
EXP-00091IMP-00010Oracle_exp_imp修改时间:2026-08-08 18:18:25