Wenn ich mich richtig erinnere, unterstützen die Oracle JDBC-Treiber (zumindest ältere - Sie haben uns nicht gesagt, welche Version Sie verwenden) setBytes() nicht (oder getBytes() ).
Nach meiner Erfahrung mit setBinaryStream() ist viel zuverlässiger und stabiler:
InputStream in = new ByteArrayInputStream(data);
pstmt.setBinarySream(4, in, data.length);