概念描述
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
无效状态,是不影响添加分区操作。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
文章被以下合辑收录
评论
目录