Unexpectively slow data loading into Oracle

loadoracleoracle-10gperformance

Big amount (4.000.000+) of files (1-4Mb each) are loading into Oracle 10g for about several days.
Table is allocated in big tablespace, which was created on special volume (labeled BIG_VOL) over hardware RAID (Adaptec 3805 , 8 HDD x 2Tb, raid level 6).

RedoLogs was moved on two another SSD drives. No archivelog.
There are only DBF and control files on BIG_VOL.

Transaction closed (by COMMIT) after every loaded file.

Perfomance Monitor shows ~6-9Mb per second on writing for this BIG_VOL !
Simple copy any big file shows about 80+Mb per second!

Can I do something to improve speed?

Best Answer

There's some information missing that would be useful but my first approach would be to concatenate the files into a smaller number of large input files to cut down the file handling overhead. Look at the load method and check if the data profile supports the use of SQL Loader direct loads. If SQL loader is not appropriate maybe use external tables and add the APPEND hint to the INSERT.

You may be able to think about how the table is partitioned and if the partitioning is reflected in the files, i.e. each file being relevant to one partition. This might give you scope for making the load parallel based on the partition criteria.

The above assumes that you are inserting data but if you have updates in there as well then I would go for external tables with a merge statement. This has worked for me with 10g in the past. I had a shell script loading each file based on its suitability for each loading method. We loaded up to 80 million records in around 3 to 4 hours from, in our case, hundreds of files rather than millions. So taking a complete guess at 100 records per file you should be able to load them in less than a day.