ORA-01461 / BLOB / Hibernate

时间:2013-03-14 17:17:00

标签: java oracle jdbc

我有一个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文章?

1 个答案:

答案 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的测试也会失败。