热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

非规范处理IMP-00010错误一例-mysql教程

ExpImp堪称是Oracle产品系列中的经典之作,以其简单易用在技术人员中广受欢迎。虽然从10g开始,Oracle开始逐步使用DataPump来取

Exp/Imp堪称是Oracle产品系列中的经典之作,以其简单易用在技术人员中广受欢迎。虽然从10g开始,Oracle开始逐步使用Data Pump来取

Exp/Imp堪称是Oracle产品系列中的经典之作,以其简单易用在技术人员中广受欢迎。虽然从10g开始,Oracle开始逐步使用Data Pump来取代其作为数据小规模逻辑备份还原工具,但是Exp/Imp对于普通开发人员还是比较有吸引力的。

从技术角度看,使用Exp/Imp的优点之一是客户端运行,使用人员不需要连入数据库服务器端,就可以方便的进行数据备份还原操作。试想DBA也不会轻易允许人登录敏感的Oracle服务器本机。

1、闲话Exp/Imp

Exp/Imp在实践领域经常遇到两个问题:一个是字符集转换,另一个是客户端/服务器版本协调。字符集转换根源于客户端软件的多样性,这要求每次使用Exp/Imp的时候,都需要显示的进行nls_lang环境变量的设置,只有这样才能保证正确的数据字符导出和导入。注意:很多开发人员喜欢使用PL/SQL Developer中的exp/imp工具,其实是变相的调用Oracle客户端可执行程序,这种方法没有办法设置nls_lang参数,,会遇到很多麻烦。

客户端/服务器版本协调就比较麻烦。使用exp/imp工具进行备份还原,其中涉及到四个软件的版本问题,即导出源数据库版本、导出exp客户端版本、导入目标数据库版本和导入imp客户端版本。高版本的导出客户端生成的dmp文件,在低版本导入客户端导入的时候,是不被兼容的。所以,无论是Oracle MOS官方,还是网络大侠牛人们的文章,都列出的复杂的矩阵表,来表示四个软件版本对应关系。

理论上,如果违反了软件兼容性原则,导出的dmp文件是不能成功导入的。需要重新规划导出操作,比较麻烦。本文记录一次笔者采用非常规策略解决兼容性问题的案例,留待“走投无路”的朋友“不时之需”。

2、导入IMP-00010错误

笔者源数据库是11gR2,需要将一个演示数据schema导入到另一台服务器上。由于时间比较久了,已经忘记目标数据库的版本号。笔者想当然以为应该是11gR2的Oracle,于是采用Exp工具导出。

出于简单习惯,笔者选择在服务器上执行exp命令,这样导出数据库和客户端均是11gR2。

等到导入数据的时候,出现了问题。

D:\DDD>imp \"/ as sysdba\" file=DDD_TESTING_20150901_exp.dmp fromuser=ddd_testing touser=ddd_testing

Import: Release 10.2.0.1.0 - Production on Wed Sep 2 22:36:31 2015

Copyright (c) 1982, 2005, Oracle. All rights reserved.

Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Produc

tion

With the Partitioning, OLAP and Data Mining options

IMP-00010: not a valid export file, header failed verification

IMP-00000: Import terminated unsuccessfully

文件头不能识别,一般来说这种问题有两种可能:一种是文件出现坏块,在从FTP下载或者拷贝复制的过程中出现问题。另一种是版本兼容问题。

如果是第一种问题,理论上是没有其他办法,只能重新导出或者下载dmp文件。如果是兼容版本问题,需要检查一下目标数据库和导入客户端情况。

SQL> select * from v$version;

BANNER

----------------------------------------------------------------

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod

PL/SQL Release 10.2.0.1.0 - Production

CORE 10.2.0.1.0 Production

TNS for 32-bit Windows: Version 10.2.0.1.0 - Production

NLSRTL Version 10.2.0.1.0 – Production

导入目标是10g,而且客户端也是10gR2。这就出现了兼容性问题,低版本客户端“被认为”不能解析理解高版本客户端生成文件,所以才会报错拒绝导入。显示信息是文件头验证不通过。

3、非典型处理

笔者这时候基本没有别的选择。只能是回去重新用低版本客户端导出数据内容,或者选择Data Pump进行version调整的处理。但是在网络上,笔者找到了一种看似合理的处理方法。

Exp/Imp版本不兼容的现象,本质上是Oracle对于Dmp文件内容的限制。因为,Oracle担心低版本的Imp程序,不能理解高版本Dmp文件里面的内容和生成对象,所以才会有限制。笔者Dmp包里面只有数据表和一些普通索引对象,“高级”对象一个没有,这种限制其实没有意义。

那么,只需要将文件头稍做修改,让10gR2低版本客户端能够“认可”Dmp文件也就好了。根据这个思路,从网络上下载了notepad++编辑程序,直接打开Dmp文件。注意:这个过程其实有风险的,将近似二进制文件的Dmp以文本格式打开,要有一定心理准备。

打开文件后,可以看到文件头部信息,明显标注着Dmp文件版本11gR2内容。

非规范处理IMP-00010错误一例

将其修改为10gR2适应编号V10.02.01,之后保存。

非规范处理IMP-00010错误一例

保存后调用相同导入程序命令,导入正常开始。

D:\DDD>imp \"/ as sysdba\" file=DDD_TESTING_20150901_exp.dmp fromuser=dd_testing touser=dd_testing

Import: Release 10.2.0.1.0 - Production on Wed Sep 2 22:47:50 2015

Copyright (c) 1982, 2005, Oracle. All rights reserved.

Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Produc

tion

With the Partitioning, OLAP and Data Mining options

Export file created by EXPORT:V10.02.01 via conventional path

import done in ZHS16GBK character set and AL16UTF16 NCHAR character set

export client uses AL32UTF8 character set (possible charset conversion)

. importing UAT_TESTING's objects into UAT_TESTING

. . importing table "Aa" 0 rows imported

. . importing table "d" 0 rows imported

. . importing table "d" 134 rows imported

(篇幅原因,有省略……)

. . importing table "f" 0 rows imported

. . importing table "Xd" 0 rows imported

About to enable constraints...

Import terminated successfully without warnings.

导入动作简单的比较令人担心,只有启动约束命令。检查数据表和索引对象,确定导入成功。

SQL> select count(*) from dba_indexes where owner='DD_TESTING';

COUNT(*)

----------

1977

好在也是一个测试环境,有数据、约束和索引对象也就够用了,目标实现。

4、结论

推荐阅读
  • 本文介绍了 Oracle SQL 中的集合运算、子查询、数据处理、表的创建与管理等内容。包括查询部门号为10和20的员工信息、使用集合运算、子查询的注意事项、数据插入与删除、表的创建与修改等。 ... [详细]
  • 本文将详细探讨PHP中C的作用,并对比其他编程语言如Java和C的特点及其适用场景。 ... [详细]
  • Python学习day3网络基础之网络协议篇
    一、互联网协议连接两台计算机之间的Internet实际上就是一系列统一的标准,这些标准称之为互联网协议,互联网的本质就是一系列网络协议。二、为什么要有互联网协议互联网协议就相当于计 ... [详细]
  • 本文详细介绍了如何在Windows操作系统中通过Samba服务访问Red Hat Linux中的资源,包括配置Samba服务器、设置工作组名称、添加用户和共享目录等步骤。 ... [详细]
  • MySQL 5.7 服务端在 Windows 上的安装与配置
    本文详细介绍了在 Windows 系统上安装和配置 MySQL 5.7 服务端的方法,包括 my.ini 配置文件的设置、初始化数据库、启动服务以及设置用户权限等步骤。 ... [详细]
  • 图数据库与传统数仓实现联邦查询使用CYPHER实现从关系数据库过滤时间序列指标一、MySQL得到研报实体在Oracle中的唯一ID二、Oracle中过滤时间序列数据三、CYPHER ... [详细]
  • Java EE 平台集成了多种服务、API 和协议,旨在支持基于 Web 的多层应用程序开发。本文将详细介绍 Java EE 中的 13 种关键技术规范,帮助开发者更好地理解和应用这些技术。 ... [详细]
  • Java毕业设计项目:“传情旧物”网站(含源码与数据库)
    本项目介绍了如何配置和运行“传情旧物”网站,包括所需的技术栈、环境配置以及具体的操作步骤。 ... [详细]
  • 本文为初学者提供了一条清晰的学习路线,帮助他们逐步成长为优秀的Web开发人员。通过十个关键步骤,涵盖从基础到高级的各个方面,确保每位学习者都能找到适合自己的学习方向。 ... [详细]
  • 解决Win7安装SQL Server时NetFx3启动失败的问题
    在使用Win7系统安装SQL Server时,部分用户可能会遇到“启动Windows功能NetFx3时出错”的提示。本文将详细介绍这一问题的原因及解决方法。 ... [详细]
  • 无线鼠标应用:Remote Mouse
    Remote Mouse 是一款功能强大的无线鼠标软件,可将您的手机或平板设备变为遥控器,完美模拟键盘和鼠标操作,实现手机远程控制电脑。 ... [详细]
  • 本文介绍了如何使用Postman构建和发送HTTP请求,包括四个主要部分:方法(Method)、URL、头部(Headers)和主体(Body)。特别强调了Body部分的重要性,并详细说明了不同类型的请求体。 ... [详细]
  • MongoDB核心概念详解
    本文介绍了NoSQL数据库的概念及其应用场景,重点解析了MongoDB的基本特性、数据结构以及常用操作。MongoDB是一个高性能、高可用且易于扩展的文档数据库系统。 ... [详细]
  • Excel VBA自动化添加数字证书(续)
    本文继续探讨如何在Excel VBA中自动添加数字证书。上一篇文章因突发情况未能完成,本次将详细介绍证书的生成和集成方法。 ... [详细]
  • 申请地址:https://developer.apple.com/appstore/contact/?topic=expedite 常见申请理由:1. 我们即将发布新产品,这是一个媒体活动,我们无法承担任何风险,因此在多个方面努力提升应用质量。 ... [详细]
author-avatar
mobiledu2502897851
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有