Ако си спомням правилно драйверите на Oracle JDBC (поне по-старите - не ни казахте коя версия използвате) не поддържат setBytes() (или getBytes() ).
Според моя опит, използвайки setBinaryStream() е много по-надежден и стабилен:
InputStream in = new ByteArrayInputStream(data);
pstmt.setBinarySream(4, in, data.length);