专栏首页bisal的个人杂货铺Oracle导入导出的常见错误

Oracle导入导出的常见错误

做数据的导入导出操作,最常用的就是imp/exp和impdp/expdp,经常会碰见各种错误,之前总结过一些,《解决导入过程中出现的ORA-02289错误》、《生产数据导入测试环境碰见的一些问题》。

补充一些最近碰见的错误。

1. exp导出提示"PLS-00302:必须说明SET_NO_OUTLINES 组件"

如果客户端是Oracle 11g,而服务器端是Oracle 9i,执行exp就会有如下错误:

Export: Release 11.1.0.6.0 - Production on 星期五 7月 15 21:40:58 2011     Copyright (c) 1982, 2007, Oracle.  All rights reserved EXP-00056: 遇到 ORACLE 错误 6550   ORA-06550: 第 1 行, 第 41 列:   PLS-00302: 必须说明 'SET_NO_OUTLINES' 组件   ORA-06550: 第 1 行, 第 15 列:   PL/SQL: Statement ignored   EXP-00000: 导出终止失败  

Oracle不同版本导入导出存在一些问题,比如从Oracle 9i中exp出来的dmp文件(在安装有oracle 9i的机器上使用exp命令),可以imp到Oracle 11g中去(装有Oracle 11g的机器),但是反过来确实不行。

同时,不能直接在客户端(安装有Oracle 11g)上使用exp命令向服务器端(Oracle 9i)上的数据库发出请求导出数据到客户端机器上,就会提示“PLS-00302”。

这就是所谓向下兼容。

2. imp导入dmp文件时报错"IMP-00038"

执行imp导入操作,提示,

IMP-00038: Could not convert to environment character set’s handle  IMP-00000: Import terminated unsuccessfully

这是因为文件导出用的expdp,而导入时用的imp,所以导出导入格式不一样。

3. 执行imp导入提示“IMP-00003”

imp导入提示,

IMP-00017: following statement failed with oracle error 2298: "ALTER TABLE "A" ENABLE CONSTRAINT REFEREN" "REF_A"" IMP-00003: ORACLE error 2298 encountered ORA-02298: cannot validate (REFERENCE_O) - parent keys not found IMP-00017: following statement failed with ORACLE error 2298: Import terminated successfully with warnings.

原因有可能是在导出的时间某个表已经被导出了,可是他外键关联有数据变化,导致不一致,所以报错。

根本原因,exp不能保证事务的完整性,例如导出主表,随后在主表增加记录,然后在子表增加记录,提交,这是很可能的。

解决方案是在导出指令中,加入参数consistent=y,默认为no,其目的就是保持一致的作用。例如,

$ exp system/oracle file=/home/oracle/exp.dmp owner=oracle consistent=y

如果没用consistent=y,已经完成了导入,存在违反约束的数据,此时就是需要创建约束,可以采用novalidate子句,或者找出不规则的数据,清除之后再重新创建约束,可以参考《Oracle违反约束数据的workaround》和《表中已存重复数据的情况,如何增加唯一性约束?》。

4. 执行imp导入提示"IMP-00013"

执行imp导入操作,提示,

IMP-00013: only a DBA can import a file exported by another DBA IMP-00000: Import terminated unsuccessfully

原因就是exp导出的时候,用的DBA角色的账号,因此要求导入的账号,需要含有DBA角色。但一般很有可能,要导入账号是普通账号,没有DBA角色,也不可能临时被授予,这就比较费劲。

可能的解决方案:

1. 导出用户,执行导出前临时revoke DBA角色,完成导出后再授予DBA角色。

2. 授予导入用户DBA的角色。

3. 授予导入用户imp_full_database的角色。

每种方案,可能适用于不同的场景。比如方案1,可以算是临时的方案,但看着就不是很专业,对于一些测试库,要求不高,可以随意一些。方案2,这就会让导入的用户,有一些高级别的操作许可,仅仅为了导入数据这么做,实际上增加了一些风险。方案3,没有授予DBA角色,但一些环境下,可能不会允许随意授予角色,例如建荣曾举了一个案例,《对IMP-00013问题的思考(r3笔记第71天)》。

因此可以说没有最佳方案,只有最合适方案,针对不同的场景,选择最适合的,这才是最重要的。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 试用ODU软件恢复corrupt block

    Oracle的数据恢复处理,有各种方法工具支持,在这方面,我算是一个新手,也是处于不断的学习中。

    bisal
  • 《Oracle Concept》第三章 - 2

    按照《Oracle Conecpt》的结构一起了解Oracle数据库,这是学习Oracle从入门到精通的基础。

    bisal
  • 《Oracle Concept》第三章 - 5

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/...

    bisal
  • 业界 | 快手AI技术副总裁郑文:为什么说AI是短视频平台的核心能力

    郑文是美国斯坦福计算机系博士,研究方向主要集中在计算机图形学和电影特效方面,毕业之后在美国从事机器学习和计算机视觉相关研究,2016 年回国后加盟快手,现任快手...

    机器之心
  • 程序生成之编译、链接、加载浅析

    程序生成之编译、链接、加载浅析 最近笔者看论文烦得慌,便又重新拾起之前没有完全完成的交叉编译,准备在网上找资料,好好研究一下。 讲道理,笔者其实对编译链接的...

    剑影啸清寒
  • 快手AI技术副总裁郑文:为什么说AI是短视频平台的核心能力

    7月初举办的中国软件研发管理行业峰会(CSDI)上,快手AI技术副总裁郑文针对AI技术在短视频领域的应用做了精彩演讲。他介绍了人工智能技术是如何在快手整个业务流...

    量子位
  • 15个国外顶级的大数据分析工具

    嵌入式分析 在传统业务应用程序(如HR系统,CRM或ERP)的范围内提供商业智能。这些分析在用户的正常工作流程中提供上下文敏感的决策支持。

    Blue姐
  • 0472-Hive中TimeStamp精度问题分析

    Hive中使用TimeStamp时,时间戳默认是精确到秒的,那在Hive中如何处理需要精确到毫秒的时间戳呢?本篇文章Fayson主要说明下Hive时间戳的转换及...

    Fayson
  • 《程序员的自我修养》第二章学习笔记

    第二章 编译和链接 2.1被隐藏了的过程 我们知道,一个程序由源代码到可执行文件往往由这几步构成: 预处理(Prepressing)-> 编译(Compilat...

    xcywt
  • AI 诊疗为何还停留在实验室?数据是硬伤

    想象一下:在未来的某一天,如果 AI 诊疗成为了现实,你就能直接在医院用电脑看病了。通过化验的数据,系统很快就给了你一个诊断结果,让你乖乖去开药吃药,甚至决定要...

    AI科技评论

扫码关注云+社区

领取腾讯云代金券