Sunteți pe pagina 1din 3

ATELIER

ORACLE

Oracle backup & recovery

Opiuni de arhivare n vederea recuperrii BD Oracle Claudiu Ariton


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 ...

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

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:

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

Modurile ARCHIVELOG i NOARCHIVELOG

C:\ORANT\DATABASE\RBS1ORCL.ORA

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

C:\ORANT\DATABASE\TMP1ORCL.ORA

log_archive_dest=/disk_device/archive_s

C:\ORANT\DATABASE\USERS.DAT

id

SELECT name FROM v$datafile;

Rezultatul interogrii este:


C:\ORANT\DATABASE\SYS1ORCL.ORA
C:\ORANT\DATABASE\USR1ORCL.ORA

destinaia fiierelor jurnal arhivate


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

log_archive_format=%s.log

Membrii fiierelor jurnal pot fi obinui din


view-ul V$LOGFILE cu interogarea:

UP MOUNT
SELECT member FROM v$logfile;

(4) Pornirea modului ARCHIVELOG:

ATELIER
ORACLE
alter database archivelog;

(5) Deschiderea bazei de date

Arhivare on-line

alter database open;

rem Descriere: Acest script realizeaza arhivarea online a tuturor fisierelor

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;

rem

de date (corespunzatoare tabelelor de spatiu) si

rem

a fisierului de control

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;

rem
rem Fisier de iesire:

arhivareonline.sql

rem

create or replace procedure arhivare(unde_sa_arhivez in varchar2)


is
fname

varchar2(80);

tname

varchar2(80);

tname1

varchar2(80);

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;

Aceast comand va produce un fiier text


folosit pentru re-crearea fiierului de control.

open cur1;

Arhivarea online (la cald)

fetch cur1 into tname,fname;

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

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;');

backup;

martie 2001 NET REPORT 57

ATELIER
ORACLE
Arhivarea logic (EXPORT)

Arhivare on-line (continuare)


dbms_output.put_line('alter database backup controlfile to '||''''||
unde_sa_arhivez||'/control.'||
to_char(sysdate,'DDMMYYYYHH24MISS')||''''||';');
end;
/

rem Executarea procedurii va produce un fisier text cu comenzi - online.sql


set serveroutput on
set heading off
set feedback off
spool online.sql

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.

execute arhivare('c:/backup');

Claudiu Ariton este junior Oracle DBA la Advantage Software Factory din Bucuresti. Poate fi
contactat pe email la: aritonc@hotmail.com. n 99

spool off
set heading on
set feedback on

Bibliografie

set serveroutput off


rem Se editeaza apoi fisierul online.sql din directorul %ORACLE_HOME%/bin
rem si se executa comenzile generate in el.

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:

58 NET REPORT martie 2001

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.

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

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