Sexta-feira, 16 Setembro 2005

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:

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.(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)

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

Escrito por claudio at 3:58 PM categorizado por Java

Tags: dicas

Aceito no NetCAT

Fui aceito no NetCAT, o programa de testes de qualidade do NetBeans

"Dear NetCAT applicant,

Congratulations! As a result of fierce competition you have been selected to participate in the NetBeans 5.0 Community Acceptance Testing program.
The response to the program announcement have exceeded our highest expectations as we received 500+ valid applications within first 24 hours,which is 3 times more than what we originally planned. The selection process was difficult, but your qualifications and experience using NetBeans product perfectly matched our selection criteria."

Escrito por claudio at 4:11 AM categorizado por NetBeans

Tags: netbeans

 
     Navegue no histórico de mensagens: « First  « Prev   1 2 3 4 5   Next »  Last »