Depending on your version of Oracle and / or the parameters that you supply, dbms_mview.refresh may execute TRUNCATE followed by a direct load. TRUNCATE is a DDL command, and fixing is meant as such problems. Direct loading does not require fixing.
If you are using a newer version of Oracle, I think 10.2+, you can set atomic_refresh to TRUE and update in a single transaction using standard DELETE / INSERT. This method can be quite slow, though.
David source share