已知限制和建議

本頁面說明已知限制 (包括處理 主鍵或 外鍵和觸發條件等實體時的特殊考量),以及使用資料庫遷移服務進行異質 Oracle 遷移作業的 建議做法。

哪些項目不會遷移

  • 使用者和權限不會遷移。
  • 在進行中的遷移工作中,結構定義變更不會自動遷移。如果您在遷移期間變更結構定義,請先更新轉換工作區,反映結構定義變更,然後重新整理相關遷移工作。詳情請參閱「 將更新後的結構定義或資料表新增至遷移工作」。
  • SAVEPOINT 陳述式不受支援,且可能在復原時導致資料不一致。
  • 資料庫遷移服務會複製使用者定義的資料類型,但只會儲存衍生出使用者定義類型的基本資料類型。舉例來說,如果您根據 VARCHAR2 資料類型定義 USERNAME 資料類型,資料會以 VARCHAR 形式儲存在目的地。

資料庫、交易和資料一致性

  • 遷移作業最終會保持一致,因為資料庫遷移服務不會在交易發生時複製每筆交易。遷移作業會從多個資料表匯入資料。資料載入目的地的順序可能不盡相同,但來源停止寫入且遷移緩衝區清除後,就會與來源重新對齊。
  • 如果是異質 Oracle 遷移作業,資料庫遷移服務每項遷移工作只能遷移一個資料庫。
  • 資料庫遷移服務支援 Oracle 多租戶架構 (CDB/PDB),但每項遷移工作只能遷移一個可插式資料庫。
  • Oracle Label Security (OLS) 不會複製。
  • 目的地資料庫的名稱必須與用於連線至資料庫的使用者名稱相同。
  • 在遷移過程中,來源資料庫中復原的任何交易,都可能會暫時顯示在目的地 (如果交易時間夠長)。
  • 資料庫遷移服務不支援在 Oracle Real Application Clusters (RAC) 環境中,使用單一用戶端存取名稱 (SCAN) 功能直接連線至資料庫。如要瞭解如何解決這類環境中使用公開 IP 許可清單連線的問題,請參閱「 排解 Oracle SCAN 錯誤」。

資料編碼

  • 資料庫遷移服務僅支援目的地資料庫的 UTF8 設定編碼。不支援包含非 UTF8 編碼集字元的結構定義和資料表名稱。
  • 資料庫遷移服務支援下列 Oracle 資料庫字元集編碼:
    • AL16UTF16
    • AL32UTF8
    • IN8ISCII
    • IW8ISO8859P8
    • JA16SJIS
    • JA16SJISTILDE
    • KO16MSWIN949
    • US7ASCII
    • UTF8
    • WE8ISO8859P1
    • WE8ISO8859P9
    • WE8ISO8859P15
    • WE8MSWIN1252
    • ZHT16BIG5

資料表、結構定義和其他物件

  • 遷移期間,不支援對資料、結構定義和中繼資料進行資料定義語言 (DDL) 變更。如果您在遷移期間更新結構定義,則必須將變更提取至轉換工作區、轉換程式碼、清除目的地,然後再次執行遷移工作。
  • 資料表資料欄名稱不得包含英數字元或底線 (_) 以外的字元。
  • 資料表或資料欄的名稱長度上限為 30 個字元。 資料庫遷移服務無法複製超過這項限制的資料表,或資料表包含的資料欄名稱超過這項限制。
  • 不支援索引組織資料表 (IOT)。
  • 全域臨時資料表必須在目的地安裝並建立 pgtt PostgreSQL 擴充功能。
  • 如果是 BFILE 類型的資料欄,系統只會複製檔案路徑。系統不會複製檔案內容。
  • 如果是 Oracle 11g,系統不支援資料欄含有 ANYDATA 或 UDT 資料類型的資料表,也不會複製整個資料表。
  • 使用 dbms_job 或 dbms_scheduler 排定的工作不會遷移。
  • 系統會遷移 materialized view 定義,但不會遷移 materialized 資料。完成遷移後,請重新整理 materialized view,以便填入遷移資料表的資料。
  • 系統會遷移序列值,但來源資料庫中的值可能會在遷移完成前持續增加。遷移完成後,請更新目的地執行個體的序列值,使其與來源資料庫中的值相符。
  • 遷移工作最多只能有 10,000 個資料表。
  • 資料列的大小上限為 100 MB。超過 100 MB 限制的資料列不會遷移,並在遷移工作中顯示為錯誤。
  • 遷移作業開始後建立的資料表不會自動遷移。首先,您必須在轉換工作區中提取結構定義、將轉換後的定義套用至目的地,並更新遷移工作。
  • 資料遷移期間不會複製虛擬資料欄 (GENERATED ALWAYS AS (...) VIRTUAL),因為 Oracle 不會將虛擬資料欄值寫入重做日誌檔。如果虛擬資料欄是複合主鍵的一部分,則在複製期間,只有非虛擬資料欄會做為主鍵。

資料類型限制

Oracle 遷移作業不支援下列資料類型:

  • ANYDATA (如果是 Oracle 11g,系統完全不支援含有 ANYDATA 的資料表,也不會複製這類資料表)。
  • BFILE
  • INTERVAL DAY TO SECOND
  • INTERVAL YEAR TO MONTH
  • LONG/LONG RAW
  • SDO_GEOMETRY
  • UDT
  • UROWID
  • XMLTYPE
  • TIMESTAMP中的零日期

主鍵注意事項

沒有主鍵的資料表無法保證複製作業的一致性。資料庫遷移服務只會遷移具有主鍵的資料表。如果來源資料庫包含沒有主鍵的資料表,當您 轉換原始碼和結構定義時,資料庫遷移服務轉換工作區會自動在目的地資料表中建立任何缺少的主鍵。這項自動化程序需要來源資料表符合下列條件:

  • 尚未設定主鍵。
  • 請勿在沒有可為空值資料欄的情況下,使用 UNIQUE 限制。
  • 請勿使用沒有可為空值欄的 UNIQUE 索引。

如果資料表不符合這些規定,您必須 在轉換後的 PostgreSQL 結構定義中,手動為資料表新增缺少的主鍵。您也可以使用 GENERATE_MISSING_PK 轉換指令,停用自動產生主鍵功能。

如果您使用舊版轉換工作區,則必須先在目的地資料庫的轉換資料表中,手動建立主鍵限制,才能開始遷移。詳情請參閱「 舊版轉換工作區」。

外鍵和觸發條件的注意事項

來源資料庫中的外鍵和觸發條件可能會導致資料完整性問題,甚至造成遷移工作失敗。 只要使用 REPLICATION 選項略過遷移使用者的外鍵和觸發條件,即可避免這些問題。 或者,您也可以捨棄目的地資料庫中的所有外鍵和觸發條件,並在遷移完成後重新建立。

觸發條件

資料庫遷移服務複製的資料,已納入來源資料庫觸發條件所做的任何變更。如果在目的地啟用觸發條件,這些條件可能會再次觸發並操縱資料,導致資料完整性或重複問題。

外鍵

資料庫遷移服務不會以交易方式複製資料,因此資料表可能會不按順序遷移。如果存在外鍵,且使用外鍵的子項資料表在父項資料表之前遷移,可能會發生複製錯誤。

建議

  • 建立目的地 Cloud SQL 資料庫時,請務必使用足夠的運算和記憶體資源,滿足遷移需求。建議選用至少具備雙核心 CPU 的機型。

    舉例來說,假設機器名稱為 db-custom,內含 2 個 CPU 和 3840 MB 的 RAM,則機型名稱的格式為 db-custom-2-3840。

  • 遷移期間,目的地 Cloud SQL 資料庫可寫入,因此可視需要套用資料操縱語言 (DML) 變更。請謹慎變更資料庫設定或資料表結構,否則可能會導致遷移程序中斷或影響資料完整性。

配額

  • 任何時間最多可有 2,000 個連線設定檔和 1,000 項遷移工作。如要騰出空間,可以刪除遷移工作 (包括已完成的工作) 和連線設定檔。