Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Po upuszczeniu partycji indeks stał się bezużyteczny, co mam zrobić,

  • ANALYZE TABLE nie odbudowuje indeksu, prawda?

    Nie wiem, ale w dzisiejszych czasach powinieneś używać DBMS_STATS.GATHER_TABLE_STATS zamiast ANALYZE TABLE

  • Ładowanie bezpośrednie oznacza, że ​​dane nie są wstawiane wiersz po wierszu, ale zbiorczo, patrz Bezpośrednie ładowanie ścieżki

  • Jeśli Twój indeks stanie się UNUSABLE to musi to być indeks globalny.

  • Użyj UPDATE GLOBAL INDEXES klauzula, tj. alter table target_table drop partition target_eldest_partition UPDATE GLOBAL INDEXES; lub utwórz indeksy lokalne.

  • Zależy od indeksowanych kolumn. Zamiast całej tabeli możesz również uruchomić DBMS_STATS.GATHER_INDEX_STATS . Z DBMS_STATS.GATHER_TABLE_STATS możesz również określić tylko pojedyncze partycje, a nawet pojedyncze kolumny.

btw, na wiele pytań moja odpowiedź powinna brzmieć:„Czy zapoznałeś się z dokumentacją Oracle”? lub „Znasz google”? Zgodnie z twoimi zrzutami ekranu używasz schematu SYS i przestrzeń tabel SYSAUX dla obiektów użytkownika. Nie powinieneś tego robić. Utwórz własnego użytkownika i utwórz dowolny obiekt w tym schemacie.

Ogólnie istnieją trzy typy indeksów partycjonowanych:

  1. INDEKS GLOBALNY:Masz jeden duży indeks obejmujący całą tabelę. Jest to obowiązkowe na przykład dla UNIQUE INDEXES, jeśli indeksowane kolumny nie są częścią klucza partycji. W rzeczywistości taki indeks nie jest podzielony na partycje. (jak pokazano w ALL_INDEXES )
  2. INDEKS LOKALNY:Ten indeks jest podzielony na partycje w taki sam sposób, jak tabela bazowa. Każda partycja tabeli ma odpowiednią partycję indeksu.
  3. INDEKS PODZIELONY:Ten indeks jest podzielony na partycje, ale inny niż tabela bazowa. Myślę, że możliwe jest nawet utworzenie indeksu partycjonowanego w tabeli niepartycjonowanej. Indeksy partycjonowane są ograniczone tylko do bardzo specjalnych przypadków użycia. Właściwie nie wyobrażam sobie, gdzie taki indeks miałby sens.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Podziel duży plik tekstowy/CSV na wiele plików w PL SQL

  2. SET FMTONLY ON w zapytaniach Oracle

  3. Dlaczego uruchomienie tego zapytania z EXECUTE IMMEDIATE powoduje jego niepowodzenie?

  4. Co to jest baza danych Oracle?

  5. Manipulowanie danymi JSON za pomocą SQL w Oracle