I wish to do a serial, logging insert of bulk data from one table to another. This is once-of as part of a data migration so swapping partitions, etc is not an answer.
The SQL will be of the following structure:
INSERT /*+ APPEND */ ... SELECT FROM ....
What might cause Oracle to run this a convential insert rather than a direct path insert?
For example, I believe having a trigger on the table will cause Oracle to conduct a convential insert. Is there a definitive list of restrictions?
A quote from http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:1211797200346279484 :
"insert /*+ append */ will ignore the append hint and use conventional path loading when the table has referential integrity or a trigger..." - Tom Kyte
From https://docs.oracle.com/cd/E18283_01/server.112/e17118/statements_9014.htm#sthref6486
However the list in the manual is not exhaustive and is not completely accurate. For example, referential integrity constraints do not block direct-path INSERT if that constraint is part of reference partitioning.