-
ANALYZE TABLE не възстановява индекса, нали?
Не знам, но в днешно време трябва да използвате
DBMS_STATS.GATHER_TABLE_STATS
вместоANALYZE TABLE
-
Директното зареждане означава, че данните не се вмъкват ред по ред, а групово, вижте Зареждане на директен път
-
Ако вашият индекс стане
UNUSABLE
тогава трябва да е глобален индекс. -
Използвайте
UPDATE GLOBAL INDEXES
клауза, т.е.alter table target_table drop partition target_eldest_partition UPDATE GLOBAL INDEXES;
или създайте локални индекси. -
Зависи кои колони сте индексирали. Вместо цялата таблица можете също да стартирате
DBMS_STATS.GATHER_INDEX_STATS
. СDBMS_STATS.GATHER_TABLE_STATS
можете също да посочите само единични дялове и дори единични колони.
между другото, за много въпроси отговорът ми всъщност трябва да бъде:„Консултирахте ли се с документацията на Oracle“? или "знаете ли гугъл"? Според екранните ви снимки използвате схема SYS
и таблично пространство SYSAUX
за вашите потребителски обекти. Не трябва да правите това. Създайте свой собствен потребител и създайте произволен обект в тази схема.
Като цяло има три типа разделени индекси:
- ГЛОБАЛЕН ИНДЕКС:Имате един голям индекс, обхващащ цялата таблица. Това е задължително, например за УНИКАЛНИ ИНДЕКСИ, ако индексираните колони не са част от ключа на дяла. Всъщност такъв индекс не е разделен. (както е показано във
ALL_INDEXES
) - ЛОКАЛЕН ИНДЕКС:Този индекс е разделен по същия начин, както основната таблица. Всеки дял на таблица има съответен индексен дял.
- ПАРТИЦИИРАН ИНДЕКС:Този индекс е разделен, но различен отколкото основната таблица. Мисля, че дори е възможно да се създаде разделен индекс върху неразделена таблица. Разделените индекси са ограничени само до много специални случаи на употреба. Всъщност не мога да си представя къде такъв индекс би имал смисъл.