You don't have much time to tune the batch job. I will write it in another time.

However, you can follow certain important points:
1 Maintain 2 init.ora files - one for OLTP and another for BATCH job processing

2 Increase SORT_AREA_SIZE to 128MB.

3 Create temporary segment as per the formula given below:
INITIAL=NEXT=(N*SORT_AREA_SIZE)+BLOCK_SIZE
Set pctincrease to 0
Set temp tablespace to nologging

4 Create 2 big rollback segments with huge INITIAL and NEXT size; put all other rollback segments offline.

5 If possible, set the database in NOARCHIVE LOG

6 Ensure that you have minimum 6 REDO log files of size not less than 200MB.

7 If your tablespaces are not RAW devices, disable DISK_ASYNC_IO, and configure multiple DB_WRITER_PROCESSES. (Atlease the number should be equal to number of CPUs).

8 Set LOG_BUFFER_SIZE to 2 MB.

9 Ensure checkpoint occurs only when the redo log file switches.

10 Precreate all extents for the tables that are highly inserted

11 Drop unwanted indexes.

12 Kill all inactive sessions before the batch job is started.

There are plenty of points I can write, but I have to go now.

In fact, on Mar 22, I am going to watch and tune a 72-hour batch jobs.

Good Luck.
Tamilselvan