---
title: OceanBase Oracle 模式如何规避 all_tab_columns 中 data_length 和 Oracle 不一致的问题-OceanBase数据库使用指南
description: 了解OceanBase数据库在实际应用中关于OceanBase Oracle 模式如何规避 all_tab_columns 中 data_length 和 Oracle 不一致的问题相关的常见问题和使用技巧，帮助您快速解决OceanBase Oracle 模式如何规避 all_tab_columns 中 data_length 和 Oracle 不一致的问题的难题。
---
切换语言

- 简体中文
- English

划线反馈

# OceanBase Oracle 模式如何规避 all_tab_columns 中 data_length 和 Oracle 不一致的问题

更新时间：2026-05-25 09:11

适用版本： V2.2.x、V3.1.x、V3.2.x 内容类型：TechNote  

## 问题描述

部分场景下有些事务管理器（TM）需要同时访问 OceanBase 数据库和 Oracle。这些 TM 会有一些内部实现去校验 OceanBase 数据库和 Oracle 之间的表结构是否相同，从而保证事务能在 OceanBase 数据库和 Oracle 都执行成功。但是 OceanBase 数据库的系统表 `all_tab_columns` 和 Oracle 有比较大的差异。

1. OceanBase 数据库的 `all_tab_columns` 没有保存 view 的列元数据，但是 Oracle 会有。
 2. OceanBase 数据库的 `all_tab_columns` 中字段的 `data_length` 与 Oracle 表现为不一致。

## 适用版本

OceanBase V2.x 和 V3.x 版本。

## 解决方法

- 问题一

  在 OceanBase 数据库新建一张实体表 `ob_all_tab_columns`，使用 DATAX 从 Oracle 同步 view 的列元数据到 OceanBase 数据库。在业务用户下新建 `all_tab_columns` 视图，类似如下。

  ```shell
  obclient > select * from ob_all_tab_columns union all select * from all_tab_columns;

  ```
 - 问题二

  在上文视图上做不兼容的逻辑转换，比如 OceanBase 数据库目前对于 varchar2 是允许长度超过 4000（即 `max_string_size='EXTENDED'`），而 Oracle 默认 `max_string_size='STANDARD'`，不允许超过 4000。这样对于字段数据类型定义成 varchar2(2001 char)，并且编码为 GBK 的场景下，Oracle 的 `data_length` 是 4000，而 OceanBase 数据库是 4002。

  修改视图定义，类似如下。

  ```shell
  obclient > select * from ob_all_tab_columns union all select min(data_length,4000) from all_tab_columns;

  ```

Previous

[sql_audit 里的 elapsed time 是真正的业务感知到的 SQL 耗时吗？](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000639278)

Next

[Oracle 普通用户 CREATE VIEW 权限问题](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000708044) ![有帮助](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) 咨询热线
