When using the CHAR datatype, a difference in column size result in continuous OOS on the table when using Compare.
A column on Source may be defined as char(1) but as char(3) on Target.
Executing a Compare on the table will result in all rows being reported as OOS.
Executing a repair will repair all rows on the table but a subsequent execution of compare will list all rows as OOS again.
This occurs because Oracle pads the char datatype with spaces, e.g. char(3) column with a value of 9 will be padded to ' 9'.
This causes a data mismatch with the char(1) column which has a value of '9', resulting in compare identifying the row as OOS.
To resolve this, ensure that any char() columns are the same size on Source and Target.