Performance Issue after Truncate and Load of a table in Oracle
Loading Truncated Table

Assume staging table is X_SOURCE, and target table to load is X_TARGET, and any calculations performed when loading X_TARGET can be done via SQL functions or user-defined functions.  Here we load col_a as is, inserting current date into col_b, col_c is multiplied by 2 times, and col_d as is.

alter table x_target nologging;
alter session enable parallel dml;
-- possibly drop indexes

insert /*+ append parallel(6) */ into X_TARGET 
   (select col_a, sysdate, col_c * 2, col_d from X_SOURCE);
-- recreate indexes if they were dropped
alter table x_target logging;

-- then invoke RMAN commands to back up the table


The above has the following features:  


Turn off logging on the target table x_target to avoid logging
overhead 
The /*+ append */ hint appends data to the end of the table
and bypasses several steps done during normal inserts 
Dropping and recreating the indexes can be much quicker than doing index
maintenance during the load.
Don't forget to turn logging back on
Ensure a backup is done after the load


New Server Issues

If the new server has more CPU/memory/etc. and you are seeing longer run time, I would definitely run the DBMS_STATS.GATHER_SYSTEM_STATS('START', ...) procedure, (after creating a table to store the stats being gathered), run your truncate/load process, then run DBMS_STATS.GATHER_SYSTEM_STATS('STOP')  and then query your stats table, and use DBMS_STATS.SET_SYSTEM_STATS to set values that need to be adusted -- see Performance Tuning Guide for details.  If you are on Oracle 12, also look at DBMS_STATS.GATHER_PROCESSING_RATE -- run it too while your process is running.