調整 Replicat 交易
Replicat 使用一般 SQL,因此其效能取決於目標資料庫的效能,以及所套用的 SQL 類型 (插入、與更新或刪除)。不過,您可以採取某些步驟,將 Replicat 效率最大化。
依據障礙異動調整協調效能
在協調式 Replicat 組態中,障礙異動 (例如主索引鍵更新) 會增加對資料庫的確認次數,並中斷 Replicat GROUPTRANSOPS 功能的優點。如果協調式 Replicat 的整體工作負載中有大量的障礙異動,使用大量繫線實際上可能會降低 Replicat 效能。
若要在預期有大量障礙異動時維持高效能,您可以執行下列作業:
-
減少群組中作用中的繫線數目。這可減少 Replicat 執行的整體確認數目。
-
將考量大多數屏障交易的表格,以及任何具有相依性的表格,移至具有少量繫線的個別協調式 Replicat 群組。請將原始 Replicat 群組中最小屏障交易數的表格與較高的繫線數目保持不變,以便在不中斷障礙異動的情況下維持平行效能。
-
(Oracle RAC) 在新的 Replicat 組態中,您可以增加 Replicat 檢查點表格的
PCTFREE屬性。不過,這必須在第一次啟動 Replicat 之前完成。PCTFREE的建議值為 90。
避免索引鍵缺席時進行完整表格掃描
如果目標表格沒有主索引鍵、唯一索引鍵或唯一索引,Replicat 會使用所有資料欄來建立其 WHERE 子句。這基本上是完整表格掃描。
若要讓資料列選取更有效率,請使用 TABLE 和 MAP 敘述句中的 KEYCOLS 子句,將一或多個資料欄識別為唯一。Replicat 將使用指定的資料欄作為索引鍵。下列範例顯示 TABLE 敘述句中的 KEYCOLS 子句:
TABLE hr.emp, KEYCOLS (FIRST_NAME, LAST_NAME, DOB, ID_NO);
如需使用準則和語法,請參閱 Oracle GoldenGate 的參數和函數參照中的 TABLE 和 MAP 參數。
分割大型交易
如果目標資料庫無法處理來自來源資料庫的大型交易,您可以使用 Replicat 參數 MAXTRANSOPS 將它們分割成一系列較小的交易。請參閱 Oracle GoldenGate 的參數和函數參照瞭解詳細資訊。
注意:MAXTRANSOPS 對 Oracle AI Database 系統上的整合式 Replicat 無效。
調整開啟游標
Replicat 處理作業會維護已快取之 SQL 敘述句和 SQLEXEC 作業的游標。如果沒有足夠的游標,Replicat 必須將更多陳述式存在。依照預設,Replicat 會維持 MAXSQLSTATEMENTS parameter 所允許的游標數目。您可能會發現需要增加此參數的值。若是如此,您可能也需要調整資料庫允許的開啟游標數目上限。請參閱 Oracle GoldenGate 的參數和函數參照瞭解詳細資訊。
改善更新速度
過多的區塊片段化會讓 Replicat 套用比正常速度慢的 SQL 敘述句。重組分段的表格,然後停止並啟動 Replicat 以註冊新的物件 ID。
設定 Replicat 交易逾時
使用 TRANSACTIONTIMEOUT 參數可防止未確認的 Replicat 目標交易在目標資料庫上保留鎖定,並且不必要地使用其資源。您可以變更此參數的值,讓 Replicat 能夠在現有的應用程式逾時以及目標的其他資料庫需求中運作。
如果 Replicat 尚未收到該交易中最後一個來源交易的交易結束記錄,TRANSACTIONTIMEOUT 會限制 Replicat 可保留目標交易開啟的時間長度。依照預設,Replicat 會將多個來源交易分組為一個目標交易以提升效能,但不會確認部分來源交易,且會無限期等待最後一筆記錄。Replicat 參數 GROUPTRANSOPS 可控制群組目標交易的大小下限。
下列事件的持續時間可能長到足以觸發 TRANSACTIONTIMEOUT:
-
網路問題可防止歷程檔資料傳遞至目標系統。
-
在任何系統上執行磁碟空間不足,無法寫入歷程檔資料。
-
擷取中止或終止交易的寫入記錄。
-
來源系統發生故障,例如電源中斷或系統當機。
如需詳細資訊,請參閱 Oracle GoldenGate 的參數與函數參照中的 TRANSACTIONTIMEOUT 。