Oracle导入导出时报EXP-00091和IMP-00010该怎么解决

来源:IT编程作者:白鲨头衔:草根站长
导读:本期聚焦于小伙伴创作的《Oracle导入导出时报EXP-00091和IMP-00010该怎么解决》,敬请观看详情。在Oracle数据迁移现场,常遇到exp命令退出并报EXP-00091,随后imp端抛出IMP-00010导致任务中断。这两个错误多与环境变量NLS_LANG不匹配、导出文件版本高于导入端有关。EXP-00091指导出时字符集或语言环境未被正确识别,通常因客户端NLS_LANG未设置或设置错误。IMP-00010则说明导入文件头部格式不被当前imp工具识别,常见于高版本库导出的dmp用低版本imp读取。解决思路是先统一NLS_LANG与数据库字符集,再用相同版本或更高版本的imp工具,必要时通过fromuser_touser参数重定向。掌握这些排查步骤,能减少跨版本迁移中的无效重试。

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

Oracle导入导出时报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

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。