舊版轉換工作區是舊版轉換工作區的一種,功能較為受限。舊版轉換工作區不支援 Gemini 強化轉換功能或互動式 SQL 編輯器。您只能使用這些檔案,透過 Ora2Pg 遷移工具轉換來源結構定義。
我們不建議您使用舊版轉換工作區進行遷移,因為這會對轉換工作流程造成多項其他限制:
互動式轉換工作區 | 舊版轉換工作區 |
---|---|
資料庫移轉服務會進行結構定義和程式碼物件轉換作業。 | 您可以使用 Ora2Pg 遷移工具,在資料庫移轉服務外部執行結構定義和程式碼物件轉換作業。 |
您可以在資料庫移轉服務中,直接將轉換後的來源套用至目的地資料庫。 | 您必須將轉換後的結構定義套用至 AlloyDB for PostgreSQL 目的地叢集中的目的地資料庫。 |
您可以直接在資料庫移轉服務中測試草稿結構定義和程式碼,確保這些項目可以順利套用至目的地叢集。 | 您無法測試草稿結構定義和程式碼,而不影響目的地叢集。 |
針對沒有主鍵和不重複限制的資料表,自動新增缺少的 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 設定並建立工作區後,您必須直接在目的地資料庫上套用產生的程式碼。
遷移沒有主鍵的資料表。
資料庫移轉服務只會遷移含有主鍵的資料表。如果來源資料庫包含沒有主鍵的資料表,您必須在套用轉換後的結構定義後,手動在目的地資料庫中的轉換資料表中建立主鍵或不重複的限制。展開下列部分即可瞭解詳情。
在目的地資料庫中新增主鍵或唯一限制
如要遷移沒有主鍵的 Oracle 資料表,請執行下列步驟:
-
使用
psql
用戶端連線至 PostgreSQL 適用的 AlloyDB 叢集。 - 為資料表建立缺少的主鍵限制。如要進一步瞭解主鍵,請參閱 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);
-
使用
後續步驟
使用舊版工作區執行轉換工作流程後,您可以繼續執行標準遷移程序。請參閱「 建立遷移工作」一節。