首批通过分布式安全可靠测评,为关键业务系统打造
OceanBase 数据库 MySQL 租户至 DB2 LUW 数据库的同步 DDL
更新时间:2026-04-14 15:35:47
同步 DDL 支持的范围
创建表
create table注意
不支持
create table as select。修改表
alter table删除表
drop table清空表
truncate table表重命名
rename table创建索引
create Index删除索引
drop Index添加和删除表或列的注释
同步 DDL 的使用限制
Create Table
分类 描述 语法限制 - 不支持 Create like 语法。
- 不支持带有列类型别名(非原生数据类型)的语法。
- 不支持带有 Select 或者 Subquery 的语法。
- 生成列中,如果包含不兼容函数或复杂表达式可能会报错。
- 不支持包含 XML 类型的语法。
列属性处理 - 目前列属性值重点关注了列名、列类型、null 标志位和 Default 值。
- 不支持生成列属性,DDL 没有处理生成列定义。
- 请谨慎使用带有函数的 Default 值。如果函数不支持执行,则会导致创建表失败。
索引处理 - 建议使用显式的索引定义,包括显式的定义 PK、UK 和 CHECK,不建议使用 CHECK。匿名索引会自动生成名称,可能会造成命名冲突。
- 请谨慎使用函数。如果函数不支持执行,则会导致创建表失败。
- 不建议使用外键。目前 OMS 不支持同步具备外键的表,外键在 DDL 转换中会被丢弃。
分区(Partition) - 仅支持根据时间的 Range 分区同步,对于非时间的 Range 分区会直接平移表达式。不建议在分区使用函数,可能导致语法不兼容,从而导致迁移项目失败。
- Partition 的 range 开头和结尾不支持
MINVALUE和MAXVALUE等数据源相关的表示。 - DB2 LUW 数据库的 Partition 必须包含
ending,并且必须加exclusive,否则会报错。 - DB2 LUW 数据库不支持 Partition 的
every语法扩展,防止计算出错 。 - DB2 LUW 数据库的 table 主键加 Partition 列。如果主键和分区键没有交集,则主键会更改为唯一索引来适配 OceanBase 数据库的 Partition 规则约束。
- DB2 LUW 数据库中,
CREATE/ALTER TABLE ADD PARTITION必须带 Partition 的名称,不支持匿名 Partition。
Alter Table
DB2 LUW 数据库的
alter table add primary会转换为 OceanBase 数据库 Oracle 租户的add unique语法。因为 OceanBase 数据库不支持后加主键,您需要在创建表时,显式地指定主键。如果要
alter table修改 LOB 类型,应该带上 LOB 类型长度,不支持缩小 LOB 类型长度的alter table操作。DB2 LUW 数据库要求
unique index为非空属性,所以创建 UK 列需要为非空约束。即alter table add unique时,涉及的列为非空约束。
Create Index
不支持在 OceanBase 数据库端的普通表中,添加 Local 语法。
DDL 解析
请参见 DB2 官方文档执行 DDL 语句,以保证最大程度的兼容。DB2 LUW 解析源端 DDL 有以下操作限制:
目前 DB2 LUW 解析的 DDL 缓存刷新,使用的是回查 Schema 的方式。建议您每次只解析一类 DDL,待解析完成确认无误后再进行下一类 DDL 解析。
对于分区表,请尽量避免频繁的
create和drop操作。建议您在create partition table,并确认同步正常后,再进行drop partition table的操作。DB2 LUW 数据库仅支持解析对象名称由字母、下划线和数字组成,需要以字母和下划线开头,且对象名称不能为 DB2 LUW 的关键字。