Optimize Oracle SQL*Loader (sqlldr) Performance

2024-10-02Oracle / RAC / RMAN
      > 
      > 
      > 
      > 
      > 
      > 
      > 
      > 
      > 
      > 

>

Advanced Oracle Utilities

> 
		SQL*Loader Option 
		 | 
		Elapsed Time (Seconds)
		 | 
		Time Reduction
	 |

		direct=false
	rows=64
	 | 
	135
	 | 
	-
 |
| 
		direct=false
		bindsize=512000
		rows=10000
	 | 
	92
	 | 
	32%
 |
| 
		direct=false
		bindsize=512000
		rows=10000
	DB in 
		noarchivelog mode
	 | 
	85
	 | 
	37%
 |
| 
		direct=true
	 | 
	47
	 | 
	65%
 |
| 
		direct=true
		unrecoverable
	 | 
	41
	 | 
	70%
 |
| 
		direct=true
		unrecoverable
	fixed 
		width data
	 | 
	41
	 | 
	70%
 |
> 
>  

This benchmark by Warren Koch tests a SQL*Loader ( import of 2m rows, using direct path with index skip set for the baseline. Here's results for differing values for and in SQL*Loader timings.

> 

This is for a load of 1,964,601 rows (about 2 million) from a delimited file. I know I could achieve much higher speeds going to a fixed width format but my data source precludes that.

Columns Stream Elap time CPU Main Load

100 256,000 04:12.0 02:52.3 19908 0

1,000 256,000 04:14.4 02:57.3 2219 218

5,000    

256,000 04:17.3 03:05.9 515 1,350

50,000 256,000 04:19.1 03:09.9 515 1,350

5,000 500,000 04:15.9 03:02.8 515 512

5,000 512,000 04:14.6 03:02.7 515 512

5,000 128,000 04:11.0 03:05.5 515 2,908

5,000 64,000 04:10.0 03:06.7 515 5876