當來源資料庫中存在資料表時,如何針對我的 AWS DMS 任務的 "ERROR: No tables were found at task initialization" (錯誤:在任務初始化時找不到資料表) 錯誤進行疑難排解?

2 分的閱讀內容
0

當我嘗試使用 AWS Database Migration Service (AWS DMS) 遷移資料時,收到 "ERROR: No tables were found at task initialization (錯誤:在任務初始化時找不到資料表)” 錯誤訊息。但是,資料表存在於我的來源資料庫中。

簡短描述

您會收到 "No tables were found at task initialization (任務初始化時找不到資料表)" 錯誤有以下幾個原因:

  • AWS DMS 映射規則的定義不正確。
  • 您沒有擷取來源資料表的必要權限。

此錯誤的原因取決於您的組態和使用的資料庫引擎。若要解決此問題,請依照您使用案例的相關疑難排解步驟執行。

解決方案

映射規則定義不正確

AWS DMS 支援作為來源使用的某些資料庫引擎會區分大小寫,例如 Oracle 或 DB2。因此,當您使用 Oracle 或 DB2 作為 AWS DMS 的來源時,您的資料表名稱、檢視名稱和資料欄名稱必須使用大寫字母。

相對地,MySQL 和 PostgreSQL 等資料庫引擎依預設會對所有物件使用小寫。如需詳細資訊,請參閱使用來源篩選條件

AWS DMS 映射規則和端點設定會區分大小寫,因為其必須與各種來源引擎搭配使用。如果 AWS DMS 任務中指定的物件名稱與來源資料庫名稱不同,則任務會失敗。

若要解決這個問題,請確認下列幾件事:

1.    確定資料表存在於來源中,且在任務開始之前未被刪除。

2.    如果資料表存在於來源中,請確定物件名稱與來源資料庫名稱完全相符。

例如,當您使用 Oracle 資料庫作為來源時,Oracle 會使用以下範例物件名稱:

  • 來源資料庫 SID:ORCL – 使用此選項來設定 Oracle 來源端點資料庫名稱。
  • 來源資料庫架構名稱:ADMIN – 使用此選項來選擇映射規則。
  • 來源資料庫資料表名稱:TEST – 使用此選項來選擇映射規則。

下列範例在映射規則中使用小寫物件名稱,並以 Oracle 作為來源:

{
  "rules": [
    {
      "rule-type": "selection",
      "rule-id": "1",
      "rule-name": "1",
      "object-locator": {
        "schema-name": "admin",
        "table-name": "test"
      },
      "rule-action": "include",
      "filters": []
    }
  ]
}

由於 Oracle 需要大寫物件名稱,因此在此範例中,AWS DMS 任務會失敗。

下列範例在映射規則中使用大寫物件名稱,並以 Oracle 作為來源:

{
  "rules": [
    {
      "rule-type": "selection",
      "rule-id": "1",
      "rule-name": "1",
      "object-locator": {
        "schema-name": "ADMIN",
        "table-name": "TEST"
      },
      "rule-action": "include",
      "filters": []
    }
  ]
}

在此範例中,任務不會失敗。

您沒有擷取來源資料表的必要權限

確定您具有從 AWS DMS 擷取來源資料表的必要許可。

如果您使用 Oracle 做為來源端點,請參閱What are the permissions required for AWS DMS when using Oracle as the source endpoint? (使用 Oracle 做為來源端點時,AWS DMS 需要哪些許可?)

如需每個來源資料庫引擎權限的相關資訊,請參閱Sources for data migration (資料移轉來源)。


相關資訊

AWS Database Migration Service 中的遷移任務疑難排解

AWS 官方
AWS 官方已更新 1 年前