Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Перестроение индексов по партициям  [new]
Летунья
Member

Откуда:
Сообщений: 387
Народ, я, наверное, что-то упустила.
Итак, что имеем:

SQL> select index_name,status,partitioned from user_indexes u where u.table_name='STATUS';

INDEX_NAME                     STATUS   PAR
------------------------------ -------- ---
STATUS_ID                      VALID    NO
SERVERSERIAL                   N/A      YES
ACTIONTIME                     N/A      YES
ALERTGROUP                     N/A      YES
FIRSTOCCURRENCE                N/A      YES

SQL> select table_name, partition_position, partition_name from user_tab_partitions where table_name='STATUS';

TABLE_NAME                     PARTITION_POSITION PARTITION_NAME
------------------------------ ------------------ ------------------------------
STATUS                                          1 DECEMBER_2008
STATUS                                          2 JANUARY_2009
STATUS                                          3 FEBRUARY_2009
STATUS                                          4 MARCH_2009
STATUS                                          5 APRIL_2009
STATUS                                          6 MAY_2009
STATUS                                          7 JUNE_2009
STATUS                                          8 JULY_2009
STATUS                                          9 AUGUST_2009
STATUS                                         10 SEPTEMBER_2009
STATUS                                         11 OCTOBER_2009
STATUS                                         12 NOVEMBER_2009


Нужно перестроить все локальные индексы. Начала перестроение с поля ACTIONTIME

Перестроение делала по схеме
alter index ACTIONTIME rebuild partition DECEMBER_2008;
alter index ACTIONTIME rebuild partition JANUARY_2009;
.....

Далее смотрю запрос:
SQL> select index_name,status,partitioned from user_indexes u where u.table_name='STATUS';

INDEX_NAME                     STATUS   PAR
------------------------------ -------- ---
STATUS_ID                      VALID    NO
SERVERSERIAL                   N/A      YES
ACTIONTIME                     N/A      YES
ALERTGROUP                     N/A      YES
FIRSTOCCURRENCE                N/A      YES


Почему индекс все-равно не стал валидным? Как мне показалось, скорость поиска по базе по этому полю увеличилась...
18 май 09, 15:22    [7193973]     Ответить | Цитировать Сообщить модератору
 Re: Перестроение индексов по партициям  [new]
pravednik
Member

Откуда: Jacksonville, FL
Сообщений: 16268
Летунья,

поле STATUS в *_INDEXES нужные вам результаты показывает только для непартицированых индексов.
*_IND_PARTITIONS вам в помощь
18 май 09, 15:27    [7194012]     Ответить | Цитировать Сообщить модератору
 Re: Перестроение индексов по партициям  [new]
Летунья
Member

Откуда:
Сообщений: 387
pravednik, cпасибо очередной раз. :о)

Не понятно только, почему вижу
VENDOR                         AUGUST_2009                    USABLE
STATUS_SERVER                  NOVEMBER_2009                  USABLE
UPSUMMARY                      JULY_2009                      USABLE
UPSUMMARY                      AUGUST_2009                    USABLE
ACTIONTIME                     JANUARY_2009                   USABLE
ACTIONTIME                     FEBRUARY_2009                  USABLE
ACTIONTIME                     APRIL_2009                     USABLE
ACTIONTIME                     MAY_2009                       USABLE
ACTIONTIME                     JUNE_2009                      USABLE
ACTIONTIME                     JULY_2009                      USABLE
ACTIONTIME                     AUGUST_2009                    USABLE
ACTIONTIME                     SEPTEMBER_2009                 USABLE

Все в состоянии usable, даже те, что не перестраивала?
18 май 09, 17:01    [7194680]     Ответить | Цитировать Сообщить модератору
 Re: Перестроение индексов по партициям  [new]
pravednik
Member

Откуда: Jacksonville, FL
Сообщений: 16268
Летунья
pravednik, cпасибо очередной раз. :о)

Не понятно только, почему вижу
VENDOR                         AUGUST_2009                    USABLE
STATUS_SERVER                  NOVEMBER_2009                  USABLE
UPSUMMARY                      JULY_2009                      USABLE
UPSUMMARY                      AUGUST_2009                    USABLE
ACTIONTIME                     JANUARY_2009                   USABLE
ACTIONTIME                     FEBRUARY_2009                  USABLE
ACTIONTIME                     APRIL_2009                     USABLE
ACTIONTIME                     MAY_2009                       USABLE
ACTIONTIME                     JUNE_2009                      USABLE
ACTIONTIME                     JULY_2009                      USABLE
ACTIONTIME                     AUGUST_2009                    USABLE
ACTIONTIME                     SEPTEMBER_2009                 USABLE

Все в состоянии usable, даже те, что не перестраивала?


для того чтобы индекс использовать, то есть что бы он был USABLE, его необязательно перестраивать....
UNUSABLE - ну к примеру, партицию, на которой индекс, переместили в другое ТП. Индекс сам по себе не попортился(то есть он valid), но так как при перемещении rowid строк поменялся, то индекс ораклу использовать не имеет никакого смысла, так как он смотрит "в никуда"
18 май 09, 17:09    [7194723]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить