suoritat käyttäjän hallinnoiman kylmän varmuuskopioinnin kopioimalla tiedostoja tietokannan sammuttua. Tämäntyyppinen varmuuskopiointi tunnetaan myös offline varmuuskopiointi. Oracle database 12c voi olla joko noarchivelog-tilassa tai archivelog-tilassa, kun teet kylmän varmuuskopion.
DBAs taipumus ajatella kylmä varmuuskopiointi on synonyymi varmuuskopio tietokannan noarchivelog tilassa. Se ei pidä paikkaansa. Voit tehdä kylmän varmuuskopion tietokannasta archivelog-tilassa, ja se on varastrategia, jota monet kaupat käyttävät. Erot kylmän varmuuskopion kanssa tietokannan noarchivelog tilassa ja archivelog tilassa on eritelty seuraavissa osissa.
kylmän varmuuskopion tekeminen Noarchivelog-Tilatietokannasta
yksi pääsyy tehdä kylmä varmuuskopio Oracle-tietokannasta 12c noarchivelog-tilassa on antaa sinulle tapa palauttaa tietokanta menneisyyteen. Sinun pitäisi käyttää tämän tyyppistä varmuuskopiointia vain, jos sinun ei tarvitse palauttaa tapahtumia, jotka tapahtuivat varmuuskopioinnin jälkeen. Tämäntyyppinen varmuuskopiointi-ja palautusstrategia on hyväksyttävä vain, jos yrityksesi vaatimukset mahdollistavat tietojen menetyksen ja seisokit. Harvoin olisi koskaan toteuttaa tämän tyyppinen varmuuskopiointi-ja palautusratkaisu tuotannon liiketoiminnan tietokantaan.
tämän sanottuani, on olemassa joitakin hyviä syitä toteuttaa tämän tyyppinen varmuuskopio. Yksi yleinen käyttötarkoitus on tehdä kylmä varmuuskopio kehitys – /testi – /harjoitustietokannasta ja palauttaa tietokanta säännöllisesti takaisin lähtötilanteeseen. Tämä antaa sinulle tavan käynnistää suorituskykytesti tai harjoitussessio uudelleen samalla tietokannan tilannekuvalla.
Tip harkitse Flashback-Tietokantaominaisuuden avulla tietokannan palauttamista menneisyyteen.
tämän osion esimerkki näyttää, miten teet varmuuskopion jokaisesta tietokantasi kriittisestä tiedostosta: kaikista kontrollitiedostoista, datatiedostoista, väliaikaisista datatiedostoista ja online redo-lokitiedostoista. Tämän tyyppinen varmuuskopiointi, voit helposti palauttaa tietokannan takaisin siihen aikaan, kun varmuuskopiointi tehtiin. Tämän lähestymistavan tärkeimmät edut ovat, että se on käsitteellisesti yksinkertainen ja helppo toteuttaa. Tässä ovat tarvittavat vaiheet kylmä varmuuskopiointi tietokannan noarchivelog tilassa:
- Määritä, missä kopioida varmuuskopiotiedostot ja kuinka paljon tilaa tarvitaan.
- tunnista kopioitavien tietokantatiedostojen sijainnit ja nimet.
- Sulje tietokanta välittömällä, kaupallisella tai normaalilla lausekkeella.
- Kopioi tiedostot (tunnistettu vaiheessa 2) varmuuskopiointipaikkaan (määritetty vaiheessa 1).
- Käynnistä Oracle-tietokanta uudelleen 12c.
näitä vaiheita käsitellään seuraavissa jaksoissa.
Vaihe 1. Määritä, missä varmuuskopiotiedostot kopioidaan ja kuinka paljon tilaa tarvitaan
Ihannetapauksessa varmuuskopion sijainnin tulisi olla levyllä, joka on erillään live-tiedostojen sijainnista. Monissa liikkeissä ei kuitenkaan välttämättä ole valinnanvaraa, ja heille saatetaan kertoa, mitä kiinnityspisteitä tietokanta käyttää. Tässä esimerkissä varmuuskopion sijainti on hakemisto / u01/cbackup / O12C. Saada karkea käsitys siitä, kuinka paljon tilaa tarvitset tallentaa yhden kopion varmuuskopiot, voit suorittaa tämän kyselyn:
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);
Linux/Unix DF (disk free) – komennolla voit tarkistaa, kuinka paljon käyttölevytilaa on käytettävissä. Varmista, että käyttöjärjestelmän käytettävissä oleva levytilan määrä on suurempi kuin ennakkokyselystä palautettu summa:
$ df -h
Vaihe 2. Tunnista kopioitavien tietokantatiedostojen sijainnit ja Nimet
suorita tämä kysely luetteloidaksesi noarchivelog-tilan tietokannan kylmän varmuuskopion sisältämien tiedostojen nimet (ja polut) :
select name from v$datafileunionselect name from v$controlfileunionselect name from v$tempfileunionselect member from v$logfile;
varmuuskopiointi Online REDO lokit (tai ei)
onko sinun varmuuskopioida online redo lokit? Ei; sinun ei koskaan tarvitse varmuuskopioida online redo lokit osana mitään varmuuskopiointia. Sitten, miksi DBAs varmuuskopioida online redo lokit osana kylmä varmuuskopio? Yksi syy on se, että se tekee noarchivelog-tilan skenaarion palautusprosessista hieman helpompaa. Online redo lokit tarvitaan avata tietokannan normaaliin tapaan.
jos varmuuskopioit kaikki tiedostot (mukaan lukien online redo-lokit), saat Oracle-tietokannan 12C takaisin tilaan, jossa se oli varmuuskopioinnin aikaan, palautat kaikki tiedostot (mukaan lukien online redo-lokit) ja käynnistät tietokannan.
Vaihe 3. Sulje tietokanta
Yhdistä tietokantaan SYS: nä (tai sysdba-etuoikeutettuna käyttäjänä) ja sulje tietokanta käyttäen välitöntä, kaupallista tai normaalia. Lähes jokaisessa tilanteessa, käyttämällä välitöntä on ensisijainen menetelmä. Tämä tila irrottaa käyttäjät, rullaa takaisin epätäydelliset tapahtumat, ja sammuttaa tietokannan:
$ sqlplus / as sysdbaSQL> shutdown immediate;
Vaihe 4. Luo varmuuskopiot tiedostoista
jokaiselle vaiheessa 2 tunnistetulle tiedostolle kopioi tiedostot varmuuskopiokansioon käyttöjärjestelmän apuohjelman avulla (tunnistettu vaiheessa 1). Tässä yksinkertaisessa esimerkissä kaikki tiedostot, kontrollitiedostot, väliaikaiset tietokantatiedostot ja online redo lokit ovat samassa hakemistossa. Tuotantoympäristöissä tiedostot ovat todennäköisesti levittäytyneet useisiin eri hakemistoihin. Tämä esimerkki käyttää Linux/Unix cp-komentoa kopioida tietokantatiedostot / u01 / dbfile / O12C-hakemistosta/u01/cbackup / O12C-hakemistoon:
$ cp /u01/dbfile/O12C/*.* /u01/cbackup/O12C
Vaihe 5. Käynnistä tietokanta uudelleen
kun kaikki tiedostot on kopioitu, voit käynnistää tietokannan:
$ sqlplus / as sysdbaSQL> startup;
palauttaminen kylmä varmuuskopio Noarchivelog tilassa Online Redo lokit
seuraava esimerkki selittää, miten palauttaa kylmästä varmuuskopiosta tietokannan noarchivelog tilassa. Jos mukana online redo lokit osana kylmä varmuuskopiointi, voit sisällyttää ne, kun palautat tiedostot. Tässä ovat vaiheet mukana tässä menettelyssä:
- Sulje instanssi.
- Kopioi datatiedostot, Online redo-lokit, väliaikaiset tiedostot ja kontrollitiedostot varmuuskopiosta live-tietokannan datatiedoston sijainteihin.
- Käynnistä tietokanta.
nämä vaiheet on eritelty seuraavissa jaksoissa.
Vaihe 1. Sulje instanssi
Sulje instanssi, jos se on käynnissä. Tässä skenaariossa sillä ei ole väliä, miten suljet Oraclen tietokannan 12C, koska palautat takaisin tiettyyn aikaan (ilman palautusta tapahtumista). Kaikki live-tietokannan hakemiston sijainnit korvataan, kun varmuuskopiotiedostot kopioidaan takaisin. Jos instanssi on käynnissä, voit keskeyttää sen äkillisesti. Sysdba-etuoikeutettuna käyttäjänä toimi seuraavasti:
$ sqlplus / as sysdbaSQL> shutdown abort;
Vaihe 2. Kopioi tiedostot varmuuskopiosta
tämä vaihe tekee varmuuskopion kääntöpuolen: kopioit tiedostoja varmuuskopiosijainnista live-tietokannan tiedostosijainteihin. Tässä esimerkissä kaikki varmuuskopiotiedostot sijaitsevat/u01/cbackup / O12C-hakemistossa, ja kaikki tiedostot kopioidaan/u01/dbfile / O12C-hakemistoon:
$ cp /u01/cbackup/O12C/*.* /u01/dbfile/O12C
Vaihe 3. Käynnistä tietokanta
Yhdistä tietokantaan nimellä SYS (tai käyttäjä, jolla on sysdba-oikeudet) ja käynnistä tietokanta:
$ sqlplus / as sysdbaSQL> startup;
kun olet lopettanut nämä vaiheet, sinun pitäisi olla tarkka kopio tietokannan kuin se oli, kun teit kylmä varmuuskopiointi. Aivan kuin asettaisit tietokantasi takaisin siihen aikaan, kun teit varmuuskopion.
palauttaminen kylmä varmuuskopiointi Noarchivelog tilassa ilman Online Redo lokit
kuten aiemmin mainittiin, et koskaan tarvitse online redo lokit palautettaessa kylmä varmuuskopiointi. Jos teit kylmä varmuuskopio tietokannan noarchivelog tilassa ja ei sisälly online redo lokit osana varmuuskopiointia, vaiheet palauttaa ovat lähes identtiset vaiheet edellisessä osassa. Tärkein ero on, että viimeinen vaihe vaatii sinua avaamaan tietokannan, käyttämällä OPEN RESETLOGS lauseke. Tässä ovat vaiheet:
- Sulje instanssi.
- Kopioi kontrollitiedostot ja datatiedostot varmuuskopiosta.
- Käynnistä tietokanta liitostilassa.
- avaa tietokanta OPEN RESETLOGS-lausekkeella.
Vaihe 1. Sulje instanssi
Sulje instanssi, jos se on käynnissä. Tässä skenaariossa sillä ei ole väliä, miten suljet Oraclen tietokannan 12C, koska palautat takaisin tiettyyn aikaan. Kaikki tiedostot live-tietokannan hakemiston sijainnit korvataan, kun varmuuskopiot kopioidaan. Jos instanssi on käynnissä, voit keskeyttää sen äkillisesti. Sysdba-etuoikeutettuna käyttäjänä toimi seuraavasti:
$ sqlplus / as sysdbaSQL> shutdown abort;
Vaihe 2. Kopioi tiedostot takaisin varmuuskopiosta
Kopioi kontrollitiedostot ja datatiedostot varmuuskopiosta live-tiedostojen sijainteihin:
$ cp <backup directory>/*.* <live database file directory>
Vaihe 3. Käynnistä tietokanta Liitostilassa
Yhdistä tietokantaan SYS – tai sysdba-oikeuksilla varustettuna käyttäjänä ja käynnistä tietokanta liitostilassa:
$ sqlplus / as sysdbaSQL> startup mount
Vaihe 4. Avaa tietokanta OPEN RESETLOGS-lausekkeella
avaa tietokanta käytettäväksi OPEN RESETLOGS-lausekkeella:
SQL> alter database open resetlogs;
jos näet tietokannan muutettu viesti, komento onnistui. Saatat kuitenkin nähdä tämän virheen:
ORA-01139: RESETLOGS option only valid after an incomplete database recovery
tässä tapauksessa anna seuraava komento:
SQL> recover database until cancel;
sinun pitäisi nähdä tämä viesti:
Media recovery complete.
nyt, yritä avata tietokannan OPEN RESETLOGS lauseke:
SQL> alter database open resetlogs;
tämä lausuma ohjeistaa Oraclea laatimaan uudelleen verkossa olevat lokit. Oracle käyttää kontrollitiedostossa olevia tietoja redo-lokien sijoittamisesta, nimestä ja koosta. Jos niissä paikoissa on vanhoja lokitiedostoja, ne korvataan.
jos tarkkailet kuulutustasi.log koko tämän prosessin, saatat nähdä ORA-00312 ja ORA-00313. Tämä tarkoittaa, että Oracle ei löydä online redo lokitiedostoja; tämä on OK, koska nämä tiedostot eivät ole fyysisesti saatavilla ennen kuin ne luodaan uudelleen OPEN RESETLOGS-komennolla.
kylmän varmuuskopion Skriptaaminen ja palautus
on ohjeellista tarkastella kylmän varmuuskopion skriptaamista. Perusajatuksena on dynaamisesti tiedustella data-sanakirjasta varmuuskopioitavien tiedostojen sijainnit ja nimet. Tämä on parempi vaihtoehto kuin hakemistojen sijaintien ja tiedostonimien koodaaminen komentosarjaan. Komentosarjan dynaaminen sukupolvi on vähemmän altis virheille ja yllätyksille (esim.uusien datatiedostojen lisääminen tietokantaan, mutta ei vanhaan, kovakoodattuun varmuuskopiointiohjelmistoon).
huomaa, että tämän osion skriptejä ei ole tarkoitettu tuotannollisiksi varmuuskopiointi-ja palautus skripteiksi. Pikemminkin ne kuvaavat peruskäsitteitä komentosarjasta kylmä varmuuskopiointi ja myöhempi palautus.
tämän jakson ensimmäinen kirjoitus tekee kylmän varmuuskopion tietokannasta. Ennen kuin käytät cold backup script, sinun täytyy muokata näitä muuttujia script vastaamaan tietokantaympäristösi:
- ORACLE_SID
- ORACLE_HOME
- cbdir
cbdir-muuttuja määrittää varmistushakemiston sijainnin nimen. Skripti luo tiedoston nimeltä coldback.sql, joka suoritetaan SQL * Plus aloittaa kylmä varmuuskopiointi tietokannan:
#!/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
tämä tiedosto luo komentoja, jotka on suoritettava SQL*Plus-skriptistä, jotta Oraclen tietokannasta voidaan tehdä kylmä varmuuskopio. Laitat huutomerkin.) edessä Unix cp komennon ohjeistaa SQL * Plus isäntä ulos OS ajaa cp komento. Asetat myös taaksepäin viivan ( \ ) jokaisen dollarimerkin ( $ ) eteen viitattaessa v$ data dictionary-näkymiin; Tämä vaaditaan Linux/Unix shell-skriptissä. \ Pakenee $ ja kertoo komentotulkin skripti ei käsitellä $ kuin erityinen merkki ($yleensä merkitsee shell muuttuja).
kun olet ajanut tämän komentosarjan, tässä on näyte coldbackille kirjoitetuista kopiointikomennoista.sql-skripti:
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;
kun teet kylmän varmuuskopion, sinun pitäisi myös luoda skripti, joka antaa komennot kopioida tiedostoja, temp-tiedostoja, lokitiedostoja ja ohjata tiedostoja takaisin alkuperäisiin sijainteihinsa. Voit käyttää tätä skripti palauttaa kylmä varmuuskopiointi. Seuraava kirjoitus tässä osassa luo dynaamisesti coldrestin.sql-skripti, joka kopioi tiedostoja varmuuskopiosijainnista alkuperäiseen datatiedoston sijaintiin. Sinun täytyy muokata tätä komentosarjaa samalla tavalla kuin muutit cold backup-komentosarjaa (eli muuttaa oracle_sid -, ORACLE_HOME-ja cbdir-muuttujia vastaamaan ympäristöäsi):
#!/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
tämä kirjoitus luo käsikirjoituksen, jonka nimi on coldrest.sql, joka luo kopiointikomennot palauttaa tiedostoja, temp tiedostot, lokitiedostot, ja hallita tiedostoja takaisin alkuperäisiin sijainteihin. Kun olet suorittanut tämän komentotulkin komentotulkin, tässä on pätkä coldrestin koodista.sql-tiedosto:
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;
jos haluat palauttaa kylmästä varmuuskopiosta käyttämällä tätä komentosarjaa, Kirjaudu SQL*Plus-palveluun SYS: nä ja suorita skripti:
$ sqlplus / as sysdbaSQL> @coldrest.sql