Cold-Backup strategie voor een Noarchivelog Mode Oracle Database 12C

u voert een door de gebruiker beheerde cold backup uit door bestanden te kopiëren nadat de database is afgesloten. Dit type back-up staat ook bekend als een offline back-up. Uw Oracle database 12C kan zowel in de noarchivelog-modus als in de archivelog-modus staan wanneer u een koude back-up maakt.

DBA ‘ s hebben de neiging om te denken van een koude back-up als synoniem met een back-up van een database in noarchivelog mode. Dat klopt niet. U kunt een koude back-up maken van een database in archivelog-modus, en dat is een back-upstrategie die veel winkels gebruiken. De verschillen tussen een cold backup met de database in noarchivelog mode en in archivelog mode zijn gedetailleerd in de volgende secties.

Een Cold Backup maken van een Noarchivelog Mode Database

een belangrijke reden voor het maken van een cold backup van een Oracle database 12C in noarchivelog mode is om u een manier te geven om een database terug te zetten naar een punt in de tijd in het verleden. U moet dit type back-up alleen gebruiken als u geen transacties hoeft te herstellen die zich hebben voorgedaan na de back-up. Dit type back-up – en herstelstrategie is alleen aanvaardbaar als uw zakelijke vereisten het verlies van gegevens en downtime toestaan. Zelden zou je ooit dit type van back-up en herstel oplossing te implementeren voor een productie bedrijf database.

dit gezegd hebbende, zijn er enkele goede redenen om dit type back-up te implementeren. Een veel voorkomend gebruik is het maken van een koude back-up van een ontwikkelings – /test – /trainingsdatabase en het periodiek terugzetten van de database naar de basislijn. Dit geeft u een manier om een prestatietest of een trainingssessie opnieuw te starten met dezelfde point-in-time snapshot van de database.

afbeelding

afbeelding

Tip Overweeg om de Flashback Database-functie te gebruiken om uw database terug te zetten naar een punt in het verleden.

het voorbeeld in deze sectie laat u zien hoe u een back-up maakt van elk belangrijk bestand in uw database: Alle controlebestanden, gegevensbestanden, tijdelijke gegevensbestanden en online logbestanden opnieuw uitvoeren. Met dit type back-up kunt u eenvoudig uw database terugzetten naar het moment waarop de back-up is gemaakt. De belangrijkste voordelen van deze aanpak zijn dat het conceptueel eenvoudig en gemakkelijk te implementeren. Hier zijn de stappen die nodig zijn voor een koude back-up van een database in noarchivelog-modus:

  1. bepaal waar de back-upbestanden worden gekopieerd en hoeveel ruimte er nodig is.
  2. Identificeer de locaties en namen van de te kopiëren databasebestanden.
  3. sluit de database af met de onmiddellijke, transactionele of normale clausule.
  4. kopieer de bestanden (geïdentificeerd in Stap 2) naar de back-uplocatie (bepaald in Stap 1).
  5. herstart uw Oracle-database 12C.

in de volgende paragrafen wordt nader ingegaan op deze stappen.

Stap 1. Bepaal waar de back-upbestanden moeten worden gekopieerd en hoeveel ruimte er nodig is

idealiter moet de back-uplocatie zich op een set schijven bevinden die gescheiden zijn van de locatie van uw live-gegevensbestanden. In veel winkels heb je echter misschien geen keuze en krijg je misschien te horen welke koppelpunten door de database gebruikt moeten worden. In dit voorbeeld is de backup locatie de directory / U01/cbackup / O12C. Om een ruw idee te krijgen van hoeveel ruimte u nodig hebt om een kopie van de back-ups op te slaan, kunt u deze query uitvoeren:

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);

je kunt controleren hoeveel operationele schijfruimte beschikbaar is met het Linux/Unix DF (disk free) Commando. Zorg ervoor dat de hoeveelheid beschikbare schijfruimte in het besturingssysteem groter is dan de som die is geretourneerd uit de vorige query:

$ df -h

Stap 2 Identificeer de locaties en namen van de te kopiëren Databasebestanden

Voer deze query uit om de namen (en paden) te tonen van de bestanden die zijn opgenomen in een cold backup van een noarchivelog mode database:

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

back-UP maken van online redo logs (of niet)

wilt u een back-up maken van de online redo logs? Nee; U hoeft nooit een back-up te maken van de online redo logs als onderdeel van elk type back-up. Waarom maken DBA ‘ s dan een back-up van de online redo logs als onderdeel van een cold backup? Een reden is dat het herstelproces voor de noarchivelog mode scenario iets gemakkelijker maakt. De online redo logs zijn nodig om de database op een normale manier te openen.

als u een back-up maakt van alle bestanden (inclusief de online redo logs), dan herstelt u alle bestanden (inclusief de online redo logs) en start u uw database op om uw Oracle database 12C terug te krijgen in de staat waarin deze zich bevond ten tijde van de back-up.

Stap 3. Sluit de Database

verbinding maken met uw database als de SYS (of als een SYSDBA-gebruiker), en sluit uw database af, met behulp van onmiddellijke, transactionele of normaal. In bijna elke situatie is het gebruik van onmiddellijke de voorkeursmethode. Deze modus verbreekt gebruikers, rolt onvolledige transacties terug en sluit de database af:

$ sqlplus / as sysdbaSQL> shutdown immediate;

Stap 4 Maak reservekopieën van de bestanden

gebruik voor elk bestand dat in Stap 2 wordt geïdentificeerd een OS-hulpprogramma om de bestanden naar een back-upmap te kopiëren (geïdentificeerd in Stap 1). In dit eenvoudige voorbeeld bevinden alle gegevensbestanden, controlebestanden, tijdelijke databasebestanden en online redo logs zich in dezelfde directory. In productieomgevingen heb je waarschijnlijk bestanden verspreid in verschillende mappen. Dit voorbeeld gebruikt het Linux / Unix cp commando om de database bestanden te kopiëren van / U01/dbfile / O12C naar de/U01 / cbackup / O12C map:

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

Stap 5 Herstart uw Database

nadat alle bestanden zijn gekopieerd, kunt u uw database opstarten:

$ sqlplus / as sysdbaSQL> startup;

terugzetten van een Cold Backup in Noarchivelog Mode met online Redo Logs

in het volgende voorbeeld wordt uitgelegd hoe u kunt herstellen van een cold backup van een database in noarchivelog mode. Als u de online redo logs als onderdeel van de koude back-up, kunt u ze opnemen wanneer u de bestanden te herstellen. Hier zijn de stappen die betrokken zijn bij deze procedure:

  1. sluit de instantie af.
  2. kopieer de gegevensbestanden, online redo logs, tijdelijke bestanden, en controle bestanden terug van de back-up naar de live database Data file locaties.
  3. Start uw database op.

deze stappen worden beschreven in de volgende paragrafen.

Stap 1. Sluit de instantie

sluit de instantie af als deze draait. In dit scenario maakt het niet uit hoe u de Oracle-database 12C afsluit, omdat u terugzet naar een punt in de tijd (zonder herstel van transacties). Alle bestanden in de live database directory locaties worden overschreven wanneer de back-up bestanden worden gekopieerd terug. Als je instantie draait, kun je deze abrupt afbreken. Als een SYSDBA-gebruiker, doe je het volgende:

$ sqlplus / as sysdbaSQL> shutdown abort;

Stap 2 Kopieer de bestanden terug van de back-up

deze stap doet het omgekeerde van de back-up: u kopieert bestanden van de back-uplocatie naar de live database-bestandslocaties. In dit voorbeeld bevinden alle back-upbestanden zich in de map / U01 / cbackup / O12C, en alle bestanden worden gekopieerd naar de map /U01/dbfile/O12C:

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

Stap 3 Start de Database

maak verbinding met uw database Als SYS (of een gebruiker die SYSDBA-rechten heeft), en start uw database op:

$ sqlplus / as sysdbaSQL> startup;

nadat u deze stappen hebt voltooid, moet u een exacte kopie van uw database hebben zoals het was toen u de cold back-up maakte. Het is alsof je je database terugzet op het moment dat je de back-up maakte.

Een Cold Backup Herstellen in Noarchivelog-modus zonder Online Redo Logs

zoals eerder vermeld, hebt u de online redo logs nooit nodig bij het herstellen van een cold backup. Als u een koude back-up van uw database in noarchivelog-modus en niet de online redo logs als onderdeel van de back-up, de stappen om te herstellen zijn bijna identiek aan de stappen in de vorige sectie. Het belangrijkste verschil is dat de laatste stap vereist dat u uw database te openen, met behulp van de open RESETLOGS clausule. Hier zijn de stappen:

  1. sluit de instantie af.
  2. kopieer de controlebestanden en gegevensbestanden terug van de back-up.
  3. start de database op in koppelmodus.
  4. Open de database met de open RESETLOGS-clausule.

Stap 1. Sluit de instantie

sluit de instantie af als deze draait. In dit scenario maakt het niet uit hoe je de Oracle database 12C uitschakelt, omdat je terug bent naar een punt in de tijd. Alle bestanden in de live database directory locaties worden overschreven wanneer de back-ups worden gekopieerd. Als je instantie draait, kun je deze abrupt afbreken. Als een SYSDBA-gebruiker, doe je het volgende:

$ sqlplus / as sysdbaSQL> shutdown abort;

Stap 2 Kopieer de bestanden terug van de Backup

kopieer de controlebestanden en gegevensbestanden van de backup locatie naar de live data file locaties:

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

Stap 3 Start de Database op in koppelmodus

maak verbinding met uw database Als SYS of een gebruiker met SYSDBA-rechten, en start de database op in koppelmodus:

$ sqlplus / as sysdbaSQL> startup mount

Stap 4 Open de Database met de open RESETLOGS Clausule

Open uw database voor gebruik met de open RESETLOGS clausule:

SQL> alter database open resetlogs;

als je het gewijzigde bericht in de Database ziet, is het commando succesvol. Echter, kunt u deze fout te zien:

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

geef in dit geval het volgende commando:

SQL> recover database until cancel;

u zou dit bericht moeten zien:

Media recovery complete.

nu, proberen om uw database te openen met de open RESETLOGS clausule:

SQL> alter database open resetlogs;

deze instructie instrueert Oracle om de online redo logs opnieuw te maken. Oracle gebruikt informatie in het controlebestand voor de plaatsing, naam en grootte van de logboeken voor opnieuw uitvoeren. Als er oude Online opnieuw logbestanden op die locaties, ze worden overschreven.

als u uw waarschuwing in de gaten houdt.log gedurende dit proces, kunt u ORA-00312 en ORA-00313. Dit betekent dat Oracle de online redo logbestanden niet kan vinden; dit is in orde, omdat deze bestanden niet fysiek beschikbaar zijn totdat ze opnieuw zijn gemaakt door het OPEN RESETLOGS Commando.

Een Cold Backup Scrippen en herstellen

Het is instructie om te zien hoe een cold backup te script. Het basisidee is om dynamisch het data dictionary op te vragen om de locaties en namen te bepalen van de bestanden die geback-upt moeten worden. Dit verdient de voorkeur boven het hard-coderen van de directory locaties en bestandsnamen in een script. De dynamische generatie van een script is minder vatbaar voor fouten en verrassingen (bijvoorbeeld het toevoegen van nieuwe gegevensbestanden aan een database, maar niet aan een oud, hard-gecodeerd back-upscript).

afbeelding

Image

merk op dat de scripts in deze sectie niet bedoeld zijn als back-up-en herstelscripts voor productiesterkte. In plaats daarvan illustreren ze de basisconcepten van het scripten van een koude back-up en vervolgens herstellen.

Het eerste script in deze sectie maakt een koude back-up van een database. Voordat je het cold backup script gebruikt, moet je deze variabelen in het script aanpassen aan je database omgeving.:

  • ORACLE_SID
  • ORACLE_HOME
  • cbdir

de variabele cbdir specificeert de naam van de locatie van de back-upmap. Het script maakt een bestand aan met de naam coldback.sql, die wordt uitgevoerd vanuit SQL * Plus om een koude back-up van de database te starten:

#!/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

dit bestand genereert commando ‘ s die uitgevoerd moeten worden vanuit een SQL*Plus script om een koude back-up te maken van een Oracle database. Je plaatst een uitroepteken (!) voor het Unix cp commando om SQL*Plus te instrueren om naar het besturingssysteem te hosten om het CP commando uit te voeren. Je plaatst ook een achterwaartse slash ( \ ) voor elk dollarteken ( $ ) wanneer je refereert aan v$ data dictionary views; dit is vereist in een Linux/Unix shell script. De \ ontsnapt aan de $ en vertelt het shell script om de $ niet te behandelen als een speciaal karakter (de $ betekent normaal gesproken een shell variabele).

na het uitvoeren van dit script, hier is een voorbeeld van de Copy commando ‘ s geschreven naar de 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;

terwijl u een koude back-up maakt, moet u ook een script genereren dat de commando ‘ s bevat om gegevensbestanden, tijdelijke bestanden, logbestanden en controlebestanden terug te kopiëren naar hun oorspronkelijke locatie. U kunt dit script gebruiken om te herstellen vanaf de cold backup. Het volgende script in deze sectie maakt dynamisch een coldrest aan.sql-script dat bestanden kopieert van de back-uplocatie naar de oorspronkelijke locaties van het gegevensbestand. Je moet dit script aanpassen op dezelfde manier als je het cold backup script hebt gewijzigd (dat wil zeggen, verander de oracle_sid, oracle_home, en cbdir variabelen om aan je omgeving te voldoen):

#!/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

dit script maakt een script aan, genaamd coldrest.sql, dat de kopieeropdrachten genereert om uw gegevensbestanden, tijdelijke bestanden, logbestanden en controlebestanden terug te zetten naar hun oorspronkelijke locaties. Nadat je dit shell script hebt uitgevoerd, is hier een fragment van de code in de coldrest.SQL-bestand:

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;

als je moet herstellen vanaf een koude back-up met behulp van dit script, log dan in op SQL*Plus als SYS, en voer het script uit:

$ sqlplus / as sysdbaSQL> @coldrest.sql

Вас заинтересует / interessant voor u:

Oracle Database beheren 12C O...

Oracle-Database beheren 12C O… Geregistreerd op: 29 Feb 2008 2020, 10:18:11

implementatie van een Hot Backup Stra...

implementatie van een Hot Backup Stra… Ik heb een vraag over: 2020, 10:16:34

 passend Oracle 12c Tabeltype...

overeenkomend met Oracle 12c-Tabeltype… Ik heb nog geen reacties. 2018, 16:59:35

 stoppen van de Oracle Database 1...

de Oracle-Database stoppen 1… Ik heb een vraag over: 2020, 10:19:28

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.