關於舊版轉換工作區

舊版轉換工作區是較舊且功能較受限的轉換工作區類型。舊版轉換工作區不支援 Gemini 強化轉換功能或互動式 SQL 編輯器。您只能使用這些檔案,透過 Ora2Pg 遷移工具轉換來源結構定義。

我們不建議您使用舊版轉換工作區進行遷移,因為這類工作區對轉換工作流程設有多項其他限制:

互動式轉換工作區舊版轉換工作區
結構定義和程式碼物件轉換作業會在資料庫移轉服務中進行。 您可以使用 Ora2Pg 遷移工具,在資料庫遷移服務外部執行結構定義和程式碼物件轉換。
您可以在資料庫移轉服務中,直接將轉換後的來源套用至目的地資料庫。 您有責任將轉換後的結構定義套用至 PostgreSQL 適用的 Cloud SQL 目的地執行個體中的目的地資料庫。
您可以在資料庫移轉服務中直接測試結構定義草稿和程式碼,確保這些項目可以順利套用至目的地執行個體。 您無法測試草稿結構定義和程式碼,以免影響目的地執行個體。
如果資料表沒有主鍵和不重複的限制,系統會自動為其新增缺少的 rowid 欄。 套用結構定義後,您必須將缺少的主鍵新增至目的地資料表。
表 1:轉換工作區功能比較

使用舊版轉換工作區

如果您的情況需要使用舊版轉換工作區,請採取下列動作修改遷移程序:

  1. 撰寫 Ora2Pg 設定檔。

    如要瞭解如何使用 Ora2Pg 轉換工具,請參閱 Ora2Pg 說明文件。展開下列章節,查看資料庫遷移服務支援的完整指令清單。

    資料庫移轉服務支援的 Ora2Pg 設定

    資料庫遷移服務支援 Ora2Pg 檔案的下列設定項目:

    • BOOLEAN_VALUES
    • DATA_TYPE
    • DEFAULT_NUMERIC
    • ENABLE_MICROSECOND
    • EXPORT_SCHEMA
    • MODIFY_STRUCT
    • MODIFY_TYPE
    • PG_INTEGER_TYPE
    • PG_NUMERIC_TYPE
    • PG_SCHEMA
    • PRESERVE_CASE
    • REPLACE_AS_BOOLEAN
    • REPLACE_COLS
    • REPLACE_TABLES
    • REPLACE_ZERO_DATE
    • SCHEMA

    資料庫移轉服務會使用連線設定檔定義連線詳細資料,因此您不需要在 Or2Pg 設定檔中定義下列資訊:

    • ORACLE_DSN
    • ORACLE_HOME
    • ORACLE_PWD
    • ORACLE_USER
    • PG_DSN
    • PG_PWD
    • PG_USER

    此外,資料庫移轉服務不會使用 WHERE 設定指令來限制要移轉的記錄。

  2. 建立舊版轉換工作區,然後上傳 Ora2Pg 檔案來轉換結構定義
  3. 手動將轉換後的結構定義套用至目的地資料庫。

    建立 Ora2Pg 設定並建立工作區後,您必須自行將產生的程式碼直接套用至目標資料庫。

  4. 遷移沒有主鍵的資料表。

    資料庫移轉服務只會遷移含有主鍵的資料表。如果來源資料庫包含沒有主鍵的資料表,您需要在套用轉換後的結構定義後,手動在目標資料庫的轉換資料表中建立主鍵或不重複的限制。展開下方章節即可查看詳細資料。

    在目的地資料庫中新增主鍵限制

    如要遷移沒有主鍵的 Oracle 資料表,請按照下列步驟操作:

    1. 使用 SQL 用戶端連線至目的地 Cloud SQL 執行個體。你可以使用下列方法:
      • psql client。您可以使用這個方法連線至執行個體私人 IP,但可能需要建立 Compute Engine 虛擬機器。
      • gcloud sql connect 指令。這個指令僅適用於已啟用公開 IP 位址的 Cloud SQL 執行個體。
    2. 為資料表建立缺少的主鍵限制。如要進一步瞭解主鍵,請參閱 PostgreSQL 說明文件中的「 主鍵」。

      您也可以展開下列章節,查看 SQL 指令範例:

      使用現有資料欄建立主鍵

      您的資料表可能已根據資料欄或資料欄組合,建立邏輯主鍵。舉例來說,可能會有設定了唯一限制或索引的資料欄。使用這些資料欄,為來源資料庫中的資料表產生新的主鍵。例如:

      ALTER TABLE TABLE_NAME
      ADD PRIMARY KEY (COLUMN_NAME);

      使用所有資料欄建立主鍵

      如果沒有可做為主鍵的預先存在限制,請使用資料表的所有欄建立主鍵。請確認主鍵長度未超過 PostgreSQL 執行個體允許的上限。例如:

      ALTER TABLE TABLE_NAME
      ADD PRIMARY KEY (COLUMN_NAME_1, COLUMN_NAME_2, COLUMN_NAME_3, ...);

      建立這類複合主鍵時,您需要明確列出要使用的所有資料欄名稱。您無法使用陳述式擷取所有資料欄名稱。

      使用 ROWID 虛擬資料欄建立唯一限制

      Oracle 資料庫會使用 ROWID 虛擬資料欄,儲存資料表中每列的位置。如要遷移沒有主鍵的 Oracle 資料表,可以在目的地 PostgreSQL 資料庫中新增 ROWID 資料欄。資料庫移轉服務會從來源 Oracle ROWID 虛擬資料欄填入對應的數值。

      如要新增資料欄並設為主鍵,請執行下列指令:

      ALTER TABLE TABLE_NAME ADD COLUMN rowid numeric(33,0) NOT NULL;
      CREATE SEQUENCE TABLE_NAME_rowid_seq INCREMENT BY -1 START WITH -1 OWNED BY TABLE_NAME.rowid;
      ALTER TABLE TABLE_NAME ALTER COLUMN rowid SET DEFAULT nextval('TABLE_NAME_rowid_seq');
      ALTER TABLE TABLE_NAME ADD CONSTRAINT CONSTRAINT_DISPLAY_NAME PRIMARY KEY (rowid);

後續步驟

使用舊版工作區執行轉換工作流程後,即可繼續進行標準遷移程序。請參閱「 建立遷移工作」。