Se bem me lembro, os drivers Oracle JDBC (pelo menos os mais antigos - você não nos disse qual versão está usando) não suportam
setBytes() (ou getBytes() ). Na minha experiência, usando
setBinaryStream() é muito mais confiável e estável:InputStream in = new ByteArrayInputStream(data);
pstmt.setBinarySream(4, in, data.length);