Oracle DDL 中物件與作業的支援詳細資訊
瞭解 Oracle GoldenGate 支援用於擷取及複製 DDL 作業的 Oracle 物件與作業。
Oracle DDL 支援的物件與作業
DDL 擷取支援已整合至資料庫日誌探勘伺服器。您必須將資料庫參數相容性設為 11.2.0.4.0 或更新版本。Extract 支援包括以密碼為基礎之資料欄加密的 DDL,例如:
-
CREATE TABLE t1 (a number, b varchar2(32) ENCRYPT IDENTIFIED BY my_password); -
ALTER TABLE t1 ADD COLUMN c varchar2(64) ENCRYPT IDENTIFIED BY my_password;
下列其他陳述適用於與 DDL 支援相關的 Extract。
-
Oracle DDL 複製支援所有 Oracle GoldenGate 拓樸組態。
-
在包含相同描述資料的兩個 (且只有兩個) 資料庫之間,支援使用中 (雙向) 複製 Oracle DDL。
-
Oracle GoldenGate 支援下列物件的 DDL:
-
叢集
-
directories - 目錄
-
功能
-
索引
-
配套
-
程序
-
表格
-
表格空間
-
角色
-
序列
-
同義字
-
觸發器
-
類型
-
檢視
-
具體化視觀表
-
使用者
-
不顯示的資料欄
-
-
下列 Oracle AI Database 物件的 Extract 支援以 Oracle 版本為基礎的重新定義 (EBR) 資料庫複製 Oracle DDL:
-
功能
-
程式庫
-
套件 (規格與主體)
-
程序
-
同義字
-
類型 (規格和主體)
-
檢視
-
-
從 Oracle GoldenGate 21c 開始,將會提供大小超過 4 MB 的 DDL 複製支援。
-
從 Oracle GoldenGate 23ai 開始,支援 SQL 網域。
-
如果資料列大小小於 4MB,Oracle GoldenGate 就能夠管理含有 4000 個資料欄的表格。
-
Oracle GoldenGate 支援 Extract 可見的全域暫時表格 (GTT) DDL 作業,以便複製它們。您必須設定
DDLOPTIONS參數以啟用此作業,因為預設並未設定該參數。 -
Oracle GoldenGate 支援搭配
NOUSERID和TRANLOGOPTIONS GETCTASDML使用的字典。這表示 Extract 會從 LogMiner 說明接收物件描述資料,而不會查詢說明物件。當來源資料庫相容性參數大於或等於 11.2.0.4 時,Oracle GoldenGate 會自動使用說明。在 Oracle GoldenGate 版本 12.2 .x 中使用字典和歷程檔格式時,如果 Oracle Database 版本早於 12.1.0.2,則 Extract 需要在探勘資料庫套用 Logminer 修正程式。
-
Oracle GoldenGate 支援在 Extract 中複製不顯示的資料欄。必須輸入歷程檔格式版本 12.2。Replicat 必須指定
MAPINVISIBLECOLUMNS參數,或明確對應至MAP參數之COLMAP子句中的不顯示資料欄。如果使用
SOURCEDEFS或TARGETDEFS,則 Oracle 表格之定義檔的描述資料格式必須與歷程檔格式相容。描述資料格式 12.2 與歷程檔格式 12.2 相容,而 12.2 之前的描述資料格式與 12.2 之前的歷程檔格式相容。若要指定定義檔案的中繼資料格式,請在DEFGEN中產生定義檔案時,使用DEFSFILE參數的FORMAT RELEASE選項。 -
用以建立命名空間相關資訊環境 (
CREATE CONTEXT) 的 DDL 敘述句是由 Extract 擷取,並由 Replicat 套用。 -
抽取模式中的 Extract 支援下列 DDL 選項:
-
DDL INCLUDE ALL -
DDL EXCLUDE ALL -
DDL EXCLUDE OBJNAME
也支援
DDL EXCLUDE的SOURCECATALOG和ALLCATALOG選項。如果未指定 DDL 參數,則會將所有 DDL 寫入歷程檔。如果已指定
DDL EXCLUDE OBJNAME,且物件擁有者不符合排除規則,則會將其寫入歷程檔。 -
-
從 Oracle 資料庫 21c 開始,您可以使用下列 DDL 來支援封鎖未由 Oracle GoldenGate 複製的 DML/DDL 變更:
ALTER DATABASE [ENABLE | DISABLE] goldengate blocking mode;啟用 Oracle GoldenGate 阻隔模式時,在表格中使用
support_mode NONE且執行不支援之 Oracle PL/SQL 敘述句的 DML 將會因下列錯誤而失敗:ORA-26981: "operation was unsupported during Oracle GoldenGate blocking mode"對於 Oracle 資料庫 21c,下列功能會導致表格在 Oracle GoldenGate 中具有
support_mode NONE:-
BFILE作為 ADT 資料欄或輸入表格的屬性 -
沒有定量的表格
-
OLAP AW$ 表格
-
分區佇列表格
-
已排序雜湊叢集表格
-
關聯式表格中 ADT 屬性的主索引鍵限制條件
-
長
raw/varchar(超過 4000 個位元組) 的主索引鍵 / 唯一索引鍵限制條件 -
可以查詢
V$DATABASE資料欄Goldengate_Blocking_Mode,以判斷目前的封鎖模式狀態。
-
-
若為 DDL 自動擷取模式:
-
這僅與
DDL INCLUDE MAPPED相關,因為 Extract 會根據TABLE和TABLEEXCLUDE參數擷取 DDL。 -
只有表格相關的 DDL 可以自動擷取。
-
DDL 可在表格層次啟用自動擷取:
CREATE/ALTER TABLE ... ENABLE LOGICAL REPLICATION ALLKEYS;
或
<pre class="copy"><code>CREATE/ALTER TABLE ... ENABLE LOGICAL REPLICATION ALLOW NOVALIDATE KEYS;</code></pre>請參閱 Oracle AI Database Utilities 手冊中的如何擷取 Oracle GoldenGate 的補充記錄。
-
-
分割區相關 DDL 和分割區維護作業支援下列作業
- 刪除分割區 :@ info/ plain
如果以相同名稱重新建立分割區,則會得到新的物件編號。系統會清除內部快取,以儘量減少處理刪除分割區 DDL 時的空間使用量。
- 截斷分割區 :
分割區名稱與物件編號相同。基礎表格物件版本保持不變。
- 重新命名分割區 :
分割區物件編號會維持相同,但會取得新名稱。基準表格的物件版本被碰撞。看到此 DDL 並重新填入下一個 DML 時,記憶體名稱快取將會變成無效。儲存指定分割區物件編號是否需要重新評估的快取,因為新分割區名稱可能會從篩選切換為不篩選,反之亦然。
- Exchange 分割區:
以表格交換分割區中的資料,反之亦然。正在交換的分割區物件編號不會變更。Dataobj# 會變更,但不會被 Extract 使用。分割區本身仍屬於相同的表格。
- 合併分割區︰
將一或多個分割區合併至新的分割區。DDL 會建立新分割區並刪除合併的分割區。應清除記憶體快取以節省空間,且使用者應確保新建立分割區的篩選規則正確無誤。
- 分割分割:
正在分割的分割區會保留其原始名稱與物件編號,並會為分割資料建立新的分割區。使用者必須確保新建立分割區的分割區篩選規則正確無誤。
- 聯合分割區:
減少雜湊已分割表格中的分割區數目。聯合的特定分割區是由資料庫選取,且會在其內容重新分配後刪除。其餘的分割區會保留相同的名稱和物件編號。應清除內部快取,以將空間耗用量降到最低。
- 修改分割區:
修改分割區的預設和實際屬性,但不新增或刪除清單分割區的值。所有修改都會讓分割區名稱與物件編號保持不變。
- 移動分割區 :
分割區資料會被移到新的表格空間。分割區名稱與編號維持不變。
- 重新定義表格:
dbms_redefinition可透過使用暫時表格來分割表格。分割區是在暫時表格上建立,在finish_redef作業之後,表格會交換名稱。在暫時表格上建立的分割區會在交換表格時,保留其名稱與物件編號。Extract 篩選快取需要在finish_redef上重新評估,因為分割區現在屬於基本表格。使用者必須確定正確的篩選規則。- 重新定義分割區 :
重新定義表格時,分割區會從原始表格追蹤到暫時表格。例如,假設原始表格含有
USER表格空間中的分割區,而暫時表格建立時沒有分割區,且表格存在於NEW表格空間中。在此情況下,在finish_redef作業之後,交換表格時,分割區仍然存在於USER表格空間中。重新定義分割區允許將分割區移至暫時表格的NEW表格空間。分割區會保留其名稱和物件編號。- 系統產生的分割區名稱 :
自動為雜湊分割區和作業 (例如分割分割區) 建立分割區時,分割區名稱的格式為
SYS_P sequence value。同樣地,子分割區的格式為SYS_SUBP sequence value。建議先重新命名分割區,再將 DML 除外,以符合篩選規則。
Oracle DDL 中不支援的物件與作業
以下是 Oracle DDL 中不支援的物件和作業清單。
排除的物件
下列名稱或名稱前置碼為 Oracle 保留名稱,必須從 Oracle GoldenGate DDL 組態中排除。Oracle GoldenGate 會忽略包含這些名稱的物件。
排除的綱要 :
"ANONYMOUS", // HTTP access to XDB
"APPQOSSYS", // QOS system user
"AUDSYS", // audit super user
"BI", // Business Intelligence
"CTXSYS", // Text
"DBSNMP", // SNMP agent for OEM
"DIP", // Directory Integration Platform
"DMSYS", // Data Mining
"DVF", // Database Vault
"DVSYS", // Database Vault
"EXDSYS", // External ODCI System User
"EXFSYS", // Expression Filter
"GSMADMIN_INTERNAL", // Global Service Manager
"GSMCATUSER", // Global Service Manager
"GSMUSER", // Global Service Manager
"LBACSYS", // Label Security
"MDSYS", // Spatial
"MGMT_VIEW", // OEM Database Control
"MDDATA",
"MTSSYS", // MS Transaction Server
"ODM", // Data Mining
"ODM_MTR", // Data Mining Repository
"OJVMSYS", // Java Policy SRO Schema
"OLAPSYS", // OLAP catalogs
"ORACLE_OCM", // Oracle Configuration Manager User
"ORDDATA", // Intermedia
"ORDPLUGINS", // Intermedia
"ORDSYS", // Intermedia
"OUTLN", // Outlines (Plan Stability)
"SI_INFORMTN_SCHEMA", // SQL/MM Still Image
"SPATIAL_CSW_ADMIN", // Spatial Catalog Services for Web
"SPATIAL_CSW_ADMIN_USR",
"SPATIAL_WFS_ADMIN", // Spatial Web Feature Service
"SPATIAL_WFS_ADMIN_USR",
"SYS",
"SYSBACKUP",
"SYSDG",
"SYSKM",
"SYSMAN", // Adminstrator OEM
"SYSTEM",
"TSMSYS", // Transparent Session Migration
"WKPROXY", // Ultrasearch
"WKSYS", // Ultrasearch
"WK_TEST",
"WMSYS", // Workspace Manager
"XDB", // XML DB
"XS$NULL",
"XTISYS", // Time Index
特殊綱要:
"AURORA$JIS$UTILITY$", // JSERV
"AURORA$ORB$UNAUTHENTICATED", // JSERV
"DSSYS", // Dynamic Services Secured Web Service
"OSE$HTTP$ADMIN", // JSERV
"PERFSTAT", // STATSPACK
"REPADMIN",
"TRACESVR" // Trace server for OEM
排除的表格 (* 萬用字元代表任何綱要或任何字元):
"*.AQ$*", // advanced queues
"*.DR$*$*", // oracle text
"*.M*_*$$", // Spatial index
"*.MLOG$*", // materialized views
"*.OGGQT$*",
"*.OGG$*", // AQ OGG queue table
"*.ET$*", // Data Pump external tables
"*.RUPD$*", // materialized views
"*.SYS_C*", // constraints
"*.MDR*_*$", // Spatial Sequence and Table
"*.SYS_IMPORT_TABLE*",
"*.SYS_EXPORT_TABLE*",
"*.CMP*$*", // space management, rdbms >= 12.1
"*.DBMS_TABCOMP_TEMP_*", // space management, rdbms < 12.1
"*.MDXT_*$*" // Spatial extended statistics tables
其他不支援的 DDL
Oracle GoldenGate 不支援下列項目:
-
巢狀表格上的 DDL。
-
識別資料欄上的 DDL。
-
ALTER DATABASE和ALTER SYSTEM(這些不是 DDL) 使用說明時,您可以複製ALTER DATABASE DEFAULT EDITION和ALTER PLUGGABLE DATABASE DEFAULT EDITION。所有其他的ALTER [PLUGABLE] DATABASE指令都會被忽略。 -
待命資料庫上的 DDL。
-
資料庫連結 DDL。
-
DDL 會建立含有
FLASHBACK ARCHIVE子句與 DDL 的表格,此子句會建立、變更或刪除倒溯資料存檔本身。支援FLASHBACK ARCHIVE表格上的 DML。 -
某些 DDL 將會產生系統產生的物件名稱。系統產生的物件名稱在兩個不同的資料庫之間不一定相同。因此,只有在目標上的名稱完全相同時,才應該對具有系統產生名稱的物件執行 DDL 作業。