1. Is there a better performing/handling way.
can improve little bit. you are truncating tables first then dropping indexes this need I/O on indexes also. first drop indexes then truncate.

2. I am avoiding dropping and recreating the below tables as it invalidates some views and also want to use no-logging.
Oracle says ...
When an existing tablespace logging attribute is changed by an ALTER TABLESPACE statement, all tables, indexes, and partitions created after the statement will have the new default logging attribute (which you can still subsequently override). The logging attribute of existing objects is not changed.
so, better use object level nologging option.

3. Is TRUNCATE TABLE REUSE STORAGE good option here
If you know that you are going to load almost same amount of data, the answer is yes.

4. Should I drop and recreate indexes.
as you are dealing with multi-million rows, yes you need to. drop index -> truncate -> load -> recreate index.

create the indexes with nologging option if they are not in nologging TS.


5. There is separate locally managed tablespace holding these 10 tables. Is it better to do nologging at tablespace level or on individual tables level - purpose is to reduce red log creation for the process
please refer answer 2.

Thanks,