最佳化來源系統 - 進階
此更進階的指引對於 VLDB 系統的來源匯出可能有所幫助:
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%。
- 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 事件,以取得可提升匯出效能的其他步驟 (僅限進階顧問)。
實作多個平行匯出的步驟如下:
- 備份主要資料庫,並還原至 "n" 個數目的伺服器 (其中 n = 複製品數目)。 在此範例中,假設 n = 3 部伺服器,總共有四部 DB 伺服器。
- 將備份還原至 3 部伺服器。
- 建立從主要來源 DB 伺服器到 3 個目標「複製品」伺服器的記錄傳送。
- 監視記錄傳送數天,並確保記錄傳送能夠可靠地運作。
- 在停機開始時,關閉所有 SAP 應用程式伺服器,但 PAS 除外。 確定已停止所有批次處理,並停止所有 RFC 流量。
- 在交易 SM02 中,輸入「檢查點 PAS 執行中」文字。 這會更新資料表 TEMSG。
- 停止主要應用程式伺服器。 SAP 現在已關閉。 來源 DB 中不會再發生寫入活動。 請確定沒有任何非 SAP 應用程式連線至來源 DB (資料庫層級上絕對不應該有任何非 SAP 工作階段,但請予以檢查)。
- 在主要 DB 伺服器上執行此查詢:
SELECT EMTEXT FROM [schema].TEMSG;
- 執行原生 DBMS 層級陳述式:
INSERT INTO [schema].TEMSG “CHECKPOINT R3LOAD EXPORT STOP dd:mm:yy hh:mm:ss”
(確切的語法取決於來源 DBMS。INSERT 至 EMTEXT) - 停止自動交易記錄備份。 在主要 DB 伺服器上手動執行一個最終交易記錄備份。 確定已將記錄備份複製至複製品伺服器。
- 在所有 3 個節點上還原最終交易記錄備份。
- 復原 3 個「複製品」節點上的資料庫。
- 在「所有」4 個節點上執行下列 SELECT 陳述式:
SELECT EMTEXT FROM [schema].TEMSG;
- 個別擷取 4 個 DB 伺服器的 SELECT 陳述式畫面結果 (主要伺服器和 3 個複製品伺服器)。 請務必仔細包括每個主機名稱;以作為複製品 DB 與主要資料庫完全相同並且包含相同時間點的相同資料的證明。
- 在每個 Intel R3load 匯出伺服器上啟動 export_monitor.bat。
- 啟動傾印檔案複製至 Azure 程序 (AzCopy 或 Robocopy)。
- 在 R3load Azure 虛擬機器上啟動 import_monitor.bat。
下圖顯示現有生產 DB 伺服器記錄傳送至「複製品」資料庫。 每個 DB 伺服器都會有一或多個 Intel R3load 伺服器。