Oracle 11g 64位 exp/imp 工具集:dmp文件导入导出实战指南
发布时间:2026/11/4 16:42:36 锦皓数字建站

简介这份资源是Oracle 11g 64位版本的bin目录完整打包面向使用PL/SQL Developer进行数据迁移的数据库管理员与开发者重点解决imp.exe、exp.exe缺失导致无法图形化导入导出的问题。压缩包共691个文件、约126MB以372个dll动态库和118个exe可执行程序为主另含bat批处理脚本、pm与pl等辅助文件涵盖sqlplus、oradim等常用管理工具构成较完整的命令行工具集。已有4162人学习下载说明其在同类需求中具备一定参考价值。读者可直接补齐bin目录中的导入导出组件在PL/SQL Developer中调用exp.exe备份表、模式或整库再用imp.exe还原到目标环境适用于版本升级、服务器迁移及开发测试环境同步等场景省去逐一手动配置命令行参数的麻烦。1. 手里只有 dmp 文件怎么把它塞进 Oracle 11g 64 位实例接手一个老系统迁移的活儿对方丢过来一个 3GB 的 dmp 文件说“你导一下就行”。打开服务器一看Oracle 11g 64 位没装客户端工具PL/SQL Developer 里点导入导出直接报找不到可执行文件。这种场景下真正缺的不是数据库而是 bin 目录里那两个老面孔imp.exe 和 exp.exe。这份资源就是 Oracle 11g 64 位版本的 bin 目录工具集核心是经典导入导出程序 imp/exp配合 PL/SQL 的导入导出向导使用。它解决的是“有 dmp、有库、但没工具链”的断档问题适合还在维护 11g 存量系统、需要做逻辑备份迁移的从业者。注意它是传统 exp/imp 体系不是数据泵 expdp/impdp两者不通用选错方向会白折腾半天。2. 先分清 exp/imp 和数据泵选错工具等于白干2.1 两套体系到底差在哪Oracle 的逻辑导出有两代工具。第一代是 exp.exe / imp.exe客户端侧程序生成二进制 dmp走的是 exp 协议第二代是服务端的数据泵 expdp / impdp程序跑在数据库服务器上通过目录对象写文件。很多人栽在第一步拿到一个 dmp直接 imp 进去报 “不是有效的导出文件”其实是数据泵导出的。反过来用 impdp 去导 exp 生成的 dmp同样报错。判断方法很简单用十六进制看文件头exp 的 dmp 开头通常是特定标记数据泵的 dmp 头部结构完全不同。实操里我一般先问对方一句“你导出时敲的是 exp 还是 expdp”问不到就看文件大小和生成时间数据泵的 dmp 往往伴随一个 .log 文件同目录。这份资源给的是 exp.exe / imp.exe所以它对应的是传统体系。选它的理由通常有三个目标库是 11g 且不允许在服务器上建目录对象、只需要导某几张表或某个用户、以及 PL/SQL Developer 的导入导出界面底层调用的就是这两个 exe。如果你的需求是全库迁移、并行加速、可断点重启那应该走数据泵这份资源帮不上。2.2 版本兼容的硬规则exp/imp 有一条铁律低版本导出的 dmp 可以导入高版本高版本导出的不能导入低版本。11g 的 exp 导出的文件往 11g 及更高版本导没问题但如果源库是 12c 用 exp 导的往 11g 导就会报版本不兼容。另外 32 位和 64 位的 exp/imp 生成的 dmp 本身是跨平台通用的但 exe 必须和你的客户端环境位数匹配。这份是 64 位版本意味着它要放在 64 位 Windows 的 Oracle 客户端或服务端 bin 目录下32 位环境放进去会直接提示不是有效的 Win32 应用程序。2.3 把工具放到位目录结构与 PATH拿到 bin 目录后不要整个覆盖你现有的 Oracle 安装。正确做法是把 exp.exe、imp.exe 以及它们依赖的 DLL 挑出来放到一个已经配好环境变量的 Oracle 客户端 bin 下或者单独建目录后把该目录加进 PATH。依赖的 DLL 主要是 oci.dll、oraociei11.dll 这一类缺一个就会弹“无法启动此程序因为计算机中丢失 XXX.dll”。我一般先备份原 bin再把新 exe 拷进去然后开一个新的 cmd 窗口验证因为 PATH 的变更对已打开的终端不生效。# Windows 下验证 exp/imp 是否可用注意要在新开的 cmd 里执行 where exp where imp # 直接看版本能出版本号说明依赖 DLL 齐全 exp helpy imp helpywhere用来确认实际调用的是哪个路径下的 exe避免你拷了新的但系统仍走旧路径。exp helpy不连数据库只打印参数帮助是检验 DLL 依赖是否完整最快的手段——如果这里就崩说明缺 DLL 或位数不对跟数据库无关。参数helpy是 exp/imp 的通用开关任何排错第一步都先跑它。3. 用 exp.exe 导出三种粒度与参数怎么配3.1 三种导出模式的选择exp 支持三种粒度表模式TABLES、用户模式OWNER、全库模式FULLY。表模式最常用适合单表数据修复用户模式导出一个 schema 下所有对象是迁移的常规选择全库模式需要 DBA 权限且 11g 下全库导出会包含系统对象导入时容易撞上已存在的对象。实操里我优先用户模式因为边界清晰导入到新库时不会污染其他 schema。# 用户模式导出把 SCOTT 用户下所有对象导到文件 exp scott/tigerORCL OWNERSCOTT FILED:\dump\scott_20240101.dmp LOGD:\dump\scott_exp.log # 表模式导出只导 EMP 和 DEPT 两张表 exp scott/tigerORCL TABLES(EMP,DEPT) FILED:\dump\emp_dept.dmp LOGD:\dump\emp_dept.log # 全库导出需要 DBA 权限 exp system/managerORCL FULLY FILED:\dump\full.dmp LOGD:\dump\full.log第一行里scott/tigerORCL是用户名/密码服务名OWNER指定 schemaFILE是输出路径LOG记录导出过程。第二行TABLES(EMP,DEPT)括号内多表用逗号分隔表名大小写按库里的实际对象名来11g 默认大写。第三行FULLY全库注意它会导出大量系统对象导入时通常要配合IGNOREY。三个命令都建议带 LOG因为 exp 的报错有时只在日志里完整呈现控制台会被截断。3.2 几个容易配错的参数CONSISTENTY让导出期间数据保持一致快照代价是需要回滚段空间大表导出时如果回滚段不够会报 ORA-01555。DIRECTY走直接路径速度快但不走 SQL 层某些带触发器的表行为会有差异。COMPRESSY是压缩段分配不是压缩文件别指望它把 dmp 变小。QUERY参数可以带条件导出比如只导某时间之后的数据写法是QUERYWHERE CREATE_TIME TO_DATE(2024-01-01,YYYY-MM-DD)注意引号在 Windows cmd 下的转义双引号包整体、内部用单引号。# 带条件的一致性导出只导 2024 年之后的数据 exp scott/tigerORCL TABLESORDERS QUERYWHERE CREATE_TIME TO_DATE(2024-01-01,YYYY-MM-DD) \ CONSISTENTY FILED:\dump\orders_2024.dmp LOGD:\dump\orders_2024.logQUERY只对表模式有效用户模式和全库模式不认这个参数。CONSISTENTY和DIRECTY同时用会有冲突直接路径不支持一致性读两个都写时 exp 会忽略其中一个具体忽略哪个看版本所以别同时配。反斜杠续行是 Linux 习惯Windows cmd 里要写成一行或用^续行这点在复制网上命令时经常翻车。3.3 导出失败的常见信号导出中途报 ORA-01555 是回滚段不足解决要么加大回滚段要么去掉 CONSISTENT 改成分批导。报 EXP-00008 通常是遇到了不支持的对象类型比如某些 XML 类型或空间索引日志里会指明具体对象可以选择性排除。报 EXP-00091 是统计信息问题不影响数据本身可以忽略或用STATISTICSNONE关掉统计信息导出。这些错误码在日志里都有上下文别只看最后一行。4. 用 imp.exe 导入顺序、覆盖与权限4.1 导入前必须确认的三件事第一目标库字符集要和源库一致或兼容否则中文会变问号这个坑一旦踩了只能重导。用SELECT * FROM NLS_DATABASE_PARAMETERS WHERE PARAMETERNLS_CHARACTERSET;查两边字符集。第二目标用户是否存在imp 不会自动建用户用户不存在会报 ORA-00959。第三表空间是否够导入大表前先看目标表空间剩余。这三件事确认完再动手比导到一半失败回滚省事得多。4.2 从用户到表的导入命令# 用户模式导入FROMUSER 到 TOUSER 可以做 schema 改名 imp system/managerORCL FROMUSERSCOTT TOUSERSCOTT_NEW \ FILED:\dump\scott_20240101.dmp LOGD:\dump\scott_imp.log # 表模式导入只导指定表 imp scott/tigerORCL TABLES(EMP,DEPT) FILED:\dump\emp_dept.dmp \ IGNOREY LOGD:\dump\emp_dept_imp.log # 全库导入忽略已存在对象错误 imp system/managerORCL FULLY FILED:\dump\full.dmp \ IGNOREY LOGD:\dump\full_imp.log第一行FROMUSER和TOUSER是 imp 的杀手锏能把源 schema 的对象导到目标 schema 下做环境隔离时特别有用比如把生产数据导到测试用户。第二行IGNOREY表示对象已存在时跳过而不报错表模式导入到已有表的库时必须加否则一遇到已存在的表就中断。第三行全库导入同理IGNOREY几乎是标配。所有命令都带 LOGimp 的报错比 exp 更多更杂日志是唯一能回溯的依据。4.3 导入顺序与依赖问题imp 导入时会自动处理大部分依赖但有几类对象顺序敏感序列SEQUENCE的当前值、触发器、以及外键约束。默认情况下 imp 先导表结构和数据再导索引约束外键一般能自动处理。但如果目标库已有数据且外键冲突会报 ORA-02291。解决办法是先CONSTRAINTSN跳过约束导入数据导完再单独补约束。序列的当前值 imp 会尝试恢复但如果导入过程中有应用在写库序列可能被推高这点在割接窗口里要留意。# 先导数据不导约束适合目标库已有外键的场景 imp scott/tigerORCL FROMUSERSCOTT TOUSERSCOTT_NEW \ FILED:\dump\scott.dmp CONSTRAINTSN IGNOREY LOGD:\dump\imp_noconstraint.logCONSTRAINTSN只跳过约束索引和触发器照常导。导完数据后需要手工或再跑一次带ROWSN的导入来补约束ROWSN表示只导结构不导数据两者配合能实现分阶段导入。这个组合在数据量大、约束多的库上很实用代价是多一次导入操作。5. 避坑清单那些让导入导出卡住的真实原因5.1 现象imp 报 IMP-00010 不是有效的导出文件原因通常是拿数据泵的 dmp 去喂 imp或者文件在传输中被截断、被当文本改过编码。解决先用expdp对应的impdp试确认文件类型检查文件大小和源端是否一致FTP 传输要用二进制模式ASCII 模式会破坏二进制文件。这个坑在跨机器拷贝 dmp 时高发血泪经验是传完先比对 MD5。5.2 现象导入中文全是问号原因是源库和目标库字符集不一致比如源是 ZHS16GBK目标是 AL32UTF8而 dmp 里的字节流按源库编码解释。解决导入前确认两边NLS_CHARACTERSET不一致时要么改目标库字符集风险高需停机要么在导入会话里设置NLS_LANG环境变量匹配源库编码。NLS_LANG的格式是SIMPLIFIED CHINESE_CHINA.ZHS16GBK这种设错等于没设。5.3 现象exp 导出到一半报 ORA-01555 快照过旧原因是用了CONSISTENTY但回滚段不够支撑整个导出时长。解决加大 UNDO 表空间或去掉一致性导出改成分批按表导或把大表拆成多个 QUERY 条件分批导。别指望调大UNDO_RETENTION就万事大吉导出时长超过保留时间照样报。5.4 现象PL/SQL Developer 点导入导出没反应或报找不到 exp原因是 PL/SQL 的导入导出向导依赖本机 bin 目录下的 exp.exe/imp.exe路径没配或位数不匹配都会失败。解决在 PL/SQL 的偏好设置里确认 Oracle Home 指向正确的客户端目录把这份 64 位 exe 放进该目录的 bin 下重启 PL/SQL。32 位 PL/SQL 配 64 位客户端也会出问题位数要一致。5.5 现象导入后表在但数据是空的原因是导出时用了ROWSN或者导入时加了ROWSN或者IGNOREY跳过了已存在的表导致数据没进去。解决查导出日志确认是否带 ROWS 参数导入时如果目标表已存在且想覆盖数据得先 truncate 或 drop 再导IGNOREY只是跳过不覆盖。这个坑最隐蔽因为命令不报错导完一看数据没变。6. 把 exp/imp 用稳的几个进阶习惯真正让这套老工具在生产里不出事的不是记住多少参数而是几个固定动作。第一个习惯是导出前先跑一次exp helpy和imp helpy确认 exe 和 DLL 在当前会话里是通的这一步十秒钟能挡掉一半“工具没配好”的低级故障。第二个习惯是任何导出都带 LOG 且导出后立刻看日志尾部exp 的成功提示是“成功终止导出, 但没有警告”有警告也要逐条看警告里往往藏着对象被跳过的信息。第三个习惯是导入前做一次“空跑”用imp ... SHOWY只列出 dmp 里的对象清单而不实际导入确认里面确实有你要的表和用户。SHOWY配合LOG能把 dmp 内容打印出来是判断 dmp 是否完整的后悔药。# 只查看 dmp 内容不导入确认对象清单 imp scott/tigerORCL FILED:\dump\scott.dmp SHOWY LOGD:\dump\show_content.logSHOWY会遍历 dmp 并输出对象定义不写库适合在正式导入前核对。注意它仍然需要连库因为要解析目标环境但不会产生数据变更。第四个习惯是版本对齐检查。下面这张表是我排错时常用的对照遇到兼容性报错先对一遍场景源端工具目标库版本是否可行11g 导 11gexp 11g11g可行11g 导 12cexp 11g12c可行低到高12c 导 11gexp 12c11g不可行高到低报错数据泵 dmp 用 impexpdp任意不可行体系不同32 位 exe 放 64 位环境exp 32bit任意不可行位数不匹配最后说一个验证导入是否真正成功的技巧别只看 imp 返回“成功终止导入”要连库跑SELECT COUNT(*)对源库和目标库的关键表行数再抽查几张表的MAX(主键)或时间字段。行数对得上、抽样数据对得上才算导完。从那以后我每次导完 dmp 都强制走一遍行数比对和SHOWY预检宁可多花五分钟也不在割接当晚被一个空表打脸。希望帮到你。本文还有配套的精品资源点击获取
锦
锦皓数字建站
深耕本土企业品牌数字化升级,专注原创端正雅致商务官网,从视觉设计到稳定运维全程保驾护航。