Thanks Martin!!!
We are using 10g. Found the guide
http://docs.oracle.com/cd/B19306_01/java.102/b14355.pdf
It mentions the behavior for Prepared Statement as:
For a prepared statement batch, it is not possible to know which operation failed.
The array has one element for each operation in the batch, and each element has a
value of -3. According to the JDBC 2.0 specification, a value of -3 indicates that
an operation did not complete successfully. In this case, it was presumably just one
operation that actually failed, but because the JDBC driver does not know which
operation that was, it labels all the batched operations as failures.
The method has not been implemented as expected
Thinking of some other way of implementation by which I can track the failed statements.