Wednesday, March 26, 2014

Oracle DB - Flash Recovery Area (FRA)



Pojam Flash Recovery Area (FRA) uveden je u Oracle RDBMS verziji 10g, i on označava određeni folder, odnosno prostor na disku servera koji je predviđen za smještanje svih baznih fajlova koji su potrebni za oporavak baze u slučaju da je to potrebno uraditi, to su sledeći fajlovi: backup fajlovi, arhivirani redo log fajlovi, auto-backup fajlovi (spfile.ora, control file), jedna kopija aktuelnog control fajla, flashback logovi, itd. Na ovaj način je, u značajnoj mjeri, olakšan posao Oracle DB administratorima jer su svi fajlovi koji su potrebni za oporavak baze smješteni na jednom mjestu tako da ih administrator može brzo naći.

FRA folder bi trebalo da se nalazi na posebnom disku, nikako na istom disku na kojem se nalaze bazni fajlovi. FRA folder može biti smješten na fizičkom disku servera ili na ASM disku koji je konfigurisan na nekom storage-u.

FRA folder se definiše prilikom instalacije Oracle baze podataka. Prilikom definisanja FRA foldera mora se podesiti veličina tog foldera kao i njegova lokacija. Naravno, FRA folder se može konfigurisati i nakon istalacije baze, za to je potrebno je podesiti dva parametra:

- DB_RECOVERY_FILE_DEST_SIZE

- DB_RECOVERY_FILE_DEST


Komande su:
SQL> ALTER SYSTEM SET DB_RECOVERY_FILE_DEST_SIZE=20g SCOPE=BOTH;

SQL> ALTER SYSTEM SET DB_RECOVERY_FILE_DEST='/u01/app/oracle/flash_recovery_area' SCOPE=BOTH;


ako se koristi dizički disk na serveru, ili

SQL> ALTER SYSTEM SET DB_RECOVERY_FILE_DEST_SIZE=20g SCOPE=BOTH;

SQL> ALTER SYSTEM SET DB_RECOVERY_FILE_DEST='+FRA' SCOPE=BOTH;

ako se koristi ASM disk.

Za provjeru podešenja FRA foldera koristi se komanda:

SQL> show parameter recovery



NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

db_recovery_file_dest                string      /u01/app/oracle/flash_recovery

                                                 _area

db_recovery_file_dest_size           big integer 20G

recovery_parallelism                 integer     0


Ako je upitanju ASM disk rezultat je sledeći:

SQL> show parameter recovery



NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

db_recovery_file_dest                string      +FRA

db_recovery_file_dest_size           big integer 20G

recovery_parallelism                 integer     0



Važno je napomenuti da se FRA folder ne smije napuniti, tj. ne smije ostati bez slobodnog prostora. Ako se FRA folder ipak napuni Oracle baza prestaje sa radom jer više nema prostora za smještanje arhiviranih redo log fajlova. Zato je veoma bitan svakodnevni monitoring zauzetosti prostora u FRA folderu. Najbolje je napisati neku skriptu na nivou operativnog sisteam koja će periodično brisati starije i nepotrebne backup fajlove ili to podesiti da radi RMAN prilikom backup-a baze.






Thursday, March 20, 2014

Oracle DB - ARCHIVELOG Mod


Svaki Oracle DBA trebao bi da se pobrine da produkciona baza podataka koju on administrira radi u ARCHIVELOG modu, inače može se naći u velikim problemima u slučaju da se nešto desi sa tom bazom. 

Evo upustva kao se Oracle baza podataka konfiguriše za rad u ARCHIVELOG modu:

1. Provjeriti da li baza već radi u ARCHIVELOG modu:

Ulogovati se na bazu kao SYS user.


2. Ugasiti bazu:


3. Startovati bazu u MOUNT modu:


4. Konfigurisati ARCHIVELOG mod:


5. "Otvoriti" bazu:



6. Provjeriti da li je sve podešeno kako treba:






Tuesday, March 18, 2014

Oracle DB - Backup / Restore&Recovery


Najvažniji zadatak svakog Oracle DBA je da se pobrine da u svakom trenutku na raspolaganju ima najsvežiji backup baze u slučaju da se desi neka nepredviđena situacija u kojoj može doći do gubitka podataka u bazi. Ako bi došlo do te situacije Oracle DBA je dužan da bazu, tj. podatke u njoj, vrati u stanje u koje je bila prije nego što se problem desio.

Postoje dvije osnovne vrste backup-a Oracle baze podataka: Fizički backup i Logički backup.

Prvo ću objasniti dva osnovna tipa "kvara" koji mogu prouzrokovati gubitak ili oštećenje podataka u Oracle bazi podataka, a to su korisničke greške (logička korupcija podataka) i sistemski "ispadi" (fizička korupcija podataka).

1. Logička korupcija podataka nastaje kada korisnik na bazi svojom nepažnjom, neznanjem ili zbog propusta na aplikaciji sa kojom radi izazove gubitak ili oštećenje podataka.

2. Fizička korupcija podataka može nastati u sledećim situacijama: zbog otkazivanja diska na serveru na kojem su smješteni Oracle data fajlovi, zbog neočekivanog i naglog gašenja servera (nestanak električnog napajanja), zbog problema sa operativnim sistemom na serveru na kojem je instalirana Oracle baza podataka, zbog nepažnje administratora (slučajno brisanje baznih data fajlova), itd.

Način oporavka Oracle baze zavisi od načina na koji je napravljen backup, zato za svaku metodu backup-a postoji posebna (odgovarajuća) metoda oporavka.

Kao što sam već rekao backup Oracle baze podataka može se napraviti u vidu fizičkog backup-a cjelokupne baze podataka ili u vidu logičkog export-a (backup-a) važnih (korisničkih) podataka.

1. Fizički backup Oracle baze podataka podrazumijeva kreiranje rezervne kopije cjelokupne baze podataka, tj. svih njenih fajlova. Fizički backup Oracle baze podataka može se napraviti na dva osnovna načina, odnosno metoda: User Managed backup i RMAN backup.

- User Managed backup predstavlja kreiranje rezervnih kopija Oracle baze podataka pomoću komandi operativnog sistema na kojem je baza instalirana. Ova metoda podrazumijeva prosto kopiranje svih baznih fajlova iz foldera u kojima se oni nalaze na neku bezbjednu lokaciju (drugi disk ili neki network share). Međutim, ako baza radi u NOARCHIVELOG modu, da bi backup bio validan, tj. da bi podaci u bazi bili konzistentni, ovakav način backup-a Oracle baze podataka može se vršiti samo ako je baza ugašena (offline). Zato je za ovakav način backup-a najbolje napraviti skriptu koja će prije početka backup-a ugasiti bazu, napraviti njen backup (opciono uraditi kompresiju backup fajlova) i na kraju startovati bazu, i onda podesiti da se ta skripta pokreće u neko vrijeme kada niko ne radi na bazi. U nekim slučajevima nije moguće gasiti Oracle bazu podataka ni u kojem trenutku, da bi se napravio backup ovakve baze ta baza mora raditi u ARCHIVELOG modu.

Procedura je sledeća:

- Prvo se podesi da baza radi u backup modu komandom (kao SYS user):

SQL> alter database begin backup;


- Zatim se izvrši backup svih Oracle baznih fajlova.

- Nakon toga, podesi se da baza radi u normalnom modu komandom:

SQL>  alter database end backup;


- Na kraju izvrši se backup svih arhiviranih redo log fajlova koji su nastali u periodu od početka do kraja backup-a Oracle baze podataka.

Takođe, i ovaj vid backup-a je moguće automatizovati pisanjem backup skripti na nivou operativnog sistema.


Međutim, User Managed backup Oracle baze podataka ima par nedostataka zbog kojih se ovaj metod rijetko primjenjuje. Nedostaci ovog metoda su: ponekad komplikovana i spora restore/recovery procedura (procedura oporavka Oracle baza podataka), zatim administrator mora da pamti (ili da zna) gdje je i kad napravljen poslednji backup, kao i da se brine o tome da medium na koji se smješta backup ne ostane bez slobodnog prostora, moguće je napraviti samo full backup cjelokupne baze podataka, itd.

- RMAN backup predstavlja metod kreiranja rezervne kopije Oracle baze podataka upotrebom Recovery Manager (RMAN) alata koji se instalira zajedno sa Oracle bazom podataka. RMAN alat je vrlo moćan alat koji u značajnoj mjeri olakšava posao Oracle DB administratorima. Kada se jednom podesi RMAN preuzima na sebe cio proces backup-a i oporavka (restore/recovery) Oracle baze podataka. Pored toga RMAN omogućava i napredne metode backup-a Oracle baze podataka kao npr. inkrementalni backup.

Podešavanje RMAN-a:

Postoje dva načina podešavanja RMAN-a za backup Oracle baze podataka: podešavanje pomoću Control fajlova i podešavanje pomoću RECOVERY CATALOG-a. Ako se za podešavanje RMAN-a koriste Control fajlovi procedura je sledeća:

- Konekcija na RMAN:

$ cd $ORACLE_HOME/bin

$ rman target sys/pass@DBSID nocatalog

npr.


- Konfiguracija RMAN-a:

Komandom

RMAN> show all;


Dobijamo sva aktuelna podešenja Recovery Manager-a.


Ovdje se komandom CONFIGURE ... mogu podesiti željena podešenja. Npr. može se podesiti da RMAN čuva zadnja tri backup-a Oracle baze podataka, umjesto zadnja dva kako je to trenutno podešeno:


I tako dalje ... ovdje se može podesiti format backup-a, lokacija backup-a i još dosta parametara.


Backup Oracle baze pomoću RMAN-a:

Za backup Oracle baze pomoću RMAN-a dovoljno je pokrenuti sledeću komandu (pod uslovom da baza radi u ARCHIVELOG modu):

RMAN> backup database;


Takođe, za oporavak dovoljo je pokrenuti samo dvije komande i RMAN će uraditi oporavak baze iz poslednjeg validnog backup-a. Komande su:

RMAN> restore database;
i
RMAN> recover database;


Za konfiguraciju RMAN-a pomoću RECOVERY CATALOG-a potrebno je kreirati posebnu Oracle bazu (na posebnom serveru) u koju će se smještati podaci o backup-u produkcione Oracle baze podataka. Konfiguraciju RMAN-a pomoću RECOVERY CATALOG-a objasnići u nekom narednom post-u.


2. Logički backup podataka podrazumijeva upotrebu odgovarajućih Oracle-ovih alata za export korisničkih podataka iz Oracle baze podataka. Postoje dva ovakva alata: exp i expdp (DataPump).
Ovi alati Oracle DB administratoru omogućavaju backup samo važnih (korisničkih) podataka iz Oracle baze podataka, mada ovim se alatima može napraviti backup i cijele Oracle baze podataka.

Međutim, glavna funkcija ovih alata je omogućavanja kopiranja korisničkih podataka iz jedna Oracle baze u drugu Oracle bazu.

EXP alat je prosti alat za kreiranje export-a (backup-a) podataka iz neke schema-e.
Evo kako radi:

$ cd $ORACLE_HOME/bin

$ exp schema/pass@DBSID file=/home/oracle/schema_exp.dmp log=/home/oracle/schema_exp.log


EXPDP je napredniji alat za kreiranje export-a podataka iz neke schema-e i njega ću detaljnije opisati u nekom narednom post-u.