---
title: "OceanBase 数据库 Oracle 租户至 DB2 LUW 数据库的同步 DDL | OceanBase 文档中心"
description: OceanBase 数据库 Oracle 租户至 DB2 LUW 数据库的同步 DDL 同步 DDL 支持的范围 创建表 CREATE TABLE 注意 不支持 CREATE TABLE AS SELECT 。 修改表 ALTER TABLE 删除表 DROP TABLE 清空表 TRUNCATE TABLE 表重命…
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*L03BS6f-o40AAAAAAAAAAAAADiGDAQ/original) 迁移服务 OMSV 4.2.0 企业版

# OceanBase 数据库 Oracle 租户至 DB2 LUW 数据库的同步 DDL

更新时间：2023-11-22 11:05:28

## 同步 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 的关键字。

 上一篇 下一篇 ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
