-
ANALYSE TABLE herbouwt de index niet, toch?
Ik weet het niet, maar tegenwoordig zou je
DBMS_STATS.GATHER_TABLE_STATS
moeten gebruiken in plaats vanANALYZE TABLE
-
Direct laden betekent dat gegevens niet rij voor rij worden ingevoegd, maar als bulk, zie Direct pad laden
-
Als uw index
UNUSABLE
wordt dan moet het een globale index zijn. -
Gebruik de
UPDATE GLOBAL INDEXES
clausule, d.w.z.alter table target_table drop partition target_eldest_partition UPDATE GLOBAL INDEXES;
of maak lokale indexen. -
Afhankelijk van welke kolommen u hebt geïndexeerd. In plaats van de hele tabel kunt u ook
DBMS_STATS.GATHER_INDEX_STATS
uitvoeren . MetDBMS_STATS.GATHER_TABLE_STATS
je kunt ook alleen enkele partities en zelfs enkele kolommen specificeren.
btw, op veel vragen zou mijn antwoord eigenlijk moeten zijn:"Heb je de Oracle-documentatie geraadpleegd"? of "Ken je google"? Volgens je screenshots gebruik je schema SYS
en tabelruimte SYSAUX
voor uw gebruikersobjecten. Dat moet je niet doen. Maak je eigen gebruiker aan en maak een willekeurig object in dit schema.
Over het algemeen zijn er drie soorten gepartitioneerde indexen:
- GLOBALE INDEX:je hebt één grote index die de hele tabel beslaat. Dit is bijvoorbeeld verplicht voor UNIQUE INDEXES als de geïndexeerde kolommen geen deel uitmaken van de partitiesleutel. Eigenlijk is zo'n index niet gepartitioneerd. (zoals getoond in
ALL_INDEXES
) - LOKALE INDEX:Deze index is op dezelfde manier gepartitioneerd als de onderliggende tabel. Elke tabelpartitie heeft een bijbehorende indexpartitie.
- GEPARTITIONEERDE INDEX:deze index is gepartitioneerd maar anders dan de onderliggende tafel. Ik denk dat het zelfs mogelijk is om een gepartitioneerde index te maken op een niet-gepartitioneerde tabel. Gepartitioneerde indexen zijn beperkt tot zeer speciale gebruiksgevallen. Eigenlijk kan ik me niet voorstellen waar zo'n index zinvol zou zijn.