I have some (5) rename statements in a plsql script
drop table new;
rename old to new;
\"old\" tables hold very valuable information.
Given your comments "Its a daily process" and "Yes, i am worried about the lapsus between the drop and rename statements"
How much money do you have (or more specifically, do you have the partitioning option) ? If so look at partition exchange
You have your permanent table consisting of a single partition. At the end of the day you swap that partition with the table (as a single atomic statement). By not dropping/renaming your main table, you shouldn't invalidate any packages etc (though that may depend on DB version).
Failing that use a view and do a CREATE OR REPLACE VIEW main AS SELECT * FROM table_a and each night you replace the view with a new one on the different table. That probably would invalidate packages though.