Split a *.gz file and merge again in Linux or Windows.

This post will deal the situation where you have big size of dump of anything and you need to split that into smaller chunks than need to send over ftp/mail etc. After that need to regenerate the same it was before splitting.

Situation: I have a expdp dump of 35 GB, I need to send it via ftp mail which can accept maximum 1 GB file.

Solution:

NOTE: With below command you can expdp without sysdba pwd.

expdp \"/ as sysdba\" FLASHBACK_TIME=\"TO_TIMESTAMP\(TO_CHAR\(SYSDATE,\'YYYY-MM-DD HH24:MI:SS\'\),\'YYYY-MM-DD HH24:MI:SS\'\)\" full=y dumpfile=full_db.dmp logfile=full_db.log DIRECTORY=DATAPUMP_DIR compression=METADATA_ONLY version=latest PARALLEL=4

NOTE: Another way to expdp without password is as under.

expdp \'/ as sysdba\' directory=DATAPUMP_DIR full=y ...

1. Zip the existing dump.
gzip full_db.dmp

2. Split the .gz file into 1 GB files.
split -b 1024m “full_db.dmp.gz” “full_db.dmp.gz_01”

3. Send it using appropriate method like ftp, attachement etc.
ftp/mail etc.

4. Merge splitted files again
Linux: cat full_db.dmp.gz_01a* > full_db.dmp.gz
Windows: copy /b file1 + file2 + file3 + file4 filetogether

5. Unzip the file and now you are ready to do everything on this file, as it was in step 1.
Now unzip the compressed dump and it is ready to use.
gunzip full_db.dmp.gz