谢谢 hylaeion(☆霖湘凝☆) ,但我导入时已经使用了ignore=y,如下:
imp 用户名/密码 file=文件名.dmp rows=y ignore=y另:ignore=n 也试过,还是不行啊。

解决方案 »

  1.   

    问一个问题 你已经把原数据库的所有table、view都删除了是指DROP掉还是DELETE 掉?
    1.如果是DROP掉那你岛如的时候应该不会有这样的问题
    2.如果是DELETE掉 那么可能的原因是由于VARCHAR2那个字段造成
      比如:原先你倒出的时候一个中文字符对应的是2个字节,但是你变更过数据库中一个中文字符对应的是3个字节,那就有可能超出长度.当然这只是猜测.
      
    解决办法:
        具体的情况你只有把你的这个表的栏位置上限都扩大,比如改成NUMBER(20),VARCHAR2(4000)然后再导如看是否有问题 如果成功在去数据库中查询这个表看是那些数据超出了原来的限制就知道了
      

  2.   

    谢谢 baojianjun(包子) :我是Drop掉的,但就是不行啊。我按你所说把字段都扩大,如扩大成number(100),varchar(4000),但还不是报同样的错误。我又把number(5)改为varchar(1000)时,不再报此错误,
    但imp在导入此表时就没有响应了,打开TOAD操作此表时说“资源正忙”,删都删不掉。
      

  3.   

    那我觉得应该是number(5)在作怪了,
    因为dmp中导出的数据实际被转换成二进制时得到的可能是近似值,
    你在中间又对他做了加工,再导回去就可能有问题了,
    据说dblink可以解决,不妨试试……
      

  4.   

    TO hylaeion(☆霖湘凝☆):
    能具体点吗?现在数据在dmp文件中,就是读不出来,DBLink有什么用?
    还有别的什么办法能读dmp文件吗?
      

  5.   

    把你导出的exp命令贴出来吧。
    也有可能使导出的时候已经存在问题了
      

  6.   

    imp的库最好同名的表drop掉,imp的时候会自动重建
      

  7.   

    exp pgc@cdgdc_XXX.XXX.XX.XX file=c:\exp_1222.dmpimp xkpg/xkpg2006@cdgdc_XXX.XXX.XX.XX file=c:\exp_1222.dmp fromuser=pgc touser=pgc rows=y ignore=y
    ignore=n也试过整个pgc库的table、view、sp等都全部drop掉。
      

  8.   

    imp pgc@cdgdc_XXX.XXX.XX.XX file=c:\exp_1222.dmp full=y如果导出没条件可以用这个啊。
      

  9.   

    导入时加上full=y仍出现上述问题,郁闷啊...
      

  10.   

    drop user pgc cascade;
    create user pgc identified by ................
    grant connect,resource to pgcimp ....
      

  11.   

    你的数据库中是不是只有table、view还有没有其他的例如Functions、Procedures,是不是另外建立过表空间 和 用户。如果没有清楚干净是不能重新恢复的。你可以这样试下。找台干净的机器重新安装ORACLE后恢复下那个备份的数据,看是不是能恢复。如果是那就是还有东西没有清楚,再仔细检查下。
      

  12.   

    晕!不是这么麻烦吧,导入的话还要将以前的全删掉,
    有没有其它的办法啊?
    导入的话,要将table,view,Functions、Procedures都删掉啊
      

  13.   

    我在别的机子重装Oracle导入,
    还是出现一样的问题,
    郁闷...