Oracle导入导出数据时的常见错误

74次阅读
没有评论

共计 2027 个字符,预计需要花费 6 分钟才能阅读完成。

这篇文章主要讲解了“Oracle 导入导出数据时的常见错误”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着丸趣 TV 小编的思路慢慢深入,一起来研究和学习“Oracle 导入导出数据时的常见错误”吧!

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 子句,或者找出不规则的数据,清除之后再重新创建约束。

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 角色,但一些环境下,可能不会允许随意授予角色。

感谢各位的阅读,以上就是“Oracle 导入导出数据时的常见错误”的内容了,经过本文的学习后,相信大家对 Oracle 导入导出数据时的常见错误这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是丸趣 TV,丸趣 TV 小编将为大家推送更多相关知识点的文章,欢迎关注!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-28发表,共计2027字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)