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:
-
集群
-
目录
-
函数
-
索引
-
包裹
-
过程
-
表
-
表空间
-
角色
-
序列
-
同义语
-
触发
-
类型
-
视图
-
实体化视图
-
用户
-
不可见的列
-
-
对于以下 Oracle AI Database 对象,提取支持 Oracle DDL 的 Oracle 基于版本的重新定义 (EBR) 数据库复制:
-
函数
-
库
-
包裹(规格和主体)
-
过程
-
同义语
-
类型(规格和主体)
-
视图
-
-
从 Oracle GoldenGate 21c 开始,将支持大小大于 4 MB 的 DDL。
-
从 Oracle GoldenGate 23ai 开始,支持 SQL 域。
-
如果行大小小于 4MB,Oracle GoldenGate 能够管理具有 4000 列的表。
-
Oracle GoldenGate 支持提取可见的全局临时表 (Global Temporary Tables,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 支持在提取中复制不可见列。线索格式发行版 12.2 是必需的。复制必须指定
MAPINVISIBLECOLUMNS参数或显式映射到MAP参数的COLMAP子句中的不可见列。如果使用
SOURCEDEFS或TARGETDEFS,则 Oracle 表的定义文件的元数据格式必须与线索格式兼容。元数据格式 12.2 与线索格式 12.2 兼容,早于 12.2 的元数据格式与早于 12.2 的线索格式兼容。要指定定义文件的元数据格式,请在DEFGEN中生成定义文件时使用DEFSFILE参数的FORMAT RELEASE选项。 -
用于创建名称空间上下文 (
CREATE CONTEXT) 的 DDL 语句由提取捕获并由复制应用。 -
以泵模式提取支持以下 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 指南中的 How to Capture Supplemental Logging for Oracle GoldenGate 。
-
-
与分区相关的 DDL 和分区维护操作支持以下操作
- 删除分区:
如果重新创建具有相同名称的分区,则会获取新的对象编号。当处理删除分区 DDL 时,会清除内部高速缓存以最大程度地减少空间消耗。
- 截断分区 :
分区名称和对象编号保持不变。基本表对象版本保持不变。
- 重命名分区 :
分区对象编号保持不变,但会获得新名称。基表的对象版本被颠簸。在内存中,当看到此 DDL 并重新填充到下一个 DML 时,名称高速缓存将失效。高速缓存,用于存储给定分区对象编号是否有趣也需要重新计算,因为新分区名称可能会从已筛选切换到未筛选,反之亦然。
- 交换分区 :
将分区中的数据与表中的数据交换,反之亦然。要交换的分区的 obj# 不会更改。Dataobj# 会更改,但提取未使用。分区本身仍属于同一个表。
- 合并分区 :
将一个或多个分区合并到新分区中。DDL 创建新分区并删除从中合并该分区的分区。应清除内存中高速缓存以节省空间,用户应确保新创建的分区的过滤器规则正确。
- 分割分区:
要拆分的分区保留其原始名称和对象编号,并为拆分数据创建新分区。用户必须确保新创建的分区的分区筛选器规则正确。
- Coalesce 分区:
减少散列分区表中的分区数。合并的特定分区是由数据库选择的,该分区的内容将在重新分配后即被删除。其余分区保留其相同的名称和对象编号。应清除内部高速缓存以最大限度地减少空间消耗。
- 修改分区 :
修改分区的默认属性和实际属性,但不添加或删除列表分区的值。所有修改都会保留分区名称和对象编号不变。
- 移动分区 :
分区数据将移至新的表空间。分区名称和编号保持不变。
- Redef 表:
dbms_redefinition可用于通过使用临时表对表进行分区。分区在临时表上创建,在执行finish_redef操作后,表交换名称。在临时表上创建的分区会在交换表时保留其名称和对象编号。需要在finish_redef上重新评估提取过滤器高速缓存,因为分区现在属于基表。用户必须确保正确的筛选器规则。- Redef 分区:
重新定义表时,分区会从原始表跟随到临时表。例如,考虑以下情况:原始表具有位于
USER表空间中的分区,创建临时表时没有分区,该表位于NEW表空间中。在这种情况下,在执行finish_redef操作后,交换表时,分区仍位于USER表空间中。Redef 分区允许将分区移动到临时表的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。
-
使用
FLASHBACK ARCHIVE子句创建表的 DDL 和用于创建、更改或删除闪回数据归档本身的 DDL。支持对具有FLASHBACK ARCHIVE的表执行 DML 操作。 -
某些 DDL 将生成系统生成的对象名称。在两个不同的数据库之间,系统生成的对象的名称可能并不总是相同的。因此,仅当目标上的名称完全相同时,才应对具有系统生成名称的对象执行 DDL 操作。