Consider taking another look at mviews since a properly set up mview with a corresponding mview log on the parent table (so that fast refreshes are possible, which works over a db link) will be very efficient for both performance and redo generation (as only the changes to the parent table are refreshed into the mview instead of the entire table). This setup works over a database link.
As for your insert /* +APPEND */
specific question:
What is the value of: select force_logging from v$database;
? Table level nologging is ignored if the database is set to force_logging. You can turn off force_logging via: ALTER DATABASE NO FORCE LOGGING;
In addition: Insert /* +APPEND */
is ignored if there are constraints or triggers on the table. Simply disabling the constraints and triggers is sufficient to allow the direct path load. You can verify whether a direct path load was done if you receive a "ORA-12838: cannot read/modify an object after modifying it in parallel" error when selecting from the table after a direct path load, but before a commit is issued.
See AskTom for a more detailed description of insert /* +APPEND */
: https://asktom.oracle.com/pls/apex/f?p=100:11:0::NO::P11_QUESTION_ID:1211797200346279484
Provided your table is set to nologging (and your database isn't set to force_logging), and you drop your indexes, disable triggers and constraints on the table, then do a direct path load, that really is all you can do to suppress redo generation.