

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# Oracle 端點疑難排解
<a name="CHAP_Troubleshooting_Latency_Source_Oracle"></a>

本節包含 Oracle 特定的複寫案例。

## 來源讀取已暫停
<a name="CHAP_Troubleshooting_Latency_Source_Oracle_Sourcereadingpaused"></a>

AWS DMS 在下列案例中暫停從 Oracle 來源讀取。此行為是依據設計。您可以使用任務日誌來調查造成此問題的原因。在任務日誌中尋找類似下列內容的訊息。如需使用任務日誌的相關資訊，請參閱[檢視和管理 DMS AWS 任務日誌](CHAP_Monitoring.md#CHAP_Monitoring.ManagingLogs)。
+ **SORTER 訊息**：這表示 DMS 正在快取複寫執行個體上的交易。如需詳細資訊，請參閱下列 [任務日誌中的 SORTER 訊息](CHAP_Troubleshooting_Latency_Target.md#CHAP_Troubleshooting_Latency_Target_Sorter)。
+ **偵錯任務日誌**：如果 DMS 中斷讀取程序，任務會重複將下列訊息寫入偵錯任務日誌，而不變更內容欄位或時間戳記：
  + **Binary Reader**：

    ```
    [SOURCE_CAPTURE  ]T:  Produce CTI event: 
    context '00000020.f23ec6e5.00000002.000a.00.0000:190805.3477731.16' 
    xid [00000000001e0018] timestamp '2021-07-19 06:57:55' 
    thread 2  (oradcdc_oralog.c:817)
    ```
  + **Logminer**：

    ```
    [SOURCE_CAPTURE  ]T:  Produce INSERT event: 
    object id 1309826 context '000000000F2CECAA010000010005A8F500000275016C0000000000000F2CEC58' 
    xid [000014e06411d996] timestamp '2021-08-12 09:20:32' thread 1  (oracdc_reader.c:2269)
    ```
+ AWS DMS 會針對每個新的重做或封存日誌操作記錄下列訊息。

  ```
  00007298: 2021-08-13T22:00:34 [SOURCE_CAPTURE ]I: Start processing archived Redo log sequence 14850 thread 2 name XXXXX/XXXXX/ARCHIVELOG/2021_08_14/thread_2_seq_14850.22977.1080547209 (oradcdc_redo.c:754)
  ```

  如果來源有新的重做或封存日誌操作，並且 AWS DMS 沒有將這些訊息寫入日誌，這表示任務不會處理事件。

## 高還原產生
<a name="CHAP_Troubleshooting_Latency_Source_Oracle_Highredo"></a>

如果任務正在處理還原或封存日誌，但來源延時仍然很嚴重，請嘗試找出還原日誌產生率和產生模式。如果產生的還原日誌層級很高，這會增加來源延時，因為任務會讀取所有還原和封存日誌，以擷取與複寫資料表相關的變更。

若要判斷還原產生率，請使用下列查詢。
+ 每日還原產生率：

  ```
  select trunc(COMPLETION_TIME,'DD') Day, thread#, 
  round(sum(BLOCKS*BLOCK_SIZE)/1024/1024/1024) GB,
  count(*) Archives_Generated from v$archived_log 
  where completion_time > sysdate- 1
  group by trunc(COMPLETION_TIME,'DD'),thread# order by 1;
  ```
+ 每小時還原產生率：

  ```
  Alter session set nls_date_format = 'DD-MON-YYYY HH24:MI:SS';
  select trunc(COMPLETION_TIME,'HH') Hour,thread# , 
  round(sum(BLOCKS*BLOCK_SIZE)/1024/1024) "REDO PER HOUR (MB)",
  count(*) Archives from v$archived_log 
  where completion_time > sysdate- 1
  group by trunc(COMPLETION_TIME,'HH'),thread#  order by 1 ;
  ```

若要針對此案例中的延時進行疑難排解，請檢查下列項目：
+ 檢查複寫的網路頻寬和單一執行緒效能，以確保基礎網路可支援來源還原產生率。如需網路頻寬如何影響複寫效能的相關資訊，請參閱先前的[網路速度與頻寬](CHAP_Troubleshooting_Latency.md#CHAP_Troubleshooting_Latency_Causes_Replication_Network)。
+ 檢查是否正確設定補充記錄。避免對來源進行額外的記錄，例如在資料表的所有資料欄上啟用記錄功能。如需設定補充記錄的相關資訊，請參閱[設定補充記錄](CHAP_Source.Oracle.md#CHAP_Source.Oracle.Self-Managed.Configuration.SupplementalLogging)。
+ 確認您正在使用正確的 API 讀取還原或封存日誌。您可以使用 Oracle LogMiner 或 AWS DMS Binary Reader。LogMiner 讀取線上還原日誌和封存還原日誌檔時，Binary Reader 會直接讀取並剖析原始還原日誌檔。因此 Binary Reader 的效能更佳。如果還原日誌產生每小時超過 10 GB，建議您使用 Binary Reader。如需詳細資訊，請參閱[使用 Oracle LogMiner 或 AWS DMS Binary Reader for CDC](CHAP_Source.Oracle.md#CHAP_Source.Oracle.CDC)。
+ 檢查您是否將 `ArchivedLogsOnly` 設為 `Y`。如果已設定此端點設定，則 AWS DMS 會從封存的還原日誌讀取。這會增加來源延遲，因為 會 AWS DMS 等待線上重做日誌封存後再讀取。如需詳細資訊，請參閱 [ArchivedLogsOnly](https://docs.aws.amazon.com/dms/latest/APIReference/API_OracleSettings.html#DMS-Type-OracleSettings-ArchivedLogsOnly)。
+ 如果 Oracle 來源使用 Automatic Storage Management (ASM)，請參閱[使用 Oracle 做為 的來源時，在 Oracle ASM 上存放 REDO AWS DMS](CHAP_Source.Oracle.md#CHAP_Source.Oracle.REDOonASM) 以取得如何正確設定資料存放區的相關資訊。您也可以使用 `asmUsePLSQLArray` 額外的連線屬性 (ECA)，進一步最佳化讀取效能。如需使用 `asmUsePLSQLArray` 的相關資訊，請參閱 [使用 Oracle 做為 來源時的端點設定 AWS DMS](CHAP_Source.Oracle.md#CHAP_Source.Oracle.ConnectionAttrib)。