Hvis jeg husker rigtigt, understøtter Oracle JDBC-driverne (i det mindste ældre - du fortalte os ikke, hvilken version du bruger) ikke setBytes() (eller getBytes() ).
Min erfaring er at bruge setBinaryStream() er meget mere pålidelig og stabil:
InputStream in = new ByteArrayInputStream(data);
pstmt.setBinarySream(4, in, data.length);