The status array returned from T2 contains a different value compared to T4. T4 returns -2 and T2 returns 1.
The oracle JDBC documentation states:
0 or greater — the command was processed successfully and the value is an update count indicating the number of rows in the database that were affected by the command’s execution Chapter 14 Batch Updates 121
Statement.SUCCESS_NO_INFO — the command was processed successfully, but the number of rows affected is unknown
Statement.SUCCESS_NO_INFO is defined as being -2, so your result says everything worked fine, but you won't get information on the number of updated columns.
For a prepared statement batch, it is not possible to know the number of rows affected in the database by each individual statement in the batch. Therefore, all array elements have a value of -2. According to the JDBC 2.0 specification, a value of -2 indicates that the operation was successful but the number of rows affected is unknown.