Oracle e BLOB
Resolvi a pouco um problema que me importunava há alguns dias, era com o uso de BLOB em oracle.
Basicamente, o que tenho na aplicação é um objeto java que quero serializar em BLOB e depois lê-lo, mas resultava nos seguintes erros:
</p>
java.io.IOException: Message [ORA-4283276] not found in 'oracle.jdbc.dbaccess.Messages'.
at oracle.jdbc.dbaccess.DBError.SQLToIOException(DBError.java:717)
at oracle.jdbc.driver.OracleBlobInputStream.needBytes(OracleBlobInputStream.java:249)
at oracle.jdbc.driver.OracleBufferedStream.read(OracleBufferedStream.java:158)
at java.io.ObjectInputStream$PeekInputStream.read(ObjectInputStream.java:2150)
at java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2163)
at java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java:2631)
at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:734)
at java.io.ObjectInputStream.<init>(ObjectInputStream.java:253)
at claudius.Serial56.writeAndReadSetBinary(Blob56.java:111)
at claudius.Serial56.main(Blob56.java:399)
# =========================================================
java.sql.SQLException: ORA-21608: duration is invalid for this function
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
at oracle.jdbc.oci8.OCIDBAccess.check_error(OCIDBAccess.java:2355)
at oracle.jdbc.oci8.OCIDBAccess.createTemporaryLob(OCIDBAccess.java:3678)
at oracle.jdbc.dbaccess.DBAccess.createTemporaryLob(DBAccess.java:1355)
at oracle.sql.LobDBAccessImpl.createTemporaryBlob(LobDBAccessImpl.java:373)
at oracle.sql.BLOB.createTemporary(BLOB.java:778)
at claudius.SerialBase.buildBlob(SerialBase.java:205)
at claudius.Serial56.writeAndReadBLOBCreateTemporary(Blob56.java:151)
at claudius.Serial56.main(Blob56.java:405)
# =========================================================
java.io.IOException: Message [ORA-4282764] not found in 'oracle.jdbc.dbaccess.Messages'.
at oracle.jdbc.dbaccess.DBError.SQLToIOException(DBError.java:717)
at oracle.jdbc.driver.OracleBlobInputStream.needBytes(OracleBlobInputStream.java:249)
at oracle.jdbc.driver.OracleBufferedStream.read(OracleBufferedStream.java:158)
at oracle.jdbc.driver.OracleBufferedStream.read(OracleBufferedStream.java:131)
at claudius.Serial56.writeAndReadInsertEmpty(Blob56.java:284)
at claudius.Serial56.main(Blob56.java:412)
</font>
A versão do Oracle era 9.2.0.6 (disponível apenas no metalink.oracle.com), entã o ambiente foi atualizado para o 9.2.0.7 (último da série 9.2.x), mesmo porque no release notes não indicava nenhuma correção específica do erro que apresentava para mim.
O conselho então é: atualize a versão do Oracle para a mais recente
Deixe um comentário