Sunteți pe pagina 1din 3

ATELIER

ORACLE

Oracle backup & recovery


A
rhivarea i recuperarea (Backup and Recovery) reprezeint unul dintre cele mai importante aspecte ale administrrii bazei de date. Chiar dac companiile opereaz cu o singur baz de date sau cu baze de date multiple stocnd sute de gigabytes sau chiar terabytes de date, au n comun un factor necesitatea de arhivare i protejare a datelor mpotriva evenimentelor nedorite (cderi hardware sau software, erori umane etc), prin dezvoltarea unei strategii de arhivare/recuperare. Singura cale de a asigura recuperarea bazei de date n timp util, fr pierderi de date, este stabilirea unui plan i utilizarea acestuia. Acest plan trebuie s acopere ct mai multe scenarii obinuite i neobinuite de recuperare. Succesul recuperrii unei baze de date ncepe cu ... apar numai n cazul n care baza de date ruleaz n modul ARCHIVELOG. Fiierul de control (control file) conine informaiile necesare pentru pornirea i funcionarea bazei de date. La montarea bazei de date se citesc informaiile din fiierele de control referitoare la numrul i localizarea fiierelor de date i a fiierelor jurnal. Pentru siguran, Oracle recomand multiplexarea fiierului de control pe discuri diferite. Fiierul de parole (password file) conine informaiile privind autentificarea utilizatorilor privilegiai. Fiierele de date (data files) conin informaiile din baza de date (obiectele si dicionarul bazei de date). Nu sunt administrate n mod direct ci prin intermediul tabelelor de spaiu. Tablespace-urile sunt formate dintr-un set de segmente i sunt utilizate pentru a grupa logic obiectele din baza de date i pentru a defini modelul de alocare a spaiului pe disc. Tablespace-ul System este cel mai important pentru baza de date Oracle, coninnd dicionarul bazei de date i segmentele de revenire sistem (system rollback segment). Pentru re-crearea segmentelor de index trebuie s avem instruciunea de creare iniial (create index). Segmentele de revenire (roolback segment) care nu conin tranzacii pot fi refcute n acelai mod (create rollback segment). Tablespace-urile asigur corespondena ntre obiectele bazei de date la nivel logic i structura fizic a bazei de date. Un tablespace poate avea unul sau mai multe fiiere de date iar pentru a-l arhiva trebuie, de fapt, s arhivm fiierele de date asociate acestuia. Numele i locaia fiierelor de date pot fi regsite utiliznd coloana name din vederea V$DATAFILE executnd interogarea:
SELECT name FROM v$datafile;

Opiuni de arhivare n vederea recuperrii BD Oracle Claudiu Ariton


Rezultatul interogrii este:
C:\ORANT\DATABASE\LOG1ORCL.ORA C:\ORANT\DATABASE\LOG2ORCL.ORA

Locaia fiierului de control poate fi regsit utiliznd coloana name din view-ul V$CONTROLFILE cu interogarea
SELECT name FROM v$controlfile;

Rezultatul interogrii este:


C:\ORANT\DATABASE\CTL1ORCL.ORA C:\ORANT\DATABASE\CTL2ORCL.ORA D:\BACKUP\CTL3ORCL.ORA

Arhivarea bazei de date


Exist trei tipuri diferite de arhivare a bazei de date Oracle (offline, online i logic). Fiecare tip arhiveaz datele n diferite moduri cu diferite cerine din partea sistemului de gestiune al bazei de date. Arhivarea unei baze de date include toate fiierele externe ale unei instane (din directorul %ORACLE_HOME%/Database) i cteodat chiar ntreg directorul n care a fost instalat produsul Oracle (%ORACLE_HOME%). Ce trebuie s arhivm ? Pentru nceput s vedem care sunt tipurile de fiiere externe cu care lucreaz Oracle: Fiierul de parametri (init<SID>.ora) conine parametrii de inializare i configurare a instanei Oracle; Fiierele jurnal (redo log)- conin informaii privind tranzaciile sau modificrile operate n baza de date. Aceste informaii sunt utilizate la recuperarea coninutului bazei de date. Dup producerea unui incident la repornirea bazei de date toate tranzaciile comise n baza de date dar care nu au fost operate fizic pe disc vor fi derulate nainte, n timp ce tranzaciile ce nu au fost comise vor fi derulate napoi. Oracle impune existena a minim dou grupuri de fiiere jurnal, dar recomand meninerea a ct mai multor fiiere jurnal (pn la 50 de grupuri pentru bazele de date mari). n plus, se recomand multiplexarea membrilor tuturor grupurilor pe discuri diferite pentru a evita pierderea accidental a fiierelor jurnal. Fiiere jurnal arhivate (archive logs) conin copii ale fiierelor jurnal necesare pentru recuperarea bazei de date. Aceste fiiere 56 NET REPORT martie 2001

Modurile ARCHIVELOG i NOARCHIVELOG


Fiierele jurnal nregistreaz toate tranzaciile active din baza de date. Pentru a conserva spaiul pe disc Oracle reutilizeaz fiierele jurnal prin scrierea lor n mod circular. Astfel, cnd toate fiierele jurnal ale bazei de date sunt pline, procesul de background LGWR va ncepe s rescrie primul fiier jurnal. Dac baza de date ruleaz n modul NOARCHIVELOG, tranzaciile din fiierele jurnal se vor pierde datorit rescrierii acestor fiiere. n modul NOARCHIVELOG doar arhivarea offline este posibil. Dac baza de date ruleaz n modul ARCHIVELOG, procesul de background ARCH va copia fiierele jurnal de pe disc n spaiul de arhivare al bazei de date, care este indicat s fie pe alt disc. Procesul ARCH copiaz fiierul jurnal n momentul n care acesta a fost scris n ntregime de ctre LGWR, dup care l marcheaz ca disponibil. Pentru a comuta ntre modul NOARCHIVELOG ARCHIVELOG se parcurg urmtorii pai: (1) Oprirea bazei de date n modul NORMAL sau IMMEDIATE. (2) Se editeaz fiierul init<sid>.ora i se adaug trei noi parametri: log_archive_start=true pornirea arhivrii automate
log_archive_dest=/disk_device/archive_s id log_archive_format=%s.log

Rezultatul interogrii este:


C:\ORANT\DATABASE\SYS1ORCL.ORA C:\ORANT\DATABASE\USR1ORCL.ORA C:\ORANT\DATABASE\RBS1ORCL.ORA C:\ORANT\DATABASE\TMP1ORCL.ORA C:\ORANT\DATABASE\USERS.DAT

Membrii fiierelor jurnal pot fi obinui din view-ul V$LOGFILE cu interogarea:


SELECT member FROM v$logfile;

destinaia fiierelor jurnal arhivate - formatul numelui fiierului jurnal arhivat (3) Pornirea bazei de date cu comanda START-

UP MOUNT

(4) Pornirea modului ARCHIVELOG:

ATELIER
ORACLE
alter database archivelog;

(5) Deschiderea bazei de date


alter database open;

Arhivare on-line
rem Descriere: Acest script realizeaza arhivarea online a tuturor fisierelor rem rem rem rem Fisier de iesire: rem arhivareonline.sql de date (corespunzatoare tabelelor de spatiu) si a fisierului de control

n modul ARCHIVELOG se poate opta ntre arhivarea automat sau manual a fiierelor jurnal (controlat de parametrul log_archive_start). alter system archive log start; - pornirea arhivrii automate fr a opri instana alter system archive log stop; - oprirea arhivrii automate fr a opri instana Pentru a determina modul de arhivare a fiierelor jurnal se utilizeaz comanda: archive log list;

create or replace procedure arhivare(unde_sa_arhivez in varchar2) is fname tname tname1 varchar2(80); varchar2(80); varchar2(80);

Arhivarea offline (la rece)


Arhivarea offline este considerat o arhivare consistent, deoarece toate blocurile bazei de date corespund unui anumit moment n timp. Arhivarea offline presupune oprirea instanei (cu o comand de oprire ce foreaz un punct de verificare NORMAL sau IMMEDIATE) i apoi copierea fiierelor externe. Opiunea ABORT va solicita ca procesul SMON (system monitory) s execute recuperarea automat la repornirea bazei de date. Deoarece recuperarea automat nu garanteaz refacerea bazei de date, nu se recomand arhivarea offline dup oprirea cu SHUTDOWN ABORT. Este indicat ca fiierul de control, care este un fiier binar, s fie generat ntr-un fiier text cu comanda:
alter database backup controlfile to C:/ORANT/DATABASE/control.txt;

cursor cur1 is select tablespace_name,file_name from v$datafile,sys.dba_data_files where enabled like '%WRITE%' and file# = file_id order by 1; begin dbms_output.enable(32000); dbms_output.put_line ('rem Arhivarea online a tuturor fisierelor de date in directorul '||unde_sa_arhivez); dbms_output.put_line('******************'); if cur1%ISOPEN then close cur1; end if; open cur1; fetch cur1 into tname,fname; tname1 := tname; dbms_output.put_line('alter tablespace '||tname||' begin backup;'); while cur1%FOUND loop if tname1 != tname then dbms_output.put_line('alter tablespace '||tname1||' end backup;'); dbms_output.put_line('******************'); dbms_output.put_line('alter tablespace '||tname||' begin backup;'); tname1 := tname; end if; dbms_output.put_line('!copy '||fname||' '||unde_sa_arhivez); fetch cur1 into tname,fname; end loop; dbms_output.put_line('alter tablespace '||tname1||' end backup;'); close cur1; dbms_output.put_line('******************'); dbms_output.put_line('rem Arhivarea fisierului de control'); dbms_output.put_line('******************'); dbms_output.put_line('alter database backup controlfile to trace;');

Aceast comand va produce un fiier text folosit pentru re-crearea fiierului de control.

Arhivarea online (la cald)


Arhivarea online este considerat o arhivare inconsistent. Arhivarea online presupune modul ARCHIVELOG i copierea fiierelor de date, fiierului de control i a fiierelor jurnal arhivate. Nu trebuie niciodat s se arhiveze i fiierele jurnal. Baza de date trebuie s fie deschis i chiar se pot executa tranzacii pe parcursul acestui tip de arhivare. Arhivarea online ncepe cu comanda ARCHIVE LOG LIST. Aceast comand arat care este fiierul jurnal curent la nceperea arhivrii. Procesul de arhivare online presupune arhivarea fiierelor de date asociate fiecrei tabele de spaiu. Paii pentru arhivarea unui tablespace: (1) Comanda Oracle pentru a porni arhivarea unei tabele de spaiu
alter tablespace tablespace_name begin backup;

(2) Comanda de copiere a sistemului de operare pentru salvarea fiierelor de date asociate tabelei de spaiu respective (3) Comanda Oracle pentru a opri arhivarea unei tabele de spaiu
alter tablespace tablespace_name end backup;

martie 2001 NET REPORT 57

ATELIER
ORACLE
Arhivare on-line (continuare)
dbms_output.put_line('alter database backup controlfile to '||''''|| unde_sa_arhivez||'/control.'|| to_char(sysdate,'DDMMYYYYHH24MISS')||''''||';'); end; /

Arhivarea logic (EXPORT)


Arhivarea logic se utilizeaz numai pe o baz de date online mic, cu puine tranzacii. n cazul n care se ruleaz aplicaii ce necesit mii de tranzacii sau chiar mai multe pe or acest tip de arhivare nu mai face parte din strategia de recuperare a datelor. n acest caz vom folosi utilitarul EXPORT(EXP80 n cazul Oracle8) doar pentru a reorganiza baza de date, de a muta scheme de la o baz de date la alta, sau pentru a redenumi anumite scheme. Arhivarea logic se poate realiza pe 3 nivele: toat baza de date, toate obiectele unui utilizator sau la nivel de tabel. Acest tip de arhivare permite recuperarea chiar i a unei tabele, n timp ce celelalte tipuri de arhivare permit doar recuperarea la nivel de ntreaga baz de date, de tabel de spaiu sau de fiier de date. Claudiu Ariton este junior Oracle DBA la Advantage Software Factory din Bucuresti. Poate fi contactat pe email la: aritonc@hotmail.com. n 99

rem Executarea procedurii va produce un fisier text cu comenzi - online.sql set serveroutput on set heading off set feedback off spool online.sql execute arhivare('c:/backup'); spool off set heading on set feedback on set serveroutput off rem Se editeaza apoi fisierul online.sql din directorul %ORACLE_HOME%/bin rem si se executa comenzile generate in el.

Bibliografie
Willard Baird, Intermedia communications How to create a complete Backup and Recovery plan Tammy Bednar, Oracle Corporation Protecting your e-Businesss Life Blood: Oracle Backup and Recovery James Lopatosky Solid Backup Policies: Insurance for Your Business Stephen Rea, Oracle Certified Professional in Database Administration Bulletproofing, Backups, and Disaster Recovery Scenarios Rama Velpuri Oracle Backup & Recovery Handbook, Oracle Press, 1997

Cei trei pai trebuie repetai pentru fiecare tabel de spaiu a unei instane. Dup arhivarea tuturor tabelelor de spaiu se va utiliza iar comanda ARCHIVE LOG LIST pentru a vedea care este fiierul jurnal curent la terminarea arhivrii. Urmtorul pas este forarea arhivrii fiierului jurnal curent utiliznd comanda: alter system switch logfile; toate fiierele jurnal arhivate vor fi copiate pe discul de backup. Ultimul pas este arhivarea fiierului de control:

alter database backup controlfile to C:/ORANT/DATABASE/control.txt;

Arhivarea online trebuie fcut cnd asupra bazei de date opereaz un numr minim de utilizatori i tranzacii (de ex noaptea) i trebuie realizat n cel mai scurt timp posibil. Un model script pentru arhivare la cald gsii n caseta Arhivare online.

58 NET REPORT martie 2001

S-ar putea să vă placă și