Sunteți pe pagina 1din 3

Funcţionalitatea FLASHBACK

Vă conectati in SQL Developer cu utilizatorul personal și parola stud.

A. Recuperarea unei tabele șterse - FLASHBACK TABLE


t TO BEFORE DROP;

1. Creaţi tabela DEPARTMENTS2 utilizând comanda:

CREATE TABLE DEPARTMENTS2 AS SELECT * FROM MS_DBA.DEPARTMENTS;

Afişaţi câte înregistrări sunt în tabela DEPARTMENTS2.

2. Ştergeţi tabela nou creată, DEPARTMENTS2 şi verificaţi printr-un select pe această


tabelă dacă s-a şters sau nu.

DROP TABLE DEPARTMENTS2;

3. Utilizaţi tehnologia FLASHBACK pentru a recupera tabela ștearsă folosind comanda:

FLASHBACK TABLE DEPARTMENTS2 TO BEFORE DROP;

Verificați dacă aceasta a fost recuperată și afișați numărul de înregistrări din tabelă.

4. Adăugaţi o nouă înregistrare în tabela DEPARTMENTS2 folosind comanda:

insert into departments2 (department_id, department_name) values (280, 'Service');

Finalizați tranzacția prin comanda COMMIT.


Selectați toate înregistrările din tabelă și rețineți momentul de timp (data, oră, minut)

B. Recuperarea înregistrărilor modificate

1. Actualizați tabela DEPARTMENTS2 utilizând comanda UPDATE prin două tranzacţii


separate astfel încât valoarea lui DEPARTMENT_ID să fie schimbată din 280 în 290 şi
apoi 300.
După fiecare comanda finalizaţi tranzacţia prin comanda COMMIT. De exemplu:

update departments2
set department_id=290
where department_id=280;
Commit;

update departments2
set department_id=300
where department_id=290;

1
Commit;

2. Activați opțiunea ROW MOVEMENT pentru recuperarea înregistrărilor modificate


eronat într-o tabelă.

ALTER TABLE departments2 ENABLE ROW MOVEMENT;

B1. Recuperarea tabelei prin precizarea unui moment de timp anterior -


FLASHBACK TABLE t TO TIMESTAMP

1. Recuperați înregistrările din tabela DEPARTMENTS2 prin tehnologia FLAHBACK


astfel încât valoarea lui DEPARTMENT_ID să fie iar 280. Înlocuiți valoarea marcată cu
galben cu momentul de timp la care doriți să reveniți

FLASHBACK TABLE departments2 TO TIMESTAMP TO_TIMESTAMP('2019-04-


10 16:10:00', 'YYYY-MM-DD HH24:MI:SS');

Verificați id-ul dacă s-a schimbat id-ul departamentului din 300 în 280 cum era inițial.

B2. Recuperarea tabelei pe baza unei interogări – FLASHBACK QUERY

1. Selectați denumirea și managerul departamentelor cu id-ul 210 și 230. Observați că


manager_id este null. Rețineți momentul de timp.

2. Actualizați tabela departments2 astfel încât departamentele 210 și 230 să aibă


manager_id=103.

update departments2
set manager_id=103
where department_id in (210, 230);
Commit;

Vizualizați înregistrările actualizate:

select * from departments2 where department_id in (210, 230);

3. Vizualizați tabela la momentul de timp de dinaintea actualizării anterioare (punctul 1):

SELECT * FROM departments2 AS OF TIMESTAMP TO_TIMESTAMP ('2019-04-10


16:16:00', 'YYYY-MM-DD HH24:MI:SS') T1
WHERE department_id in (210, 230);

4. Recuperați modificarea pentru departamentul cu id 230 la momentul de timp T1:

UPDATE departments2 SET manager_id =


(SELECT manager_id FROM departments2

2
AS OF TIMESTAMP TO_TIMESTAMP ('2019-04-10 16:16:00', 'YYYY-MM-
DD HH24:MI:SS') T1 WHERE department_id = 230)
WHERE department_id = 230;

Vizualizați departamentele cu id-ul 210 și 230:

select * from departments2 where department_id in (210, 230);

C. Vizualizarea tranzacțiilor succesive – Flashback Versions Query

Vizuațizați succesiunea tranzacțiilor de la începutul seminarului până în prezent pentru


departamentele cu id-ul 210, 230:

SELECT versions_xid, department_id, manager_id FROM departments


VERSIONS BETWEEN TIMESTAMP TO_TIMESTAMP ('2019-04-10 16:00:00', 'YYYY-
MM-DD HH24:MI:SS')
and TO_TIMESTAMP ('2019-04-10 16:25:00', 'YYYY-MM-DD HH24:MI:SS')
where department_id in (210, 230);

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