今天早上,生产服务出现了中间件服务拥堵情况,排查到最后发现了一张历史表的查询返回非常慢,进一步排查该表hash分区索引失效,处于“UNUSABLE”状态,随重建索引。
问题产生在重建索引时“alter index index_name rebuild partition PA_1 parallel 32 nologging”, 返回如下错误
ERROR at line 1:
ORA-14185: incorrect physical attribute specified for this index partition
错误信息如下
[Oracle@node1 ~]$ oerr ora 14185
14185, 00000, "incorrect physical attribute specified for this index partition"
// *Cause: unexpected option was encountered while parsing physical attributes
// of a local index partition; valid options for Range or Composite Range
// partitions are INITRANS, MAXTRANS, TABLESPACE, STORAGE, PCTFREE, PCTUSED,
// LOGGING and TABLESPACE; but only TABLESPACE may be specified for Hash partitions
// STORE IN () is also disallowed for all but Composite Range partitions
// *Action: remove invalid option(s) from the list of physical attributes
// of an index partition
问题提示很清晰:因该表上指定的索引时一个全局hash分区索引,分区为8个子分区,在rebuild时后面不能与logging和nologging语法结合使用。事实也的确如此,测试环境11gR2下经测试同样报错。
该情况现在记录下来,特提醒注意。
补充说明一下:创建hash分区,利用hash函数打散某列使数据均匀分布,一般用于均衡I/O,缺点数据不容易管理,哈希分区不能DROP、SPLIT 以及MERGE分区。