今天早上,生產服務出現了中介軟體服務擁堵情況,排查到最後發現了一張曆史表的查詢返回非常慢,進一步排查該表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分區。