Kald-Backup Strategi for En Noarchivelog Modus Oracle Database 12c

du utfører en brukeradministrert kald backup ved å kopiere filer etter at databasen er stengt. Denne typen backup er også kjent som en offline backup. Din Oracle database 12C kan være i enten noarchivelog modus eller archivelog modus når du gjør en kald backup.

Dbaer har en tendens til å tenke på en kald backup som synonymt med en sikkerhetskopi av en database i noarchivelog-modus. Det er ikke riktig. Du kan lage en kald backup av en database i arkivlogg modus, og det er en backup strategi som mange butikker bruker. Forskjellene mellom en kald backup med databasen i noarchivelog modus og i archivelog modus er beskrevet i de følgende avsnittene.

Å Lage En Kald Backup Av En Noarchivelog Mode Database

en hovedgrunn til å lage en kald backup Av En Oracle database 12C i noarchivelog mode er å gi deg en måte å gjenopprette en database tilbake til et tidspunkt i fortiden. Du bør bare bruke denne typen sikkerhetskopiering hvis du ikke trenger å gjenopprette transaksjoner som skjedde etter sikkerhetskopien. Denne typen strategi for sikkerhetskopiering og gjenoppretting er bare akseptabelt hvis forretningsbehovene dine tillater tap av data og nedetid. Sjelden vil du noen gang implementere denne typen backup og gjenoppretting løsning for en produksjon forretningsdatabase.

når det er sagt, er det noen gode grunner til å implementere denne typen backup. En vanlig bruk er å lage en kald backup av en utvikling/test / trening database og periodisk tilbakestille databasen tilbake til grunnlinjen. Dette gir deg en måte å starte en ytelsestest eller en treningsøkt på nytt med samme øyeblikksbilde av databasen.

Bilde

Bilde

Tips Vurder Å bruke Flashback Database-funksjonen til å sette databasen tilbake til et tidspunkt i fortiden.

eksemplet i denne delen viser hvordan du sikkerhetskopierer alle kritiske filer i databasen: alle kontrollfiler, datafiler, midlertidige datafiler og loggfiler på nettet. Med denne typen sikkerhetskopiering kan du enkelt gjenopprette databasen tilbake til tidspunktet da sikkerhetskopien ble gjort. De viktigste fordelene med denne tilnærmingen er at den er konseptuelt enkel og lett å implementere. Her er trinnene som kreves for en kald backup av en database i noarchivelog-modus:

  1. Bestem hvor du skal kopiere sikkerhetskopifilene og hvor mye plass som kreves.
  2. Identifiser plasseringene og navnene på databasefilene som skal kopieres.
  3. Slå av databasen MED KLAUSULEN UMIDDELBAR, TRANSAKSJONELL eller NORMAL.
  4. Kopier filene (identifisert i trinn 2) til sikkerhetskopiplasseringen (bestemt i trinn 1).
  5. Start oracle-databasen PÅ Nytt 12C.

følgende avsnitt utdype disse trinnene.

Trinn 1. Bestem Hvor Du Skal Kopiere Sikkerhetskopifilene Og Hvor Mye Plass Som Kreves

Ideelt sett bør sikkerhetskopieringsstedet være på et sett med disker som er skilt fra din live datafilplassering. Men i mange butikker har du kanskje ikke noe valg og kan bli fortalt hvilke monteringspunkter som skal brukes av databasen. For dette eksemplet er sikkerhetskopieringen katalogen / u01/cbackup / O12C. For å få en grov ide om hvor mye plass du trenger for å lagre en kopi av sikkerhetskopiene, kan du kjøre denne spørringen:

select sum(sum_bytes)/1024/1024 m_bytesfrom(select sum(bytes) sum_bytes from v$datafileunionselect sum(bytes) sum_bytes from v$tempfileunionselect (sum(bytes) * members) sum_bytes from v$loggroup by members);

du kan kontrollere hvor mye operativ diskplass som er tilgjengelig med Kommandoen Linux / Unix df (diskfri). Kontroller at mengden diskplass tilgjengelig PÅ OS er større enn summen returnert fra forrige spørring:

$ df -h

Trinn 2. Identifiser Plasseringene Og Navnene På Databasefilene Som Skal Kopieres

Kjør denne spørringen for å vise navnene (og banene) på filene som er inkludert i en kald sikkerhetskopi av en database i noarchivelog-modus:

select name from v$datafileunionselect name from v$controlfileunionselect name from v$tempfileunionselect member from v$logfile;

SIKKERHETSKOPIERE LOGGER PÅ NETT (ELLER IKKE)

trenger du å sikkerhetskopiere loggene på nett? Nei; du trenger aldri å sikkerhetskopiere online gjøre loggene som en del av noen form for backup. Så, hvorfor dba sikkerhetskopiere online gjøre loggene som en del av en kald backup? En grunn er at det gjør gjenopprettingsprosessen for noarchivelog modus scenariet litt enklere. Online gjøre loggene er nødvendig for å åpne databasen på en vanlig måte.

hvis du sikkerhetskopierer alle filer (inkludert online redo-loggene), og for å få Oracle-databasen 12C tilbake til tilstanden Den var i på tidspunktet for sikkerhetskopien, gjenoppretter du alle filer (inkludert online redo-loggene) og starter databasen.

Trinn 3. Slå Av Databasen

Koble til databasen som SYS (ELLER SOM EN SYSDBA-privilegert bruker), og slå av databasen VED HJELP AV UMIDDELBAR, TRANSAKSJONELL eller NORMAL. I nesten alle situasjoner er BRUK AV UMIDDELBAR den foretrukne metoden. Denne modusen kobler brukere, ruller tilbake ufullstendige transaksjoner, og slår av databasen:

$ sqlplus / as sysdbaSQL> shutdown immediate;

Trinn 4. Opprett Sikkerhetskopier Av Filene

For hver fil som er identifisert i trinn 2, bruker DU ET OS-verktøy til å kopiere filene til en sikkerhetskopimappe (identifisert i trinn 1). I dette enkle eksemplet er alle datafiler, kontrollfiler, midlertidige databasefiler og online gjenta logger i samme katalog. I produksjonsmiljøer vil du mest sannsynlig ha filer spredt ut i flere forskjellige kataloger. Dette eksemplet bruker Kommandoen Linux / Unix cp til å kopiere databasefilene fra/u01/dbfile /O12C til katalogen/u01/cbackup / O12C:

$ cp /u01/dbfile/O12C/*.* /u01/cbackup/O12C

Trinn 5. Start Databasen

når alle filene er kopiert, kan du starte opp databasen:

$ sqlplus / as sysdbaSQL> startup;

Gjenopprette En Kald Backup I Noarchivelog-Modus Med Online Gjenta Logger

det neste eksemplet forklarer hvordan du gjenoppretter fra en kald backup av en database i noarchivelog-modus. Hvis du inkluderte loggene for å gjøre om på nettet som en del av den kalde sikkerhetskopien, kan du inkludere dem når du gjenoppretter filene. Her er trinnene som er involvert i denne prosedyren:

  1. Slå av forekomsten.
  2. Kopier datafilene, gjør om loggene på nettet, midlertidige filer og kontroller filene tilbake fra sikkerhetskopien til datafilplasseringene i live-databasen.
  3. Start opp databasen.

disse trinnene er beskrevet i de følgende avsnittene.

Trinn 1. Slå Av Forekomsten

Slå av forekomsten hvis den kjører. I dette scenariet spiller det ingen rolle hvordan Du slår Av oracle database 12C, fordi du gjenoppretter tilbake til et tidspunkt (uten gjenoppretting av transaksjoner). Alle filer i live database katalog steder blir overskrevet når sikkerhetskopifilene kopieres tilbake. Hvis forekomsten din kjører, kan du abrupt avbryte den. Som EN SYSDBA-privilegert bruker gjør du følgende:

$ sqlplus / as sysdbaSQL> shutdown abort;

Trinn 2. Kopier Filene Tilbake Fra Sikkerhetskopien

dette trinnet gjør det motsatte av sikkerhetskopien: du kopierer filer fra sikkerhetskopieringsplasseringen til de levende databasefilplasseringene. I dette eksemplet er alle sikkerhetskopifilene plassert i katalogen / u01 / cbackup / O12C, og alle filer kopieres til katalogen / u01 / dbfile / O12C:

$ cp /u01/cbackup/O12C/*.* /u01/dbfile/O12C

Trinn 3. Start Databasen

Koble til databasen som SYS( eller en bruker SOM HAR SYSDBA-privilegier), og start databasen:

$ sqlplus / as sysdbaSQL> startup;

når du er ferdig med disse trinnene, bør du ha en eksakt kopi av databasen som den var da du gjorde den kalde sikkerhetskopien. Det er som om du setter databasen tilbake til tidspunktet da du gjorde sikkerhetskopien.

Gjenopprette En Kald Backup I Noarchivelog Modus Uten Online Gjenta Logger

Som nevnt tidligere, trenger du aldri online gjenta logger når du gjenoppretter fra en kald backup. Hvis du tok en kald sikkerhetskopi av databasen i noarchivelog-modus og ikke inkluderte loggene på nett som en del av sikkerhetskopien, er trinnene for å gjenopprette nesten identiske med trinnene i forrige del. Hovedforskjellen er at det siste trinnet krever at du åpner databasen din ved HJELP AV OPEN RESETLOGS-klausulen. Her er trinnene:

  1. Slå av forekomsten.
  2. Kopier kontrollfilene og datafilene tilbake fra sikkerhetskopien.
  3. Start databasen i monteringsmodus.
  4. Åpne databasen med setningsdelen ÅPNE RESETLOGS.

Trinn 1. Slå Av Forekomsten

Slå av forekomsten hvis den kjører. I dette scenariet spiller det ingen rolle hvordan du slår Av oracle database 12C, fordi du gjenoppretter tilbake til et tidspunkt. Eventuelle filer i live database katalog steder blir overskrevet når sikkerhetskopiene kopieres. Hvis forekomsten din kjører, kan du abrupt avbryte den. Som EN SYSDBA-privilegert bruker gjør du følgende:

$ sqlplus / as sysdbaSQL> shutdown abort;

Trinn 2. Kopier Filene Tilbake Fra Sikkerhetskopien

Kopier kontrollfilene Og datafilene fra sikkerhetskopieringen til de levende datafilene:

$ cp <backup directory>/*.* <live database file directory>

Trinn 3. Start Databasen I Monteringsmodus

Koble til databasen som SYS eller en bruker MED SYSDBA-privilegier, og start databasen i monteringsmodus:

$ sqlplus / as sysdbaSQL> startup mount

Trinn 4. Åpne Databasen Med Setningsdelen ÅPNE RESETLOGS

Åpne databasen for BRUK MED setningsdelen ÅPNE RESETLOGS:

SQL> alter database open resetlogs;

hvis Du ser Databasen endret melding, kommandoen var vellykket. Du kan imidlertid se denne feilen:

ORA-01139: RESETLOGS option only valid after an incomplete database recovery

i så fall utsteder du følgende kommando:

SQL> recover database until cancel;

du bør se denne meldingen:

Media recovery complete.

prøv nå å åpne databasen MED open RESETLOGS-klausulen:

SQL> alter database open resetlogs;

denne erklæringen instruerer Oracle om å gjenskape loggene på nettet. Oracle bruker informasjon i kontrollfilen for plassering, navn og størrelse på redo-loggene. Hvis det er gamle loggfiler på nettet på disse stedene, blir de overskrevet.

hvis du overvåker varselet.logg gjennom hele denne prosessen kan DU se ORA-00312 OG ORA-00313. Dette betyr At Oracle ikke kan finne loggfilene på nettet. dette er greit, fordi disse filene ikke er fysisk tilgjengelige før de gjenopprettes av KOMMANDOEN ÅPNE RESETLOGS.

Scripting En Kald Backup And Restore

det er instruksjonsvideo for å vise hvordan du skriver en kald backup. Den grunnleggende ideen er å dynamisk spørre dataordlisten for å bestemme steder og navn på filene som skal sikkerhetskopieres. Dette er å foretrekke å hard-koding katalogen steder og filnavn i et skript. Den dynamiske genereringen av et skript er mindre utsatt for feil og overraskelser(f. eks. tillegg av nye datafiler til en database, men ikke til et gammelt, hardkodet sikkerhetskopieringsskript).

Bilde

Bilde

merk skriptene i denne delen er ikke ment å være sikkerhetskopierings-og gjenopprettingsskript for produksjonsstyrke. Snarere illustrerer de de grunnleggende konseptene for å skrive en kald backup og påfølgende gjenoppretting.

det første skriptet i denne delen lager en kald sikkerhetskopi av en database. Før du bruker cold backup-skriptet, må du endre disse variablene i skriptet for å matche databasemiljøet:

  • ORACLE_SID
  • ORACLE_HOME
  • cbdir

cbdir-variabelen angir navnet på plasseringen av backup-katalogen. Skriptet oppretter en fil som heter coldback.sql, som utføres FRA SQL * Plus for å starte en kald backup av databasen:

#!/bin/bashORACLE_SID=O12CORACLE_HOME=/u01/app/oracle/product/12.1.0.1/db_1PATH=$PATH:$ORACLE_HOME/bin#sqlplus -s <<EOF/ as sysdbaset head off pages0 lines 132 verify off feed off trimsp ondefine cbdir=/u01/cbackup/O12Cspo coldback.sqlselect 'shutdown immediate;' from dual;select '!cp ' || name || ' ' || '&&cbdir' from v$datafile;select '!cp ' || name || ' ' || '&&cbdir' from v$tempfile;select '!cp ' || member || ' ' || '&&cbdir' from v$logfile;select '!cp ' || name || ' ' || '&&cbdir' from v$controlfile;select 'startup;' from dual;spo off;@@coldback.sqlEOFexit 0

denne filen genererer kommandoer som skal utføres FRA ET SQL * Plus-skript for å lage en kald sikkerhetskopi av En Oracle-database. Du plasserer et utropstegn (!) Foran Unix cp-kommandoen for Å instruere SQL * Plus til å være vert for OPERATIVSYSTEMET for å kjøre cp-kommandoen. Du plasserer også en bakover skråstrek ( \ ) foran hvert dollartegn ( $ ) når du refererer til v$ data dictionary-visninger; dette kreves i Et Linux / Unix shell-skript. \ Rømmer $ og forteller shell-skriptet ikke å behandle $ som et spesialtegn ($betyr normalt en skallvariabel).

etter at du har kjørt dette skriptet, er det et eksempel på kopieringskommandoene som er skrevet til coldback.sql script:

shutdown immediate;!cp /u01/dbfile/O12C/system01.dbf /u01/cbackup/O12C!cp /u01/dbfile/O12C/sysaux01.dbf /u01/cbackup/O12C!cp /u01/dbfile/O12C/undotbs01.dbf /u01/cbackup/O12C!cp /u01/dbfile/O12C/users01.dbf /u01/cbackup/O12C!cp /u01/dbfile/O12C/tools01.dbf /u01/cbackup/O12C!cp /u01/dbfile/O12C/temp01.dbf /u01/cbackup/O12C!cp /u01/oraredo/O12C/redo02a.rdo /u01/cbackup/O12C!cp /u02/oraredo/O12C/redo02b.rdo /u01/cbackup/O12C!cp /u01/oraredo/O12C/redo01a.rdo /u01/cbackup/O12C!cp /u02/oraredo/O12C/redo01b.rdo /u01/cbackup/O12C!cp /u01/oraredo/O12C/redo03a.rdo /u01/cbackup/O12C!cp /u02/oraredo/O12C/redo03b.rdo /u01/cbackup/O12C!cp /u01/dbfile/O12C/control01.ctl /u01/cbackup/O12C!cp /u01/dbfile/O12C/control02.ctl /u01/cbackup/O12Cstartup;

mens du gjør en kald sikkerhetskopi, bør du også generere et skript som gir kommandoer for å kopiere datafiler, temp-filer, loggfiler og kontrollere filer tilbake til de opprinnelige plasseringene. Du kan bruke dette skriptet til å gjenopprette fra kald backup. Det neste skriptet i denne delen skaper dynamisk en kaldhvile.sql script som kopierer filer fra backup plassering til de opprinnelige datafilen steder. Du må endre dette skriptet på samme måte som du endret cold backup script (dvs. endre oracle_sid, ORACLE_HOME, OG cbdir variabler for å matche ditt miljø):

#!/bin/bashORACLE_SID=O12CORACLE_HOME=/u01/app/oracle/product/12.1.0.1/db_1PATH=$PATH:$ORACLE_HOME/bin#sqlplus -s <<EOF/ as sysdbaset head off pages0 lines 132 verify off feed off trimsp ondefine cbdir=/u01/cbackup/O12Cdefine dbname=$ORACLE_SIDspo coldrest.sqlselect 'shutdown abort;' from dual;select '!cp ' || '&&cbdir/' || substr(name, instr(name,'/',-1,1)+1) || ' ' || name from v$datafile;select '!cp ' || '&&cbdir/' || substr(name, instr(name,'/',-1,1)+1) || ' ' || name from v$tempfile;select '!cp ' || '&&cbdir/' || substr(member, instr(member,'/',-1,1)+1) || ' ' || member from v$logfile;select '!cp ' || '&&cbdir/' || substr(name, instr(name,'/',-1,1)+1) || ' ' || name from v$controlfile;select 'startup;' from dual;spo off;EOFexit 0

dette skriptet oppretter et skript, kalt coldrest.sql, som genererer kopieringskommandoene for å gjenopprette datafiler, temp-filer, loggfiler og kontrollere filer tilbake til de opprinnelige plasseringene. Etter at du har kjørt dette shell-skriptet, er det en utdrag av koden i coldrest.sql-fil:

shutdown abort;!cp /u01/cbackup/O12C/system01.dbf /u01/dbfile/O12C/system01.dbf!cp /u01/cbackup/O12C/sysaux01.dbf /u01/dbfile/O12C/sysaux01.dbf!cp /u01/cbackup/O12C/undotbs01.dbf /u01/dbfile/O12C/undotbs01.dbf!cp /u01/cbackup/O12C/users01.dbf /u01/dbfile/O12C/users01.dbf!cp /u01/cbackup/O12C/tools01.dbf /u01/dbfile/O12C/tools01.dbf...!cp /u01/cbackup/O12C/redo03b.rdo /u02/oraredo/O12C/redo03b.rdo!cp /u01/cbackup/O12C/control01.ctl /u01/dbfile/O12C/control01.ctl!cp /u01/cbackup/O12C/control02.ctl /u01/dbfile/O12C/control02.ctlstartup;

hvis DU trenger å gjenopprette fra en kald backup ved hjelp av dette skriptet, logg INN PÅ SQL * Plus som SYS, og kjør skriptet:

$ sqlplus / as sysdbaSQL> @coldrest.sql

Вас заинтересует / Intresting for deg:

Administrere Oracle Database 12C O...

Administrere Oracle Database 12C O… 4931 visninger Андрей волков Lør, 29 Feb 2020, 10:18:11

Implementere En Varm Backup Stra...

Implementere En Varm Backup Stra… 6414 visninger Андрей волков Lør, 29 Feb 2020, 10:16:34

Matchende Oracle 12c Tabelltype...

Matchende Oracle 12c Tabelltype… 1786 visninger Ded Lør, 18 Aug 2018, 16:59:35

Stoppe Oracle Database 1...

Stoppe Oracle-Databasen 1… 976 visninger Андрей волков Lør, 29 Feb 2020, 10:19:28

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert.