舊版轉換工作區是較舊且功能較受限的轉換工作區類型。舊版轉換工作區不支援 Gemini 強化轉換功能或互動式 SQL 編輯器。您只能使用這些檔案,透過 Ora2Pg 遷移工具轉換來源結構定義。
我們不建議您使用舊版轉換工作區進行遷移,因為這類工作區對轉換工作流程設有多項其他限制:
互動式轉換工作區 | 舊版轉換工作區 |
---|---|
結構定義和程式碼物件轉換作業會在資料庫移轉服務中進行。 | 您可以使用 Ora2Pg 遷移工具,在資料庫遷移服務外部執行結構定義和程式碼物件轉換。 |
您可以在資料庫移轉服務中,直接將轉換後的來源套用至目的地資料庫。 | 您有責任將轉換後的結構定義套用至 PostgreSQL 適用的 Cloud SQL 目的地執行個體中的目的地資料庫。 |
您可以在資料庫移轉服務中直接測試結構定義草稿和程式碼,確保這些項目可以順利套用至目的地執行個體。 | 您無法測試草稿結構定義和程式碼,以免影響目的地執行個體。 |
如果資料表沒有主鍵和不重複的限制,系統會自動為其新增缺少的 rowid 欄。 |
套用結構定義後,您必須將缺少的主鍵新增至目的地資料表。 |
使用舊版轉換工作區
如果您的情況需要使用舊版轉換工作區,請採取下列動作修改遷移程序:
撰寫 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
設定指令來限制要移轉的記錄。- 建立舊版轉換工作區,然後上傳 Ora2Pg 檔案來轉換結構定義。
手動將轉換後的結構定義套用至目的地資料庫。
建立 Ora2Pg 設定並建立工作區後,您必須自行將產生的程式碼直接套用至目標資料庫。
遷移沒有主鍵的資料表。
資料庫移轉服務只會遷移含有主鍵的資料表。如果來源資料庫包含沒有主鍵的資料表,您需要在套用轉換後的結構定義後,手動在目標資料庫的轉換資料表中建立主鍵或不重複的限制。展開下方章節即可查看詳細資料。
在目的地資料庫中新增主鍵限制
如要遷移沒有主鍵的 Oracle 資料表,請按照下列步驟操作:
- 使用 SQL 用戶端連線至目的地 Cloud SQL 執行個體。你可以使用下列方法:
-
psql
client。您可以使用這個方法連線至執行個體私人 IP,但可能需要建立 Compute Engine 虛擬機器。 -
gcloud sql connect
指令。這個指令僅適用於已啟用公開 IP 位址的 Cloud SQL 執行個體。
-
- 為資料表建立缺少的主鍵限制。如要進一步瞭解主鍵,請參閱 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
資料欄。資料庫移轉服務會從來源 OracleROWID
虛擬資料欄填入對應的數值。如要新增資料欄並設為主鍵,請執行下列指令:
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);
- 使用 SQL 用戶端連線至目的地 Cloud SQL 執行個體。你可以使用下列方法:
後續步驟
使用舊版工作區執行轉換工作流程後,即可繼續進行標準遷移程序。請參閱「 建立遷移工作」。