I have tried the insert exception update method. That took an incredibly long time.
Next I tried a Merge "upsert". That took almost 5 hours as well.
I have a primary key on the target table and the source data is sorted by those key values.
I am breaking the rows into logical blocks of 50,000 and committing.
explain plan shows access by index rowid for both tables
I am out of ideas. Any suggestions welcomed.