Ændre materialiseret udsigt forespørgsel

Jeg har brug for at ændre Materialiseret udsigt forespørgsel . Er er muligt at gøre det samme uden at droping og genskabe det.

OriginalForfatteren code990 | 2010-11-25

5 svar

  1. 19

    Nej, du kan ikke ændre den forespørgsel på en materialiseret se, uden at tabe det.

    OPRET MATERIALISERET SE syntaks understøtter ikke denne funktion.

    ALTER MATERIALISERET UDSIGT bruges til at ændre en eksisterende virkelighed opfattelse i en eller flere af følgende måder:

    • Til at ændre sin lagring egenskaber
    • Til at ændre sin opdater metode, mode, eller tid
    • Til at ændre sin struktur, således at det er en anden type af materialiseret se
    • For at aktivere eller deaktivere query rewrite

    Se Oracle 12c Release 1 Manual til:

    OriginalForfatteren mcalmeida

  2. 5

    For forhold, hvor du ikke er sikker på, om MVIEW eksisterer eller ej (hvilket er, hvad SKABE ELLER ERSTATTE, er virkelig gode til), jeg bruger;

    BEGIN
        EXECUTE IMMEDIATE 'DROP MATERIALIZED VIEW name_of_mview';
        EXCEPTION
            WHEN OTHERS THEN
                IF SQLCODE = -12003 THEN
                    dbms_output.put_line('MVIEW does not exist, which was somewhat expected');
                ELSE
                    RAISE;
                END IF;
    END;
    /
    
    CREATE MATERIALIZED VIEW name_of_mview ... AS SELECT ...

    OriginalForfatteren MaxH

  3. 3

    Du kan forlade mview på plads. Hvis din bekymring er at minimere nedetid, mens den nye mview eksemplificerer (fordi du ikke bruger præ-byggede pakker, tabel), kan du gøre følgende.

    1. Oprette en ny tabel, der kaldes mview_1 på præsamlede tabel
    2. Når den er blevet oprettet, kan du slippe den gamle
    3. skabe eller erstatte udsigt mview som select * from mview_1

    Nu, når du har brug for at genopbygge du vil være i stand til at gøre det med lidt at ingen nedetid, da du kan enkelt punkt af den opfattelse, at den nye tabel/mview går fremad.

    Nedetid kan være nul, hvis du punkt dine spørgsmål og kode for at et synonym (eller standard-udsigt), og tænd det fra den forkerte materialiseret udsigt til en ny (og tilbage, når du er nødt til at ændre det igen). Oprettelsen af den virkelighed opfattelse kan tage al den tid, det skal du bare ændre markøren, når det er klar i løbet af millisekunder.

    OriginalForfatteren erbsock

  4. 2

    Dette kan være en ny funktion i et senere Oracle version, men jeg har fundet dette fungerer fint:

    DROP MATERIALIZED VIEW my_mview PRESERVE TABLE;
    
    CREATE MATERIALIZED VIEW my_mview
    ON PREBUILT TABLE ...
    Bemærk “BEVARE BORDET” – klausul, som holder din oprindelige tabel. Så kan du definere den nye definition til databasen, og bordet ikke bliver opdateret, indtil du gøre det manuelt (for komplekse forespørgsler).
    Nogle gange er det nødvendigt at gøre en kaskade drop udsigt, at det kunne være farligt

    OriginalForfatteren StewS2

  5. 0

    Du KAN være i stand til at gøre brug af de eksisterende MV som kilde til en præ-byggede bordet for den nye MV

    En meget afhænger af, hvad du laver til den forespørgsel, selvfølgelig. Hvis du vil tilføje en kolonne, for eksempel, vil du nødt opdater alt for at få sin nye værdi.

    PS. Den hurtige måde at dreje den eksisterende MV i en tabel ville være partition udveksling, men watch out for fælder. Så er du manipulere bordet til at matche det nye resultat sæt og skabe nye MV baseret på manipulerede bordet.

    OriginalForfatteren Gary Myers

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *