With Oracle Zero Downtime Migration (ZDM) 21.2, you can now perform logical offline migrations from IBM AIX and Oracle Solaris. Since it is an offline approach, the database is unavailable during the entire migration. Let’s look at how you can minimize downtime.
Before Migration
Statistics
Ensure that dictionary statistics are up-to-date in the source database. Data Pump does a lot of querying in the data dictionary, and accurate statistics are vital for good execution plans. I recommend gathering stats on SYS and SYSTEM:
begin
dbms_stats.gather_schema_stats('SYS');
dbms_stats.gather_schema_stats('SYSTEM');
end;
/
You could also use dbms_stats.gather_dictionary_stats
. But it gathers statistics on all internal schemas, and most often, only SYS and SYSTEM is sufficient:
begin
dbms_stats.gather_dictionary_stats;
end;
/
Data
I think it goes without saying, but the less data, the faster the migration complete. If you have any junk data in your database, get rid of it.
Migration
Parallel
Apply a proper degree of parallelism. Rule-of-thumb:
- On-prem: 2 x number of physical cores
- OCI: Number of OCPUs
When you are importing in OCI, consider scaling up on CPUs. More CPUs, faster import. Bare Metal and Exadata DB Systems scales online, whereas Virtual Machines need around 10 minutes of downtime.
Import processes running in parallel can read from the same dump file. This means that the number of parallel processes for an import is not limited by the number of dump files (which is the case of an export). To illustrate with an example:
- Export:
parallel=8
– 8 dump files were created. Each parallel worker needs exclusive access to a dump file. - Import:
parallel=16
– still only 8 dump files. Each parallel worker can read from all dump files, no locks required.
You can control Data Pump parallel in ZDM using these parameters:
DATAPUMPSETTINGS_DATAPUMPPARAMETERS_EXPORTPARALLELISMDEGREE
DATAPUMPSETTINGS_DATAPUMPPARAMETERS_IMPORTPARALLELISMDEGREE
Data Pump Mode
Should you go via dump file or directly over a database link? Only your tests can tell the answer, but I am pretty sure that you will find that dump file mode is the quickest.
When you export via a dump file, you also need to figure out how you can transfer it to the target database:
- Direct Transfer – you can use either
scp
orrsync
. At the risk of starting a religious discussion, I don’t think it makes much of a difference in this use case. If you needrsync
on Exadata, you can find guidance in MOS Doc ID 1556257.1. - Via Object Store – you can use either
curl
or OCI CLI. I would expect you can get better performance with OCI CLI. But you need to test it in your environment.
Remember to ensure you have adequate disk space on the source database host to hold the dump file. Use mount points that can deliver good write performance, and ideally, they should be separated from the storage that holds the database data files.
SecureFile LOB
ZDM automatically transforms BasicFile LOBs into SecureFile LOBs – which is very good. Don’t turn it off. Imports run faster when SecureFile LOBs are in play.
After Migration
Statistics
As soon as ZDM has completed the migration, gather dictionary stats in the target database. All those new objects that came in with the import have for sure made the statistics stale.
begin
dbms_stats.gather_schema_stats('SYS');
dbms_stats.gather_schema_stats('SYSTEM');
end;
/
Next, you need to figure out how you want to take care of the optimizer statistics. In a previous post, I discussed why this is needed and how to do it. If you decide to import statistics via DBMS_STATS
, just ensure that you have gathered dictionary stats before.
Further Reading
I recommend that you also read the following posts:
- Logical Online Migration of Very Large Databases
- Logical Migration and Statistics
- Logical Migration and the Final Touches
Conclusion
When migrating from IBM AIX and Oracle Solaris, you use the logical offline approach, which means a lot of downtime. You have a few options to make it run as fast as possible.
Other Blog Posts in This Series
- Introduction
- Install And Configure ZDM
- Physical Online Migration
- Physical Online Migration to DBCS
- Physical Online Migration to ExaCS
- Physical Online Migration and Testing
- Physical Online Migration of Very Large Databases
- Logical Online Migration
- Logical Online Migration to DBCS
- Logical Offline Migration to Autonomous Database
- Logical Online Migration and Testing
- Logical Online Migration of Very Large Databases
- Logical Online and Sequences
- Logical Offline Migration How To Minimize Downtime
- Logical Migration and Statistics
- Logical Migration and the Final Touches
- Create GoldenGate Hub
- Monitor GoldenGate Replication
- The Pro Tips