我用一个过程从一个远方数据库用for loop ...end loop隐式游标处理数据,insert到办公室另一个数据的一个表里,处理到16万多行时总是出错,最后找到问题:
---------------
系统信息:
ORA-01406: 读取的列值被截断
在执行S_DBA01_GCYC过程时,执行到JH=STT763RQ=12-3月 -05时:
原因:
在宿主语言程序中,FETCH(取值)操作被迫截断一字符串。程序缓冲区对此列来说不够大,不能放下全部的字符串。游标(cursor)返回的值为+3
措施:
增大列缓冲区以放下最大的列值。或者进行适当的处理
----------------------------------
虽然我不能查看远方数据库的表的结构,但是select出出问题的那行数据,一个字段一个字段的和本地数据库表的字段对比,没有发现字段太小的情况,经过查找资料,发现很可能是oracle的一个补丁,在这个连接有说明:
http://www.dbasupport.com/forums/archive/index.php/t-15697.html问题是,我用的是Oracle9i,不知道到底改打523214 和893259 哪个不顶,液找不到布丁的下载地址,
还有就是,改在我办公室的oracle上打,还是在远方数据库上打?
---------------
系统信息:
ORA-01406: 读取的列值被截断
在执行S_DBA01_GCYC过程时,执行到JH=STT763RQ=12-3月 -05时:
原因:
在宿主语言程序中,FETCH(取值)操作被迫截断一字符串。程序缓冲区对此列来说不够大,不能放下全部的字符串。游标(cursor)返回的值为+3
措施:
增大列缓冲区以放下最大的列值。或者进行适当的处理
----------------------------------
虽然我不能查看远方数据库的表的结构,但是select出出问题的那行数据,一个字段一个字段的和本地数据库表的字段对比,没有发现字段太小的情况,经过查找资料,发现很可能是oracle的一个补丁,在这个连接有说明:
http://www.dbasupport.com/forums/archive/index.php/t-15697.html问题是,我用的是Oracle9i,不知道到底改打523214 和893259 哪个不顶,液找不到布丁的下载地址,
还有就是,改在我办公室的oracle上打,还是在远方数据库上打?
解决方案 »
- 中文标题搜索
- oracle中按照字段中的值进行分组统计
- ORACLE 数据库实例连接错误
- 关于oracle事务这件事
- 各位老大,我现在有一个sqlserver的存储过程,想改成oracle的。请帮手
- 存儲過程傳遞視圖值的問題.等你拿分﹗﹗﹗
- 散分100,高分请教一个有关管理服务器的问题!
- imp-00085:指定的多个输入文件为无界导出文件!? 是我exp时候出错了吗?
- 急!急!急! 有关8.1.7中调试group by出现的问题
- 如何删除(或者修改)一个Datafile?
- 关于如何分配计算机资源的问题--非高手估计不好回答,欢迎大家共同参与解决,谢谢
- oracle数据库中的表被truncate掉了,怎么恢复?
操作环境是:
也是用一个过程通过databaselink 从远程oracle9i数据库用for loop ...end loop隐式游标处理longrow类型数据,insert到本地oracle10g的一个表里的blob字段中,处理到20多万条记录时报了ora-01406的错误,但是把此条记录跳过后还能再转一部分数据,然后又报错了!后来,等下班后9i上的系统业务办理停止了,又跑了一遍过程,结果转到70多万又出错了,又跳着转,但是这样太费劲了,要跳好多次,几十万的数据这样处理肯定不行,于是我狠心一个月一个月的跳着转(这样有点很不负责任,但是每办法了,施工现场没办法上网求助!),最后竟然从06年4月到12月的数据里有些转不进去,从07年至今的数据还好只有一条转不进去,跳过了他!还有公司同时说也遇到类似问题,猜测是不是oracle9i到10g的问题,但是我在现场试过了,把存储过程和database link 迁移到9i的数据库上,还是不行!现在我想求助高手来帮忙了!
:)