紧急求助!ora-01406错误!

KevinCuoi 2007-03-26 11:40:19
我用一个过程通过databaselink 从远程oracle9i数据库用for loop ...end loop隐式游标处理longrow类型数据,insert到本地oracle10g的一个表里的blob字段中,处理到20多万条记录时报了ora-01406的错误,但是把此条记录跳过后还能再转一部分数据,然后又报错了!后来,等下班后9i上的系统业务办理停止了,又跑了一遍过程,结果转到70多万又出错了,又跳着转,但是这样太费劲了,要跳好多次,几十万的数据这样处理肯定不行,于是我狠心一个月一个月的跳着转(这样有点很不负责任,但是每办法了,施工现场没办法上网求助!),最后竟然从06年4月到12月的数据里有些转不进去,从07年至今的数据还好只有一条转不进去,跳过了他!

---------------
系统信息:
ORA-01406: 读取的列值被截断
在执行S_DBA01_GCYC过程时,执行到JH=STT763RQ=12-3月 -05时:
原因:
在宿主语言程序中,FETCH(取值)操作被迫截断一字符串。程序缓冲区对此列来说不够大,不能放下全部的字符串。游标(cursor)返回的值为+3
措施:
增大列缓冲区以放下最大的列值。或者进行适当的处理
----------------------------------
看了oracle 提供的上述错误信息,没什么帮助!

还有公司同事说也遇到类似问题,猜测是不是oracle9i到10g的问题,但是我在现场试过了,把存储过程和database link 迁移到9i的数据库上,还是不行!

现在我想求助高手来帮忙了!
...全文
686 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
KevinCuoi 2007-03-28
  • 打赏
  • 举报
回复
补充说一下:
这里源数据库(9i)中是照片表Longrow类型字段,目标库(10g)中照片表BLOB字段,
这肯定和字段长度定义没关系!

倒是有人说可能需要打补丁,但是,我找不到相关资料!
jdsnhan 2007-03-27
  • 打赏
  • 举报
回复
这是一个oracle bug,原来也曾遇到过。
使用别的方法导吧
junqiang 2007-03-26
  • 打赏
  • 举报
回复
也许是定义变量的长度太小,不足以接受字段的长度。
旧表中有字段的长度超过了你字义的变量长度。
zgh2003 2007-03-26
  • 打赏
  • 举报
回复
你单独把那条出问题的记录取出来Insert测试一下看看有没有问题

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧