OceanBase V3 的分区表上的索引状态是unavailable时添加分区失败17认证网

正规官方授权
更专业・更权威

OceanBase V3 的分区表上的索引状态是unavailable时添加分区失败

概念描述

OceanBase V3.2.4 的分区表上的索引状态是unavailable时添加分区失败,报错:

ORA-00600: internal error code, arguments: -4007, alter partitions when index status is unavailable not supported

一次分区表的分区维护,这个分区表上存在全局索引,维护操作是先按照数据保留策略清理历史分区(drop partition … update global indexes),再执行添加分区操作(add partition),因为清理历史分区时还需要维护全局索引,导致分区清理时间过长,所以就同时进行清理分区和添加分区操作,最终出现如上报错。

测试验证

  • 分区表的索引情况,有一个全局普通索引
[admin@obtest ~]$ eoba ind2 TBCS.ODB_TESTPAT
Display indexes where table or index name matches TBCS.ODB_TESTPAT ....
+————-+——-+————-+——————————+——+————-+——+
| tenant_name | owner | table_name | index_name | pos# | column_name | dsc |
+————-+——-+————-+——————————+——+————-+——+
| testf | TEST | ODB_TESTPAT | IDX_CS_ODB_TESTPAT_ENDDATE | 1 | ENDDATE | NULL |
| testf | TEST | ODB_TESTPAT | IDX_CS_ODB_TESTPAT_RECOID | 1 | RECOID | NULL |
| testf | TEST | ODB_TESTPAT | IDX_CS_ODB_TESTPAT_STARTDATE | 1 | STARTDATE | NULL |
| testf | TEST | ODB_TESTPAT | PK_CS_ODB_TESTPAT | 1 | RECOID | NULL |
| testf | TEST | ODB_TESTPAT | PK_CS_ODB_TESTPAT | 2 | OID | NULL |
| testf | TEST | ODB_TESTPAT | PK_CS_ODB_TESTPAT | 3 | IDU | NULL |
| testf | TEST | ODB_TESTPAT | PK_CS_ODB_TESTPAT | 4 | RECDATE | NULL |
| testf | TEST | ODB_TESTPAT | PK_CS_ODB_TESTPAT | 5 | REGION | NULL |
+————-+——-+————-+——————————+——+————-+——+
+————-+——-+————-+——————————+———+——+——–+——+——–+————+
| tenant_name | owner | table_name | index_name | idxtype | uniq | status | part | degree | visibility |
+————-+——-+————-+——————————+———+——+——–+——+——–+————+
| testf | TEST | ODB_TESTPAT | IDX_CS_ODB_TESTPAT_ENDDATE | NORMAL | NO | VALID | YES | 1 | VISIBLE |
| testf | TEST | ODB_TESTPAT | IDX_CS_ODB_TESTPAT_RECOID | NORMAL | NO | VALID | NO | 1 | VISIBLE |
| testf | TEST | ODB_TESTPAT | IDX_CS_ODB_TESTPAT_STARTDATE | NORMAL | NO | VALID | YES | 1 | VISIBLE |
| testf | TEST | ODB_TESTPAT | PK_CS_ODB_TESTPAT | NORMAL | YES | VALID | YES | 1 | VISIBLE |
+————-+——-+————-+——————————+———+——+——–+——+——–+————+

  • 执行分区清理操作
alter table TEST.ODB_TESTPAT drop partition PART_991_202306 update global indexes;
  • 同时执行分区添加操作,出现报错

alter table TEST.ODB_TESTPAT add partition PART_991_202401 values less than(991,TO_DATE(' 2024-02-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'));

ORA-00600: internal error code, arguments: -4007, alter partitions when index status is unavailable not supported

  • 等待分区清理完成后就可以成功添加分区

知识扩展

  • OceanBase V3.2.4 的索引状态有如下几种,通过视图 oceanbase.__all_virtual_table 的 index_type 体现:
- 0:NOT_FOUND
- 1:UNAVAILABLE -- 不可用状态
- 2:AVAILABLE -- 正常,可用状态
- 5:ERROR -- 索引创建出错时的状态,出错后索引会被删除
- 6:RESTORE_INDEX_ERROR
- 7:UNUSABLE -- 无效状态
  • drop partition ... update global indexes 操作期间会将索引设置为 UNAVAILABLE 状态,导致不支持添加分区。
  • 如果索引是常见的 UNUSABLE 无效状态,是不影响添加分区操作。

    想了解更多干货,可通过下方扫码关注

    可扫码添加上智启元官方客服微信👇

未经允许不得转载:17认证网 » OceanBase V3 的分区表上的索引状态是unavailable时添加分区失败
分享到:0

评论已关闭。

400-663-6632
咨询老师
咨询老师
咨询老师