我有一个Oracle Database 10.2.0.4实例。
我有基于spring framework 3.0.5,hibernate 3.5.6的java-application。
我有一个带有BLOB列(blobContent BLOB
)的表和一个带有java.sql.Blob
字段的实体(在hibernate XML映射中映射为<property name="blobContent" type="blob"/>
)。
我使用的是Oracle10gDialect。
我定期尝试ORA-01461在此表中插入行。
我尝试了几个Oracle JDBC驱动程序(10.2.0.4,10.2.0.5和11.2.0.3)但没有任何成功。
我的谷歌搜索和搜索metalink数据库的这个问题失败了。
我反编译了Oracle JDBC驱动程序,并从方法oracle.jdbc.driver.OraclePreparedStatement.setBinaryStream(int, InputStream, long)
到oracle.jdbc.driver.DBConversion
开始检查代码,直到oracle.jdbc.driver.OracleConversionInputStream
。
只要这段代码可以被认为是OK,一切看起来都不错。)
请告知如何跟踪此问题...可能在Oracle端(?)...可能正在寻找一些隐式转换... 可能是我错过了一些有关此问题的Oracle Metalink文章?
答案 0 :(得分:4)
我认为遵循oracle bug是导致错误的主要原因。升级数据库后,我会再次检查问题并接受我自己的答案。我希望它对其他人有用。
顺便说一句,我们的平台也是AIX / 64x。
Oracle Bug 9018715“没有长列类型的更新和插入的间歇ORA-1461”
B型 - 缺陷
已在产品版本11.1.0.7.0中修复
严重程度2 - 严重失去服务
产品版本10.2.0.4.0
状态93 - 已关闭,未经Filer验证
平台212 - POWER Systems上的IBM AIX(64位)
于2009年10月14日创建
平台版本5.3
201年12月27日更新
基础错误N / A
数据库版本10.2.0.4.0
影响平台通用
产品来源Oracle
ORA-1461:只能将LONG值绑定到LONG列中 在客户端应用程序中经常收到。
在insert和update语句以及不同的表中可以看到错误。 这些陈述属于这种类型: 插入列(,,, ..) 值(:1,:2,:3,...:n); 要么 update set =:1,=:2,=:3,.. =:n其中=:m; 并且没有列的类型为lONG。
将rdbms从10.2.0.3升级到后,错误开始出现 10.2.0.4。 它经常发生,并且在不同的表上。错误发生后 发生,重新执行相同的SQL通常会成功。
数据库字符集:WE8ISO8859P15。 Windows客户端。 NLS设置:NLS_LANG = American_America.WE8ISO8859P15。
应用程序通过Jdbc瘦驱动程序版本10.2.0.1进行连接。 使用jdbc驱动程序版本10.1.0.5的测试也会失败。