Grunnleggende om Oracle 12c flashback-Database

January 13  by Eliza

Du kan argumentere for at å flytte databasen frem og tilbake med Oracle 12c Recovery Manager med gode sikkerhetskopier er mulig. Men å gjenopprette en stor database til et tidligere punkt er tidkrevende og kjedelig. Også, hvis du ikke går tilbake langt nok, må du starte på nytt fra begynnelsen.

Du ønsker kanskje å blinke tilbake databasen for disse grunner:

  • Gjentatte testing scenarier: Si du har et program som du tester i ditt utviklingsmiljø. Hver gang du kjører programmet, forandrer det dine data. Du ønsker å tilbakestille dataene til sine opprinnelige verdier før neste test. Flashback er et utmerket verktøy for dette.
  • Logiske data Korrupsjon: Kanskje noen ved et uhell kjørte feil program i produksjonsmiljøet; du trenger for å gå tilbake til et punkt før feilen oppstod. Du kan gjøre dette med en datarekonstruksjon, men Flashback er raskere og enklere.
  • Distribusjons prosedyrer: Kanskje du slipper en ny versjon av koden din som oppdaterer alle slags objekter i produksjon skjema med både DDL og DML. Du kan enkelt rulle den tilbake dersom søknaden ikke fungerer som den skal i mål ytelsesparametere.

Flashback Database fungerer ved å ta opp ekstra informasjon som gjør at du kan rulle tilbake transaksjoner uten å gjøre en fullstendig database utvinning. Ikke bare det, men det fungerer veldig raskt. Flashback Database har disse raske funksjoner, blant annet:

  • Du kan åpne databasen i skrivebeskyttet modus for å se om du gikk tilbake langt nok.
  • Ikke langt nok? Raskt rulle tilbake lenger.
  • For langt? Rulle fremover igjen.

Du kan utføre alle disse oppgavene med enkle kommandoer inne SQL * Plus eller Oracle Enterprise Manager. Å gjøre dem med RMAN, du snakker flere fulle gjenskaper og mye tid i mellom.

Hvordan å konfigurere og aktivere Flashback database

Flashback Database fungerer annerledes enn de Flashback funksjoner. Med Flashback Database, Oracle lagrer en fil som kalles en flashback logg. Flashback logger har data for å rulle tilbake blokker til et tidligere tidspunkt. Flashback loggene lagres i flash_recovery_area.

To variabler spiller inn her:

  • Hvor langt tilbake vil du reise?
  • Hvor mye data blir endret i databasen innen denne tidsperioden?

Jo lenger tilbake du går og jo flere endringer du har, jo flere flashback logger du genererer. Pass på at du har nok plass til å lagre disse loggene, eller du vil ikke blinke overalt.

Hvis du vurderer å implementere Flashback Database, må du kanskje å forstørre parameter db_recovery_file_dest_size. Hvor mye du forstørrer det avhenger av to variabler: Hvor langt tilbake og hvor mye data? Hvis du vil ha et godt utgangspunkt, bruk denne formelen:

Ny Flash Recovery-området Size = Nåværende Flash Recovery-området Størrelse + Total Database Size × 0,3

I hovedsak forsøker du å reservere omtrent 30 prosent av den totale størrelsen på databasen i Flash Recovery-området for flashback logger.

Fra da av kan du overvåke hvor mye plass de flashback loggene er forbruker.

Når du har konfigurert Flash Recovery-området, slå på flashback-funksjonen i databasen ved å gjøre følgende:

  1. Vurdere hvor langt tilbake du vil være i stand til å blinke tilbake.

    Standardverdien er 24 timer (eller 1440 minutter). Si at du ønsker å være i stand til å blinke tilbake opp til 48 timer.

  2. Konfigurere hvor langt tilbake du ønsker å gå med parameteren db_flashback_retention_target; å gjøre det, kan du logge inn til SQL som SYSDBA og type

    <Endre systemet sett db_flashback_retention_target = 2880;>

    I dette eksemplet er den angitte tiden for 2880 minutter (48 timer).

    Du bør se følgende for noen tid du velger.

    Systemet endres.

  3. Slå av databasen og starte den på nytt i mount-modus.

  4. Sett databasen i flashback-modus ved å skrive dette:

    <Endre database flashback på;>

    Du bør se på dette:

    Database endret.

  5. Åpne databasen ved å skrive dette:

    <Endre database åpen;>

    Du bør se på dette:

    Database endret.

    Nå at databasen er i flashback-modus, kan du blinke tilbake til enhver tid innenfor din Flashback vinduet.

Hvordan rulle din Oracle 12c database tilbake

Når databasen må blinket tilbake, ikke bekymre deg. Fremgangsmåten er relativt enkel.

Blinkende tilbake en database fjerner enhver endring som skjedde etter det tidspunkt valgt å returnere. Ikke ta dette hensynet lett.

Å se hvor langt tilbake du kan gå, skriver du dette:

<Velg oldest_flashback_time
fra v $ flashback_database_log;>

Du bør se omtrent slik ut:

OLDEST_FLASHBACK_TIM
--------------------
14-AUG-2013 06:34:03

db_flashback_retention_target bør være om grensen for denne tidsrammen. Du kan finne det å være lenger hvis plass er ikke en bekymring og databasen har ennå ikke renset gamle flashback logger.

Sier en bruker ved et uhell falt HR skjema fra databasen din for en time siden.

  1. Slå av databasen.
  2. Starte den i mount-modus.
  3. Skriv inn følgende, der 1 er det antall timer du ønsker å blinke tilbake:

    <Flashback database til tidsstempel SYSDATE - 1/24;>

    Du bør se på dette:

    Flashback komplett.

  4. Sjekk flashback før du gjør det permanent:

    <Endre database åpne read only;>

    Du bør se på dette:

    Database endret.

  5. Hvis du er fornøyd med resultatet, gå til trinn 6. Hvis du ikke er fornøyd med tiden, gå til trinn 9.

  6. Slå av databasen.
  7. Starte database i mount-modus.
  8. Åpne databasen med Resetlogs:

    <Endre database åpne resetlogs;>

    Du bør se på dette:

    Database endret.

  9. Start databasen i mount-modus.

  10. Skriv inn følgende:

    <Gjenopprette database;>

    Du bør se på dette:

    Medier utvinning fullført.

  11. Start databasen i mount-modus.

    Hvis du ønsker å blinke tilbake til et tidsstempel, går du til trinn 12. Hvis du ønsker å blinke tilbake til en tidligere opprettet gjenopprettingspunkt, går du til trinn 13.

    For mer om gjenopprettingspunkter, se den nærliggende "Bruke gjenopprettingspunkter" sidebar.

  12. Skriv inn følgende:

    <Flashback database til tidsstempel
    to_timestamp ('14 -AUG-2013 13:00:00 ',' DD-MMM-ÅÅÅÅ HH24: MI: SS ');>

    Du bør se på dette:

    Flashback komplett.

  13. Skriv inn følgende hvis du ønsker å blinke tilbake til et gjenopprettingspunkt:

    <Flashback database til gjenopprettingspunkt pre_deploy_15AUG2013;>

    Du bør se på dette:

Flashback komplett.