Recovery Oracle baze pomoću RMAN-a
Wednesday, 31.10.2007 – DejanU 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š! 😀
4 Responses to “Recovery Oracle baze pomoću RMAN-a”
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
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
Burzuj. 😛
By Djordje on Nov 4, 2007
“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