使用以版本為基礎的重新定義
Oracle GoldenGate 支援搭配 Oracle 資料庫使用以版本為基礎的重新定義 (EBR),讓您能夠在使用應用程式的資料庫元件時升級該應用程式的資料庫元件,因此可將停止工作時間降到最低或減少。
版本是「版本」物件所屬的非綱要物件。編輯可以視為擁有的版本物件或命名空間。每個資料庫都從一個名為 ORA$BASE 的版本開始,這包括升級的資料庫。一個資料庫中可以有多個版本,而且每個版本只能有一個子項。例如,如果您依序建立三個版本:edition1、edition2、edition3,則 edition1 是 edition2 的父項,也就是 edition3 的父項。這與建立使用者或資料庫階段作業無關,或建立新版本時目前的版本無關。建立版本時,會繼承其父項的所有版本物件。若要在 Oracle GoldenGate 使用版本,您必須建立版本。
如果物件是可編輯的類型、使用 EDITIONABLE 屬性建立物件,並且啟用綱要來編輯該物件類型。當您建立、更改或刪除版本化物件時,重做日誌會包含它所屬的版本名稱。在容器資料庫中,版本屬於容器,每個容器都有自己的預設版本。
擷取所有 Extract 組態的 CREATE | DROP EDITION DDL。它們屬於 OTHER 類別,並指派 OBJTYPE 選項值 EDITION。OBJTYPE 選項可用於篩選,例如:
DDL EXCLUDE OBJTYPE EDITION
DDL EXCLUDE OBJTYPE EDITION OPTYPE CREATE
DDL EXCLUDE OBJTYPE EDITION OPTYPE DROP
DDL EXCLUDE OBJTYPE EDITION OPTYPE DROP ALLOWEMPTYOWNER OBJNAME *edition_name*
您必須使用下列語法從 Extract 或 Replicat 排除版本:
EXCLUDE OBJTYPE EDITION, ALLOWEMPTYOWNER OBJNAME *edition_name*
版本屬於 OTHER 類別,因此不會對版本名稱執行對應。套用時,會自動將 USE 權限授予 Replicat 使用者。如果使用者存在於目標資料庫中,Replicat 也會對原始建立使用者執行 grant use on edition name with grant option。因為版本無法對應作業,所以它們沒有擁有者,所以標準 EXCLUDE 敘述句無法運作。
用來建立或更改版本的 DDL 並不會讓使用者啟用版本,而是啟用綱要進行編輯。這是一個重要的區別,因為這表示 Replicat 使用者不需要啟用版本,即可將 DDL 套用至版本物件。當 Replicat 套用 CREATE EDITION DDL 時,如果原始使用者存在於目標資料庫上,它會授予原始建立使用者權限給 USE。對於任何未複製的 CREATE EDITION 敘述句,您必須發出 USE WITH GRANT OPTION 授權給 Replicat 使用者。
可版本物件是否變成版本,是由套用它的綱要所控制。如果歷程檔中存在版本名稱屬性且不是空的,Replicat 會在套用 DDL 之前先切換其目前的階段作業版本。
Extract 和 Replicat 都支援容器資料庫環境。不需要其他組態。Replicat 使用者的綱要如果是通用使用者,就無法啟用版本。將 DDL 套用至其他綱要中的版本物件時,不需要啟用 Replicat 使用者的綱要來進行版本。
從 Oracle Database 23ai 開始,可以執行先前封鎖的線上 DDL 作業。這對使用以版本為基礎的重新定義 (EBR) 完成的 Oracle 應用程式升級提供了額外的彈性。如需詳細資訊,請參閱 Oracle AI Database Development Guide 中的 Using Edition-Based Redefinition 。
Oracle GoldenGate Extract 和 Replicat 也可以管理這類 DDL 作業的複製,以便正確複製「Oracle 應用程式升級」的變更。此外,您還可以從移除 ACDR 的表格線上 DROP 未使用的資料欄。