首批通过分布式安全可靠测评,为关键业务系统打造
Offline DDL 列表及执行前注意事项
更新时间:2026-05-21 09:16
目前 OceanBase 数据库 V4.x 版本支持 Offline DDL。
Offline DDL 在执行时,会走两表双写逻辑,会有表空间 double 放大,执行前需DBA判断集群资源是否支持和业务影响是否接受,并且与 DML 同时执行时会锁表 hang 住 DDL 执行,事务结束后 DDL 才能继续执行。
Offline DDL 操作的影响范围
| 分类 | 操作 | 耗时 | 备注 |
|---|---|---|---|
| 列操作 | 中间加列(before/after/first) | 跟数据量有关,需要重整数据 | Oracle模式不支持 |
| 列操作 | 重排列(before/after/first) | 跟数据量有关,需要重整数据 | Oracle模式不支持 |
| 列操作 | 添加自增列 | 跟数据量有关,需要重整数据 | |
| 列操作 | ~~加主键列(不支持) ~~ | ~~如 alter table t1 add c1 int primary key ~~ | |
| 列操作 | 修改为自增列 | 跟数据量有关,需要查询数据 | |
| 列操作 | 修改列类型 | 跟数据量有关,需要重整数据 | Oracle模式不支持 |
| 列操作 | 修改列为主键 | 跟数据量有关,需要重整数据 | |
| 列操作 | 添加/删除stored 生成列 | 跟数据量有关,需要重整数据 | |
| 列操作 | 删列 | 跟数据量有关,需要重整数据 | |
| 列操作 | 混合列操作 | 跟数据量有关,需要重整数据 | Oracle模式支持 |
| 主键操作 | 加/删主键 | 跟数据量有关,需要重整数据 | |
| 表操作 | truncate表 | 跟是否有活跃事务有关 | |
| 表操作 | 转换字符集 | 跟数据量有关,需要重整数据 | Oracle模式不支持 |
| 表操作 | 删表 | 跟是否有活跃事务有关 | |
| 分区操作 | 修改分区规则 | 跟数据量有关,需要重整数据 | |
| 分区操作 | 删除分区 | 跟是否有活跃事务有关 | 锁分区 |
| 分区操作 | truncate分区 | 跟是否有活跃事务有关 | 锁分区 |
适用版本
OceanBase 数据库 V4.x 版本。