I find deleting rows via SQL passthru is efficient:
proc sql;
connect to Oracle ( <Oracle connection details> );
execute (delete from MyOracleDatabase.MyOracleSchema.MyOracleTable
) by Oracle;
disconnect from Oracle;
quit;
I also find PROC DATASETS APPEND is good for loading data, but you normally need to tweak the INSERTBUFF = option to get good loading performance:
libname MyOracle Oracle <Oracle connection details> insertbuff = 10000;
proc datasets library = MyOracle nolist;
append base = MyOracleTable data = MySASLib.MySASTable;
run;
quit;