I believe that the fastest way to do this is with the DBI/execute_array function.
The fastest way, since you're using Oracle, would be with sqlldr. It's more of a hassle than DBI, but a lot quicker.
Update: Well, execute_array on Oracle is pretty darn fast. What took several minutes with single row inserts now takes a few seconds. Color me impressed. My only issue is with the return value, which doesn't seem to be correct.
Update 2: With new library DBIx::BulkUtil even sqlldr is not a hassle anymore.