Whenever you use Data Pump to export from Oracle Database, you should use compression. It’s conveniently built into Data Pump.
Pros:
- The dump file is much smaller:
- Less disk space is needed.
- Easier to transfer over the network.
- Often it is faster to use compression when you measure the entire workflow (export, transfer, and import).
- Imports are often faster because less data needs to be written from disk.
Cons:
- You need a license for Advanced Compression Option.
- Compression requires CPU.
How Do I Enable Data Pump Compression
You simply set COMPRESSION
option:
$ expdp ... compression=all
You use COMPRESSION
option only for exports. When you import, Data Pump handles it automatically.
You only need a license for Advanced Compression Option when you use compression during export. You don’t need a license to import a compressed dump file.
Medium Is a Good Compression Algorithm
I recommend you use the medium compression algorithm:
$ expdp ... compression=all compression_algorithm=medium
Our experience and tests show that it best balances between compression ratio and CPU.
Here are the results of a test my team did:
Algorithm | File Size (MB) | Compression Ratio | Elapsed Time |
---|---|---|---|
NONE | 5.800 | 1,0 | 2m 33s |
BASIC | 705 | 8,2 | 3m 03s |
LOW | 870 | 6,6 | 3m 11s |
MEDIUM | 701 | 8,2 | 3m 01s |
HIGH | 509 | 11,3 | 12m 16s |
I would recommend high algorithm only if you need to transfer over a really slow network.
But I Don’t Have a License
gzip
You can still compress the dump file but not using Data Pump. Use OS utilities. In this case, I recommend splitting the dump file into pieces. It is easier to handle, and you can start transferring the dump files as they are compressed:
$ expdp ... filesize=5G dumpfile=myexp%L.dmp
$ gzip -r /u01/app/oracle/dpdir
Now, you transfer the files, uncompress and import:
[target]$ gunzip -r /u01/app/oracle/dpdir
[target]$ impdp ...
rsync
Another option is to use rsync. It has the option to compress the dump file over the network only:
$ expdp ... filesize=5G dumpfile=myexp%L.dmp
$ rsync -z ...
Cheatsheet
If you have the proper license, use Data Pump compression during export:
$ expdp ... compression=all compression_algorithm=medium
If you don’t have a license, compress the dump file over the wire only:
$ rsync -z ....
Don’t combine Data Pump compression and gzip/rsync! Compressing compressed stuff is not a good idea.