Pokud si dobře vzpomínám, ovladače Oracle JDBC (alespoň ty starší - neřekli jste nám, jakou verzi používáte) nepodporují setBytes() (nebo getBytes() ).
Podle mých zkušeností používám setBinaryStream() je mnohem spolehlivější a stabilnější:
InputStream in = new ByteArrayInputStream(data);
pstmt.setBinarySream(4, in, data.length);