暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

[译] 零停机迁移-逻辑离线迁移如何最小化停机时间

原创 Handsome BOY 2022-05-23
481

原文地址: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导入统计信息,只需确保您之前已经收集了字典统计信息。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论