最佳化來源系統 - 進階

已完成

Oracle 資料列識別碼資料表分割

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

建立來源資料庫的多個「複製品」,並平行匯出

提高匯出效能的其中一種方法是從相同資料庫的多個複本匯出。 如果包括伺服器、網路和儲存體的基礎結構可進行調整,則此方式通常可進行線性調整。 從相同資料庫的兩個複本匯出的速度將會快兩倍,而四個複本的速度將會快四倍。 移轉監視器已設定為從資料庫的每個「複製品」中匯出選取數目的資料表。 在下列案例中,匯出工作負載會在 4 部資料庫伺服器上各散發大約 25%。

  • 資料庫伺服器 1 和匯出伺服器 1 – 專用於最大的 1-4 個資料表(視數據分佈在源資料庫上的扭曲程度而定)
  • 資料庫伺服器 2 和匯出伺服器 2 – 專用於具有數據表分割的數據表
  • 資料庫伺服器 3 和匯出伺服器 3 – 專用於具有數據表分割的數據表
  • 資料庫伺服器 4 和匯出伺服器 4 – 所有剩餘的數據表

請務必小心確保精確地同步資料庫,否則可能會發生資料遺失或資料不一致。 如果精確地遵循所提供的步驟,則會保留資料完整性。

這個具有標準商用 Intel 硬體的技術十分簡單且便宜,但也可供執行專屬 UNIX 硬體的客戶使用。 沙箱、開發、QAS、定型和 DR 系統已移至 Azure 時,大量硬體資源可自由進入 OS/DB 移轉專案的中間。 「複製品」伺服器沒有具有相同硬體資源的嚴格需求。 透過足夠的 CPU、RAM、磁碟和網路效能,每個複製品的新增都會增加效能。

如果仍然需要額外的匯出效能,則請在 BC-DB-MSS 中開啟 SAP 事件,以取得可提升匯出效能的其他步驟 (僅限進階顧問)。

實作多個平行匯出的步驟如下:

  1. 備份主要資料庫,並還原至 "n" 個數目的伺服器 (其中 n = 複製品數目)。 在此範例中,假設 n = 3 部伺服器,總共有四部 DB 伺服器。
  2. 將備份還原至 3 部伺服器。
  3. 建立從主要來源 DB 伺服器到 3 個目標「複製品」伺服器的記錄傳送。
  4. 監視記錄傳送數天,並確保記錄傳送能夠可靠地運作。
  5. 在停機開始時,關閉所有 SAP 應用程式伺服器,但 PAS 除外。 確定已停止所有批次處理,並停止所有 RFC 流量。
  6. 在交易 SM02 中,輸入「檢查點 PAS 執行中」文字。 這會更新資料表 TEMSG。
  7. 停止主要應用程式伺服器。 SAP 現在已關閉。 來源 DB 中不會再發生寫入活動。 請確定沒有任何非 SAP 應用程式連線至來源 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 至 EMTEXT)
  10. 停止自動交易記錄備份。 在主要 DB 伺服器上手動執行一個最終交易記錄備份。 確定已將記錄備份複製至複製品伺服器。
  11. 在所有 3 個節點上還原最終交易記錄備份。
  12. 復原 3 個「複製品」節點上的資料庫。
  13. 在「所有」4 個節點上執行下列 SELECT 陳述式:SELECT EMTEXT FROM [schema].TEMSG;
  14. 個別擷取 4 個 DB 伺服器的 SELECT 陳述式畫面結果 (主要伺服器和 3 個複製品伺服器)。 請務必仔細包括每個主機名稱;以作為複製品 DB 與主要資料庫完全相同並且包含相同時間點的相同資料的證明。
  15. 在每個 Intel R3load 匯出伺服器上啟動 export_monitor.bat。
  16. 啟動傾印檔案複製至 Azure 程序 (AzCopy 或 Robocopy)。
  17. 在 R3load Azure VM 上啟動 import_monitor.bat。

下圖顯示現有生產 DB 伺服器記錄傳送至「複製品」資料庫。 每個 DB 伺服器都會有一或多個 Intel R3load 伺服器。

Diagram showing existing production D B server log shipping to clone databases. Each D B server has one or more Intel R 3 load servers.