Hur man åter din Oracle 12c Database

July 22

Många typer av misslyckanden kan drabba din databas. Oracle 12c Recovery Manager (RMAN) är ett verktyg som kan hjälpa dig att få tillbaka på fötterna efter många av dessa misslyckanden. Ibland är det enda alternativet, ibland är det bästa sättet för flera, och ibland är det inte rätt metod alls.

RMAN kan verkligen hjälpa till med två typer av fel:

  • Media misslyckande: Förlust av filer
  • Användarfel: Misstag som leder till skadade databaser eller data

Huruvida RMAN kan alltid hjälpa dig när det kommer till användarfel beror på vilken typ av problem har skapats. Till exempel, om en användare av misstag avlägsnar en fil eller en tabell kan RMAN hjälpa mycket lätt.

Men om en användare tappar av misstag ett bord eller förvanskar data, kan RMAN hjälpa, men det kanske inte är den snabbaste metoden. Om en användare tappar ett bord, kan det vara snabbare att hämta det från databasen Recyclebin eller Flashback Database.

Men om användaren har rensats på Recyclebin eller Flashback databasen inte är konfigurerad, är Recovery Manager ditt enda val.

RMAN kan göra två typer av återvinningar:

  • Komplett: Alla filer förs tillbaka till tiden databasen misslyckades. Inga data går förlorad.
  • Ofullständig: Databasen återvinns men stannade kort av en full återhämtning. Det kan finnas dataförlust. Ibland är detta vad du vill. Till exempel, om en användare tappar en tabell vid 10:13 skarpa, gör du en ofullständig återhämtning till 10:12 för att få databasen tillbaka innan droppen inträffar.

Fullständig återhämtning är vad som vanligtvis händer. Dock vara beredd på allt.

Hur att kontrollera problemet med din Oracle 12c databas återvinning

Att ta reda på vad som gick fel med din databas är inte alltid en lätt uppgift. Ibland får du tur (om du vill använda termen tur i ansiktet av en trasig databas). Till exempel kanske du vet vad som hände:

  • En systemadministratör berättat en disk kraxade.
  • En användare sa ju att de tappade en tabell.
  • Du orsakade felet och du vet vad som hände och varför.

Dessa kan inte vara problemet, dock. Ibland du presenteras med lömska problem, i vilket fall du tar på sig rollen som en detektiv. Säg att du startar databasen eller komma åt data medan databasen är fortfarande öppen och får ett felmeddelande som liknar denna:

ORA-01157: inte kan identifiera / lås datafil 4 - se DBWR spårningsfil
ORA-01110: datafil 4: "/u01/app/oracle/oradata/dev12c/users01.dbf"

Du ser för filen på den plats som det ger. Hör och häpna, det är borta (eller kanske hela disken är borta). Du hade mer än en fil på disken.

Varför Oracle berättar bara att den inte kan hitta en av dina filer? För när du startar databasen, läser Oracle datafilen listan i styrfilen. Så snart den inte kan hitta en i listan, det stannar öppna och presen felet.

Eller, om databasen redan är öppen, Oracle berättar bara om felet som du upplever som ett resultat av din specifika åtgärder. Tyvärr är detta en lite missvisande; du kanske återställa och återställa filen bara för att finna ett annat fel precis som det för en annan datafil.

Ofullständig återhämtning med din Oracle 12c databas

Ofullständig återhämtningen är oftast ett mycket olyckligt läge att vara i. Normalt betyder det att du kommer att förlora data (därav ofullständiga). Även Data Recovery Advisor (DRA) kan inte hjälpa alls i den här situationen. I en ofullständig återhämtning scenario har databasen faktiskt inte misslyckats. Någon har gjort något för att sätta databasen i ett tillstånd som kräver att du gå tillbaka i tiden.

Här är stegen för att ofullständig återhämtning:

  1. Stäng av databasen.
  2. Starta databasen i berget läge.
  3. Ställ in tiden för återställning att arbeta från.
  4. Återställ databasen.
  5. Åter databasen.
  6. Öppna databasen med RESETLOGS.

    De kontrollfiler kommer inte överens datafiler. Du måste åter synk styrfiler med datafiler.
  7. Öppna en uppmaning att ditt operativsystem kommandorad.
  8. Logga in på din databas med RMAN:

    <Rman mål /
  9. Sätt databasen i mount-läge:

    <Avstängning omedelbar>
    <Start hållare>

  10. Använd följande RMAN kommando för att återställa databasen till lämplig tid (11:44 i det här fallet):

    RMAN> kör {
    inställd tills tiden =
    "To_date ('30 -JUN 2013: 11: 44: 00 ',' DD-MÅN-ÅÅÅÅ: HH24: MI: SS ')";
    återställa databasen;
    återvinna databas;
    sql "ändra databas öppna resetlogs";
    }

    När kommandot är klar, ska du se ut ungefär så här:

    exekvera kommando: SET tills klausul
    Starta återställning vid 30-JUN-2013 11:58:52
    allokerade kanalen: ORA_DISK_1
    kanals ORA_DISK_1: SID = 20 enhetstyp = DISK
    ... Utgång klippt ...
    Färdiga återhämta sig 30-JUN-2013 12:02:56
    sql uttalande: ändra databas öppna resetlogs

  11. Se tabellen du försökte återhämta faktiskt har återvunnits.

    Det finns inget mer pinsamt än att berätta alla du återhämtat uppgifter endast att ha någon annan upptäcker att uppgifterna är fortfarande inte där. Om du upptäcker att det inte finns, gör återhämtningen igen, gå tillbaka lite längre i tiden.