原文地址:https://dohdatabase.com/2021/09/09/zero-downtime-migration-logical-offline-migration-how-to-minimize-downtime/
原文开源:dohdatabase.com
使用Oracle Zero Downtime Migration (ZDM) 21.2,您现在可以从IBM AIX和Oracle Solaris执行逻辑离线迁移。由于这是一种脱机方法,因此数据库在整个迁移过程中不可用。让我们看看如何最小化停机时间。
迁移前
统计数据
确保源数据库中的字典统计信息是最新的。Data Pump在数据字典中执行大
开始
dbms_stats.gather_schema_stats('SYS');
dbms_stats.gather_schema_stats('SYSTEM');
结束;
/
您也可以使用dbms_stats.gather_dictionary_stats。但是它会收集所有内部模式的统计信息,通常只有SYS和SYSTEM就足够了:
开始
dbms_stats.gather_dictionary_stats;
结束;
/
数据
我认为这是不言而喻的,但数据越少,迁移完成得越快。如果你的数据库中有垃圾数据,把它处理掉。
迁移中
平行
应用适当的并行度。经验法则:
-
On-prem: 2 *物理核数
-
OCI: ocp个数
在导入OCI时,请考虑扩展cpu。更多cpu,导入更快。裸金属和Exadata数据库系统在线扩展,而虚拟机需要大约10分钟的停机时间。
并行运行的导入进程可以读取相同的转储文件。这意味着一个导入的并行进程数量不受转储文件数量的限制(导出就是这种情况)。用一个例子来说明:
导出:parallel=8 - 8个转储文件。每个并行工作者需要独占地访问转储文件。
Import: parallel=16 -仍然只有8个转储文件。每个并行工作者可以读取所有转储文件,不需要锁。
你可以控制数据泵并行在ZDM使用这些参数:
DATAPUMPSETTINGS_DATAPUMPPARAMETERS_EXPORTPARALLELISMDEGREE
DATAPUMPSETTINGS_DATAPUMPPARAMETERS_IMPORTPARALLELISMDEGREE
数据泵模式
您应该通过转储文件还是直接通过数据库链接?只有您的测试可以告诉您答案,但是我非常肯定您会发现转储文件模式是最快的。
当您通过转储文件导出时,您还需要确定如何将其传输到目标数据库:
直接传输-您可以使用scp或rsync。冒着引起一场宗教讨论的风险,我认为在这个用例中它没有太大的区别。如果你需要在Exadata上进行rsync,你可以在MOS Doc ID 1556257.1中找到指导。
通过对象存储-你可以使用curl或OCI CLI。我希望使用OCI CLI可以获得更好的性能。但是需要在您的环境中进行测试。
记住,要确保源数据库主机上有足够的磁盘空间来保存转储文件。使用能够提供良好写性能的挂载点,理想情况下,它们应该与存储数据库数据文件的存储区分离。
文件LOB
ZDM自动将BasicFile lob转换为SecureFile lob—这非常好。不要关掉它。使用SecureFile lob时,导入运行得更快。
迁移后
统计数据
一旦ZDM完成迁移,就在目标数据库中收集字典统计信息。所有那些随着导入而来的新对象肯定已经使统计数据过时了。
开始
dbms_stats.gather_schema_stats('SYS');
dbms_stats.gather_schema_stats('SYSTEM');
结束;
/
接下来,您需要确定如何处理优化器统计信息。在之前的一篇文章中,我讨论了为什么需要这样做以及如何做到这一点。如果您决定通过DBMS_STATS导入统计信息,只需确保您之前已经收集了字典统计信息。




