In migrations, you often use transportable tablespaces or Full Transportable Export/Import (FTEX). Downtime is always of concern when you migrate, so having Data Pump perform the transportable job in parallel is a huge benefit.
How much benefit? Let’s find out with a little benchmark.
The Results
Let’s start with the interesting part. How much time can you save using parallel transportable jobs in Data Pump.
The following table lists four different scenarios. Each scenario consists of an export and an import. The total is the time Data Pump needs to finish the migration – the sum of export and import. In a real migration, many other things are in play, but here, we are looking solely at Data Pump performance.
| Export | Time | Import | Time | Total |
|---|---|---|---|---|
| 19c, no parallel | 2h 2m | 19c, no parallel | 6h 44m | 8h 46m |
| 23ai, parallel 4 | 1h 48m | 23ai, parallel 4 | 2h 33m | 4h 21m |
| 19c, no parallel | 2h 2m | 23ai, parallel 16 | 1h 23m | 3h 25m |
| 23ai, parallel 16 | 1h 8m | 23ai, parallel 16 | 1h 23m | 2h 31m |
The first row is what you can do in Oracle Database 19c, almost 9 hours. Compare that to the last row you can do with parallel 16 in Oracle Database 23ai, almost a 3.5x reduction.
If you migrate from Oracle Database 19c to Oracle Database 23ai (3rd row), you can still benefit from parallel import and gain a significant benefit.
The Benchmark
I used the following Oracle homes:
- Oracle Database 19c, 19.19.0 plus Data Pump Bundle Patch
- Oracle Database 23ai, 23.3.0
My test database:
- E-Business Suite database
- 300 GB physical size
- 630.000 database objects, including
- 89.000 tables
- 66.000 indexes
- 60.000 packages
- CPU_COUNT = 16
- SGA_TARGET = 64G
My test machine:
- OCI shape VM.Standard.E4.Flex
- 8 CPUs
- 128 GB mem
- Fast disks (max. IOPS 128.000)
How to
It’s very easy to enable parallel transportable jobs. If you want to use 16 parallel workers, on export:
expdp ... parallel=16 dumpfile=ftex%L.dmp
On import:
impdp ... parallel=16
What Happens
A Data Pump job consists of several object paths that Data Pump must process. An object path could be tables, indexes, or package bodies.
Parallel Export
Each worker takes an object path and starts to process it. The worker works alone on this object path. You get parallelism by multiple workers processing multiple object paths simultaneously.
Parallel Import
During import, Data Pump must process each object path in a certain order. Data Pump can only import constraints once it has imported tables, for example.
Data Pump processes each object path in the designated order, then splits the work in one object path to many workers. You get parallelism by multiple workers processing one object path in parallel.
The Fine Print
-
Parallel transportable jobs work in Oracle Database 21c and later. In Oracle Database 19c, a transportable job has no parallel capabilities.
-
Data Pump can use parallel only on transportable jobs via a dump file. Network mode is not an option for parallel transportable jobs.
-
If you export in Oracle Database 19c (which does not support parallel transportable jobs), you can still perform a parallel import into Oracle Database 23ai.
-
The export parallel degree and import parallel degree do not have to match. You can export with parallel degree 1 and import with parallel degree 16.
-
When you enable parallel jobs, Data Pump starts more workers. How much extra resources do they use?
- I didn’t notice any significant difference in undo or temp tablespace use.
- I didn’t notice any extra pressure on the streams pool, either. I had the streams pool set to 256M, and the database didn’t perform any SGA resize operation during my benchmark.
Conclusion
For migrations, parallel transportable jobs in Data Pump are a huge benefit. Every minute of downtime often counts, and this has a massive impact.







