3 小时部署窗口和需要将 19 万电信用户从一家电信公司迁移到另一家电信公司
Posted
技术标签:
【中文标题】3 小时部署窗口和需要将 19 万电信用户从一家电信公司迁移到另一家电信公司【英文标题】:3hrs deployment window and Need to Migrate 190k Telecom subscriber from one Telco to other 【发布时间】:2015-05-09 14:32:31 【问题描述】:我需要编写 PL/SQL 脚本,该脚本需要将 19 万用户从一个电信公司迁移到另一个电信公司。使用此脚本,我需要更新不同的订阅者和帐户表,并进行具有复杂逻辑的服务协议更改。迁移每个订户后,我需要保持“特定订户已成功迁移”的状态。为此,我为 190 k 订阅者打开了游标,并且每个订阅者都在循环中一一迁移。在进行性能测试时,我发现只有 19 k 订阅者在 1.5 中成功更新。小时。这需要很多时间,我的部署窗口只有 3 小时。请告诉我,在这种情况下如何从技术上进行。
【问题讨论】:
预写全部到一个单独的数据库,然后恢复到目标数据库。这消除了您的时间限制,包括测试选项。 @dmaij 你不能预写(我认为)。必须在给定时间点在一侧拍摄快照,并在 3 小时内转换到新站点 @Luis,我也这么认为,但是当我查看问题时,问题可能不在脚本中,而在网络设置或组合中 谢谢,我想prewrite可能是可能的,即在同一数据库中1天前将所有数据保存在临时表中,并在部署窗口期间与实际数据库表合并,可能会创建一些订阅者或在当天更新,因此我们可能需要在实际更新期间捕获这些内容。我想到的一种方法是将用户群划分为 10 个子集,对帐号使用模 10,并有 10 个具有相同逻辑的并行脚本来处理每个子集。请提供相同的建议。 【参考方案1】:要在现代数据库中处理的 190k 记录确实不多。但是很难给出任何一般性的建议,因为要做什么取决于具体情况。我的第一个猜测是,随着您的目标数据库在迁移过程中增长,您可能会遇到记录为 0 的表统计信息,从而在执行更新和检查完整性和唯一约束时导致 FTS。尝试放松对目标的约束。监控目标上的执行计划,如果有任何显示 FTS 或高 IO,则定期收集统计信息,或使用 DBMS_STATS 包在迁移之前设置统计信息。分而治之是您可以采用的另一种通用方法 - 将您的迁移例程参数化,以便您可以对一系列记录进行操作,然后并行运行迁移,每个记录处理不同的范围。也许您还可以拆分迁移和验证过程,即运行迁移以复制帐户,并将状态设置为“COPIED”(来自“COPYING”),然后有一个验证过程(可能并行化)轮询“COPIED”记录,然后验证它们,将状态设置为“CHECKING”,然后是“OK”或“FAILED”,或其他。
更具体的帮助需要更多细节。
【讨论】:
以上是关于3 小时部署窗口和需要将 19 万电信用户从一家电信公司迁移到另一家电信公司的主要内容,如果未能解决你的问题,请参考以下文章