---
title: 一张表在 information_schema.tables 中查到有两条记录-OceanBase数据库使用指南
description: 了解OceanBase数据库在实际应用中关于一张表在 information_schema.tables 中查到有两条记录相关的常见问题和使用技巧，帮助您快速解决一张表在 information_schema.tables 中查到有两条记录的难题。
---
切换语言

- 简体中文
- English

划线反馈

# 一张表在 information_schema.tables 中查到有两条记录

更新时间：2026-05-25 01:56

适用版本： V4.1.x、V4.2.x 内容类型：Troubleshoot  

## 问题现象

非分区表转分区表 DDL 后，一些视图（如 `information_schema.tables/all_tables`）对于同一张表会显示两条记录。

## 关键诊断信息

### 触发条件

表做过非分区表转分区表的 DDL 。

### 事前巡检

无 。

### 事后诊断

在 SYS 租户下查询所有统计信息记录异常的表。

```shell
select tenant_id, table_id from oceanbase.__all_virtual_table_stat where table_id = partition_id and (tenant_id,table_id) in (select tenant_id, table_id from __all_virtual_table where part_level != 0);

```

知道表 ID 后，可以通过 `__all_tenant`/`__all_virtual_database`/`__all_virtual_table` 找到对应的租户名/数据库名/表名。

## 问题原因

非分区表转分区表 DDL 同步统计信息的内部表（`__all_table_stat`/`__all_column_stat`）时，把非分区表的 table_id=partition_id=表 id 的记录同步过来了，导致统计信息多了一条记录，从而导致一些视图（如 `information_schema.tables`/`all_tables`）会多显示一条记录。

## 问题的风险及影响

一些视图（如 `information_schema.tables`/`all_tables`）对于同一张表会显示两条记录。

## 影响租户

影响 OceanBase 数据库中的 SYS 用户和 Oracle 租户以及 MySQL 租户。

## 影响版本

OceanBase 数据库企业版 V4.1.0 GA（oceanbase-4.1.0.0-100001122023040322）及之后版本、V4.2.0 GA（oceanbase-4.2.0.0-100010082023083014）及之后版本、V4.2.1 GA（oceanbase-4.2.1.0-100000182023092722）及之后版本、V4.2.2 GA（oceanbase-4.2.2.0-100000082024011317）及之后版本、V4.3.0 （oceanbase-4.3.0.0-100000072024020200）及之后版本。

## 解决方法及规避方式

- 解决方法：

  升级至问题已修复版本。目前已修复的版本包括 OceanBase 数据库企业版 V4.2.1 BP5（oceanbase-4.2.1.5-105000072024041817）及之后版本、V4.2.5（oceanbase-4.2.5.0-100000082024102022）及之后版本。
 - 应急方法：

  手动删除 `__all_table_stat`/`__all_column_stat` 中不符合预期的行（分区表不应该存在 table_id=partition_id=该表id 的记录）。

     1. 登录到 sys 租户上。
     2. 切到用户租户：alter system change tenant 租户名;
     3. 删内部统计信息的行。

       #### 注意

       删除内部统计信息的行存在一定的风险，操作之前请联系 OceanBase 技术支持团队咨询。

       ```shell
       delete from __all_table_stat where table_id=partition_id and table_id=分区表 table_id;

       ```

       ```shell
       delete from __all_column_stat where table_id=partition_id and table_id=分区表table_id;

       ```
 - 规避方式：

  做非分区表转分区表 DDL 前，先手动清空非分区表的表和列的表级统计信息，例如如下命令。

  ```shell
  call dbms_stats.delete_table_stats('TEST', 'T1');

  ```

Previous

[View 的 Collation 是怎么设置的？](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000207699)

Next

[OceanBase 数据库 Oracle 租户创建视图成功，但查询报错 ORA-04063](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000207732) ![有帮助](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) 咨询热线
