优化源系统 - 高级

已完成

此更高级的指导可能对 VLDB 系统的源导出有所帮助:

Oracle Row ID 表拆分

SAP 已发布 SAP 说明 #1043380,其中包含了用于将 WHR 文件中的 WHERE 子句转换为 ROW ID 值的脚本。 或者,如果为 Oracle 到 Oracle R3load 的迁移配置了 SWPM,则最新版本的 SAPInst 将自动生成 ROW ID 拆分 WHR 文件。 SWPM 生成的 STR 和 WHR 文件独立于操作系统和数据库(OS/DB 迁移过程的所有方面也是如此)。

OSS 说明中提到“如果目标数据库为非 Oracle 数据库,则不能使用 ROWID 表拆分”。 从技术上讲,R3load 转储文件独立于数据库和操作系统。 但存在一个限制:导入期间无法在 SQL Server 上重启某个包。 在这种情况下,需要删除整个表并重启该表的所有包。 始终建议终止特定拆分表的 R3load 任务,如果一个拆分 R3load 中止,则截断该表并重启整个导入过程。 这样做的原因是 R3load 中的内置恢复过程涉及到逐行执行 DELETE 语句,以删除由中止的 R3load 进程加载的记录。 此过程缓慢,并且经常会导致数据库出现阻塞/锁定情况。 经验表明,从头开始导入此特定表会更快,因此 SAP 说明 #1043380 中提到的限制其实并不是限制。

ROW ID 的缺点是必须在停机期间执行拆分计算 - 请参阅 SAP 说明 #1043380

创建源数据库的多个“克隆”,然后并行导出

提高导出性能的一种方法是从同一数据库的多个副本导出。 如果包括服务器、网络和存储在内的底层基础结构可缩放,则这种方法往往可线性缩放。 从同一个数据库的两个副本导出的速度快两倍,而从四个副本导出的速度则快四倍。 迁移监视器配置为从数据库的每个“克隆”中导出选定数量的表。 在以下情况中,导出工作负载在每个数据库服务器上(共四个)大约分布 25%。

  • DB 服务器 1 和导出服务器 1 – 专用于最大的 1-4 表(根据数据在源数据库上的分布偏差程度)
  • DB 服务器 2 和导出服务器 2 – 专用于具有表拆分的表
  • DB 服务器 3 和导出服务器 3 – 专用于具有表拆分的表
  • DB 服务器 4 和导出服务器 4 – 所有剩余的表

必须小心以确保数据库精确同步,否则可能会发生数据丢失或数据不一致的情况。 如果严格遵循所提供的步骤,则可以保持数据完整性。

这种技术对于标准的市售 Intel 硬件而言既简单又廉价,但也适用于运行专有 UNIX 硬件的客户。 将沙盒、开发、QAS、训练和 DR 系统迁移到 Azure 后,可以在 OS/DB 迁移项目的中途免费使用大量的硬件资源。 不严格要求“克隆”服务器具有相同的硬件资源。 有了足够的 CPU、RAM、磁盘和网络性能,添加每个克隆都会提高性能。

如果仍然需要更高的导出性能,请在 BC-DB-MSS 中提交一个 SAP 事件,以获取提升导出性能所要执行的其他步骤(仅限高级顾问申请)。

实现多重并行导出的步骤如下:

  1. 备份主数据库并还原到“n”个服务器(其中 n = 克隆数)。 对于此示例,假设 n = 3 个服务器,总共有四个数据库服务器。
  2. 将备份还原到三个服务器。
  3. 建立从主源数据库服务器到三个目标“克隆”服务器的日志传送。
  4. 监视日志传送数天,确保日志传送可靠工作。
  5. 在停机开始时,关闭除 PAS 以外的所有 SAP 应用程序服务器。 确保停止所有批处理,并停止所有 RFC 流量。
  6. 在事务 SM02 中,输入文本“Checkpoint PAS Running”。 这会更新表 TEMSG。
  7. 停止主应用程序服务器。 SAP 现在会关闭。 源 DB 中不再会发生写入活动。 确保没有任何非 SAP 应用程序连接到源 DB(应该永远不会有,但请检查 DB 级别的任何非 SAP 会话)。
  8. 在主 DB 服务器上运行此查询:SELECT EMTEXT FROM [schema].TEMSG;
  9. 运行本机 DBMS 级语句:INSERT INTO [schema].TEMSG “CHECKPOINT R3LOAD EXPORT STOP dd:mm:yy hh:mm:ss”(确切的语法取决于源 DBMS. INSERT into EMTEXT)
  10. 停止自动事务日志备份。 在主 DB 服务器上手动运行最后一个事务日志备份。 确保将日志备份复制到克隆服务器。
  11. 在所有三个节点上还原最后的事务日志备份。
  12. 恢复 3 个“克隆”节点上的数据库。
  13. 在所有四个节点上运行以下 SELECT 语句:SELECT EMTEXT FROM [schema].TEMSG;
  14. 捕获四个数据库服务器(一个主服务器,三个克隆服务器)中每个服务器的 SELECT 语句的屏幕结果。 请务必认真包含每个主机名 - 以证明克隆数据库和主数据库是相同的,并且包含同一时间点的相同数据。
  15. 在每个 Intel R3load 导出服务器上启动 export_monitor.bat。
  16. 启动将转储文件复制到 Azure 的进程(AzCopy 或 Robocopy)。
  17. 在 R3load Azure 虚拟机上启动 import_monitor.bat。

下图显示了将现有生产 DB 服务器的日志传送到“克隆”数据库。 每个 DB 服务器有一个或多个 Intel R3load 服务器。

该图显示将现有生产数据库服务器的日志传送到“克隆”数据库。每个数据库服务器有一个或多个 Intel R3load 服务器。