Kategorie szkoleń | Egzaminy | Kontakt

Odpowiedzi (4)

  • 12

Po wydaniu polecenia commit transakcja zostaje zatwierdzona i nie można już wycofać żadnych wydanych wcześniej poleceń...Niemniej, czasami można wycofać ich efekty. Zależy to od tego, jakie czynności zostały wykonane, a także od wersji serwera Oracle. Jeśli zależy Panu na "wycofaniu" jakiejś konkretnej operacji proszę o więcej szczegółów (czego konkretnie dotyczyła sytuacja i jaka jest to wersja bazy).

  • Odpowiedział
  • @ | 02.06.2014
  • TRENER MODERATOR ALTKOM AKADEMII
  • 0

Chodzi o update danych i alter użytkownika.

Adam_Gesing
  • Odpowiedział
  • @ Adam_Gesing | 02.06.2014
    • laureat
    • 15
    • 6
    • 52
  • 5

W przypadku operacji update można wyświetlić dane przed modyfikacją, a następnie np. zapisać je do jakiejś tabeli tymczasowej np:

 

create table temp1 as select * from oryginalna_tabela where 1=2;
insert into temp1 select * from oryginalna_tabela as of timestamp sysdate-10/24/60;
commit;

 

Powyższy kod utworzy tabelę o nazwie temp1 i zapisze do nich dane z przed 10 minut (10/24/60) nie biorąc pod uwagę żadnych - nawet "zakomitowanych" - zmian, które miały miejsce w tym samym czasie.

Jeśli jednak chodzi o alter użytkownika nie ma możliwości wycofania takiej operacji. Można jedynie przywrócić stan całej bazy danych przy pomocy polecenia flashback database (od wersji 10g).

  • Odpowiedział
  • @ | 02.06.2014
  • TRENER MODERATOR ALTKOM AKADEMII
  • 0

Normalnie nie jest to możliwe do tego celu Oracle zaleca użyć grupy funkcjonalności Flashback opisanej w dokumentacji np.

http://docs.oracle.com/cd/B28359_01/appdev.111/b28424/adfns_flashback.htm#g1026131

UWAGA!!!

Przeważnie w/w opcje są wyłączone na środowiskach produkcyjnych ze względu na koszty jakie trzeba ponieść.

  • Odpowiedział
  • @ | 10.06.2014
  • TRENER MODERATOR ALTKOM AKADEMII