转摘:ORACLE:IMP工具ignore=y的一个问题

ORACLE的EXP和IMP工具是大家会经常使用到的。在近期的工作中,发现IMP一个有意思的问题。
我们有一个数据集中的业务,因为数据量不大且传输数据不是很多所以采用定时导出EXP和定时IMP的方法。因为数据是累加增长的所以在导入时我们使用了IMP的ignore=y的参数,即告诉IMP如果当前表存在就不创建表结构而直接导入新的数据。
但是今天我在检查自动发送的错误日志时,发现这样的错误信息:
. . importing table "XXXXX_tablename"
IMP-00058: ORACLE error 904 encountered
ORA-00904: "XXXX_column": invalid identifier

我立刻意识到,前端应用的表结构发生了变化!但是我上个月的时候已经有规定,所有的上线系统后台数据库表结构修改都必须通知我呀。检查该表最后的修改日期:2007-6-8!怎么会这样?如果早在6月份就修改了结构为什么一直我的日志没有报错,单单在今天报错?
询问研发,发现这张表的数据使用完成即删除,但是昨日因为临时需要而没有删除使用的数据。分析我们的操作流程:导出EXP操作发生在午夜12点,也就是说一般情况下,应该是一条数据都没有导出的,而因为昨日的特殊需要造成有数据被导出了!再分析以前正确的日志,终于发现问题:
如果是没有数据被导出,在使用IMP导入并使用ignore=y参数时,ORACLE根本 不检查要导入的数据结构和现存在数据库中表的结构是否相同。就直接显示如下信息;

. . importing table "XXXXX_tablename"
0 rows imported
只有真要有数据需要导入时,才会检查数据结构的一致性问题!
所以就会差生一种总是可以成功导入的假象。
[@more@]

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/786540/viewspace-1007744/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/786540/viewspace-1007744/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值