ORA-28604: table too fragmented to build bitmap index (string,string,string)
Cause: The table has one or more blocks that exceed the maximum number of rows expected when creating a bitmap index. This is probably due to deleted rows. The values in the message are: (data block address, slot number found, maximum slot allowed)
Action: Defragment the table or block(s). Use the values in the message to determine the FIRST block affected. (There may be others).
ORA-28604是一个警告错误,表示你试图为(string,string,string)创建一个位图索引,但是表中数据太多,导致数据碎片过大,无法创建索引。
最常见的原因是表上数据行很多,尤其是存在大量空值,所以当ORA-28604发生时,应该首先看看表的行数是否较多。此外,可能存在表的data block被频繁分割的情况,导致数据碎片化左右,从而导致ORA-28604的发生。
1、针对表中的行数过多的情况,应考虑使用alter table mv… command 将表中的数据分区,然后再次尝试创建位图索引。
2、避免data block被frequent split,调整表的pctfree,freespace参数。
3、优化表中空值,使其尽量接近0。可以考虑将这些空值删除或者重新分配。