FAst extraCT (FACT) for Oracle, Unload-Only
Comparison Benchmarks with SQL*Plus SPOOL

SELECT * to flat file, 64-bit, HP-UX B.11.11, Oracle 9.2, 50-byte VARCHAR.

# of Rows
SPOOL
FACT
20,000,000
25m 18s
4m 12s
50,000,000
1h 03m 31s
8m 37s
100,000,000
2h 07 m09s
17m 09s

Hardware: HP9000 L2000-44, 4 PA 8500 CPUs @ 440MHz, 8GB RAM


Oracle 10g Enterprise Edition Rlease 10.1.0.2.0. 64-bit prod. w/partitioning, etc.

3,000,000 Rows, 6 columns
NUMBER, NUMBER(10,3), CHAR(10), VARCHAR2(10), DATE, TIMESTAMP

Platform / CPUs
SPOOL
FACT
HP-UX rx1620 / 2
7m 00s
42s
SunFire V210 / 2
7m 17s
1m 07s
Linux Xeon2.4 /4
4m 46s
1m 29s

The FACT option "OUTFORMAT" was set to "FIXED" to produce the same flat
(SAM) output file as Oracle's SPOOL prodcued. If OUTFORMAT were set to
"VARIABLE,", the size of the SAM file would be reduced and the performance
would be better. In these tests, FACT and SPOOL both produced a 288MB file.

The following SQL script was used to extract data via SPOOL:

set timing on
set heading off
set feedback off
set termout off
set trimspool on
set linesize 10000
set pagesize 0
set space 1
set echo off
set verify off
set numwidth 21
set colsep '|'
alter session set nls_date_format='YYYYMMDD';
alter session set nls_timestamp_format='YYYYMMDDHH24MISSFF6';

spool spool_table.sam
select * from tinsert;
spool off

These Unix commands were used to test both utilities.
$ time sqlplus id/pw@inst < spool.sql > /dev/null
$ time ./fact test.ini


Extract-Transform-Load Benchmark

fact | sortcl | sqlldr 00h:18m:00s

vs.

Oracle insert into 01h:38m:58s
(select * ... order by)


Software Versions: FACT v1.12, CoSort v8.1, and Oracle 9i SQL*Plus
Source Data: ~ 50 million, 50-byte rows (2.32 GB) sorted on 1 key
Test Hardware: ia64 hp server rx5670, 2 x1GhZ CPUs, 32GB RAM, HP-UX 11.23