Recovery Oracle baze pomoću RMAN-a

Wednesday, 31.10.2007 – Dejan

U prethodnom tekstu sam pisao kako obaviti backup Oracle baze pomoću RMAN-a, u kojem sam pored ostalog naveo i da ću pokazati kako se vrši povratak (recovery) Oracle baze pomoću RMAN-a. Pošto je taj tekst ionako bio dug, odlučio sam ovaj dio objaviti kao nastavak.

Od mnogih mogućih situacija u kojima može doći do problema u radu baze, ja ću objasniti dva:
– Povratak izgubljenog/oštećenog SYSTEM tablespace
– Povratak obične datoteke ili tablespacea (NON-SYSTEM)

Prvi slučaj: Povratak izgubljenog SYSTEM tablespacea
(recovering from the loss of the SYSTEM tablespace)

Da bih pokazao kako obaviti povratak izgubljenog SYSTEM tablespacea, simuliraću gubitak datoteke SYSTEM01.DBF, koja pripada SYSTEM tablespaceu. Ukoliko vi zaista imate izgubljenu datoteku za SYSTEM tablespace, kao što je npr. prikazano u koraku 4, onda preskočite odmah na korak 5.

1. Ugasiti bazu:
SQL> shutdown immediate;

2. Pronaći SYSTEM01.DBF na sistemu i preimenovati ju u SYSTEM01_bkp.DBF.

3. Bazu ponovo pokrenuti:
SQL> startup;

4. Trebali biste dobiti ovakvu poruku:
ORA-01157: cannot identify/lock data file 1 - see DBWR trace file
ORA-01110: data file 1: 'E:\oracle\SYSTEM01.DBF'

ili ako koristite njemački jezik:
ORA-01157: Datendatei 1 kann nicht identifiziert/gesperrt werden - siehe DBWR-Trace-Datei
ORA-01110: Datendatei 1: 'E:\oracle\SYSTEM01.DBF'

To znači da je SYSTEM tablespace nedostupan i samim tim baza ne može funkcionisati.
Sada nam u pomoć dolazi RMAN, pomoću kojeg ćemo vratiti bazu u normalno stanje.

5. Spojimo se RMAN-om na bazu i recovery katalog, pa potom ugasimo bazu i pokrenemo ju u MOUNT stanje. Biće učitan controlfile, ali u ovoj fazi se neće vršiti provjera ispravnosti i dostupnosti datoteka od kojih se sastoji svaki tablespace. MOUNT stanje na omogućava da popravimo oštećene ili nedostupne datoteke, nakon čega možemo ponovo pokrenuti bazu u normalnom stanju:
C:\> rman target sys/sysPass@productionDB catalog rman_cat/rmanPass@katalogDB
RMAN> startup force mount;

6. Iz backup lokacije prebacimo pripadajuću datoteku za SYSTEM tablespace:
RMAN> restore tablespace SYSTEM;

7. Povratimo SYSTEM tablespace u normalno stanje:
RMAN> recover tablespace SYSTEM;

8. I konačno otvorimo bazu za normalan rad:
RMAN> alter database open;

Kako to sve izgleda u praksi?

C:\> rman target sys/sysPass@productionDB catalog rman_cat/rmanPass@katalogDB 
Recovery Manager: Release 10.2.0.3.0 - Production on Tue Oct 30 11:30:02 2007 
Copyright (c) 1982, 2005, Oracle.  All rights reserved.  
connected to target database: PRODUCTIONDB (DBID=1243025471, not open)  
connected to recovery catalog database  

RMAN> startup force mount;
Oracle instance started
database mounted  

Total System Global Area   10737418240 bytes
Fixed Size                     2072800 bytes
Variable Size              10636758816 bytes
Database Buffers              83886080 bytes
Redo Buffers                  14700544 bytes

RMAN> restore tablespace system;
Starting restore at 30-OCT-07
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=652 devtype=DISK
allocated channel: ORA_DISK_2
channel ORA_DISK_2: sid=651 devtype=DISK
channel ORA_DISK_1: restoring datafile 00001
input datafile copy recid=443 stamp=617116129
filename=H:\BACKUP\RMAN\DATA_D-PRODUCTIONDB_I-1243025471_TS-SYSTEM_FNO-1_AKICEQDQ

destination for restore of datafile 00001: E:\oracle\SYSTEM01.DBF
channel ORA_DISK_1: copied datafile copy of datafile 00001
output filename=E:\oracle\SYSTEM01.DBF recid=513 stamp=617196354

Finished restore at 30-OCT-07

RMAN> recover tablespace system;
Starting recover at 30-OCT-07
using channel ORA_DISK_1
using channel ORA_DISK_2
starting media recovery
media recovery complete, elapsed time: 00:00:09

Finished recover at 30-OCT-07

RMAN> alter database open;
database opened

Drugi slučaj: Povratak obične datoteke ili običnog tablespacea
(recovering online from the loss of the datafile or tablespace)

Ovu situaciju ću prikazati praktičnim primjerom bez puno objašnjavanja, jer smatram da se vide sve potrebne informacije.

RMAN> shutdown immediate
database closed
database dismounted
Oracle instance shut down

RMAN> startup;
connected to target database (not started)
Oracle instance started
database mounted

RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of startup command at 10/30/2007 14:26:56
ORA-01157: cannot identify/lock data file 3 - see DBWR trace file
ORA-01110: data file 3: 'H:\oracle\INDX01.DBF'

RMAN>
RMAN> sql "alter database datafile 3 offline";
sql statement: alter database datafile 3 offline

RMAN> alter database open;
database opened

RMAN> restore datafile 3;
Starting restore at 30-OCT-07
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=647 devtype=DISK
allocated channel: ORA_DISK_2
channel ORA_DISK_2: sid=643 devtype=DISK
channel ORA_DISK_1: restoring datafile 00003
input datafile copy recid=435 stamp=617116127 filename=H:\BACKUP\RMAN\INDX01.DBF

destination for restore of datafile 00003: H:\oracle\INDX01.DBF
channel ORA_DISK_1: copied datafile copy of datafile 00003
output filename=H:\oracle\INDX01.DBF recid=514 stamp=617206971

Finished restore at 30-OCT-07

RMAN> recover datafile 3;
Starting recover at 30-OCT-07
using channel ORA_DISK_1
using channel ORA_DISK_2
starting media recovery
media recovery complete, elapsed time: 00:00:04

Finished recover at 30-OCT-07

Vi biste još?

E, pa nema. 😀
Mislim, ima toliko mnogo mogućih situacija u kojima može doći do problema u radu baze (media failure, instance failure, datafile loss/corupption i td.), tako da nema šanse objasniti ih i prikazati u jednom blog tekstu. Više primjera imate u već spomenutoj knjizi iz prvog dijela teksta (Oracle database 10g: RMAN Backup & Recovery), kao i na internetu. Google je moj najbolji prijatelj – neka bude i vaš! 😀

  1. 4 Responses to “Recovery Oracle baze pomoću RMAN-a”

  2. Knjiga koju spominjes zaista vrhunska.Ja sam je koristio za pisanje diplomskog na temu Backup Oracle vs MySQL.

    Jos jedno pitanje.Posto stalno koristim 10g XE,da li u sklopu 10g standard verziej dolazi neki graficki interfejs za backup i uopste kolika je razlika izmedju standard i XE verzije?

    Pozz,
    Djordje

    By Djordje on Nov 2, 2007

  3. E, kad uradis diplomski, pitaj mentora/profesora smijes li objaviti taj rad, pa ga mozes okaciti ovdje. 😀

    Nemam iskustva sa 10g XE, pa ti ne mogu nista reci u vezi toga – samo Enterprise Edition. 😀

    By Dejan on Nov 2, 2007

  4. Burzuj. 😛

    By Djordje on Nov 4, 2007

  5. “Graficki interface za backup” generalno ne postoji ali postoji graficki interface za RMAN-a (RMAN je samo jedna, verovatno najbolja, od mogucnosti za primenu backup metoda). Graficki inteface za RMAN je ustvari upakovan u Enterprise Manager (Database/Grid Control) koji je koliko ja znam deo Standard Edition verzije 10g. Kao i Dejan i ja radim najcesce sa Enterprise Edition a tamo je sve po defaultu ukljuceno. Kada startujes Enterprise Manager, opcije vezane za RMAN su ti dostupne pod tabom Maintenace/Backup and Recovery. Inace kod XE verzije bas i nemas na raspolaganju neki izbor, ili ces raditi sa RMAN-om iz komandne linije ili mozes da koristis dve jednostavne predefinisane Backup i Recovery opcije (na Windowsu dostupne pod Start/Programs/OracleXE). Ako te interesuje sta se tacno krije iza te dve predefinisane komande prouci malo batch fajlove (na windowsu npr. C:\oracle\oraXE\app\oracle\product\10.2.0\server\BIN\Restore.bat i C:\oracle\oraXE\app\oracle\product\10.2.0\server\BIN\Backup.bat). Fajl mozes editovati po svojoj potrebi i konfigurisati ga na osnovu tvoje Backup strategije.

    Toliko, da ne gnjavim dalje…
    Pitaj ako te jos nesto zanima

    By igor on Nov 5, 2007

Post a Comment