---
title: OMS 切换子任务 UK&amp;隐藏列删除效率优化-OceanBase数据库使用指南
description: 了解OceanBase数据库在实际应用中关于OMS 切换子任务 UK&amp;隐藏列删除效率优化相关的常见问题和使用技巧，帮助您快速解决OMS 切换子任务 UK&amp;隐藏列删除效率优化的难题。
---
切换语言

- 简体中文
- English

划线反馈

# OMS 切换子任务 UK&隐藏列删除效率优化

更新时间：2026-07-24 10:01

适用版本： V4.2.x 内容类型：TechNote  

**适用场景：** OMS 迁移 Oracle 结构数据至 OceanBase 数据库，迁移业务表数量较多，切换阶段删除 `UK_$table_name_OMS_ROWID` 唯一性约束索引及对应的隐藏列（`OMS_OBJECT_NUMBER`，`OMS_RELATIVE_FNO`，`OMS_BLOCK_NUMBER`，`OMS_ROW_NUMBER`）耗时长，无法满足割接窗口需求。

## 问题的原因

OceanBase 数据库 V4.2.x 版本 Oracle 租户中执行 Drop Column 语句默认走快速删列方式，会将列在 Schema 置为 Hidden，修改列名为 `SYS_C[COLUMN_ID]_TIME$` 格式，实现快速标记删除。 故耗时瓶颈主要体现为 Drop `UK_$table_name_OMS_ROWID`，OceanBase 尚不具备 Drop UK 并发 DDL 能力。

## 优化方式

1. 切换前临时调整租户级别 `_publish_schema_mode` 改成 ASYNC（DROP UK 效率提升 58%），切换完成后恢复至 BEST_EFFORT。
 2. 调整 RS Leader 与租户 1 号日志流 Leader 同 OBserver 节点（DROP UK 效率提升 20%）。
 3. 利用 OceanBase 数据库 Oracle 模式中的删列级联删 UK 能力，仅删除隐藏列（`OMS_OBJECT_NUMBER`，`OMS_RELATIVE_FNO`，`OMS_BLOCK_NUMBER`，`OMS_ROW_NUMBER`），消除 Drop UK 耗时（占比约 85%）。

**具体实现：** 后台拆分多脚本并发删隐藏列，命令如下。

```sql
alter table $table_name drop ("OMS_OBJECT_NUMBER", "OMS_RELATIVE_FNO", "OMS_BLOCK_NUMBER", "OMS_ROW_NUMBER");

```

## 适用版本

OceanBase 数据库 V4.2.x 版本。

Previous

[OMS 数据迁移或数据同步链路遇到报错 [errcode=-4016] request start lsn from all server fail 的原因和解决方法](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000005428697)

Next

[OceanBase 数据库使用 pt-archiver 工具同步数据慢的原因和解决方法](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000001639707) ![有帮助](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) 咨询热线
