Redo logs – czyli transakcyjne logi bazy danych

Przetwarzanie transakcyjne w bazach danych Oracle polega na zapisywaniu efektów działania poleceń wchodzących w skład transakcji do buforów dziennika powtórzeń (redo log buffer), a w następnej kolejności do plików dziennika powtórzeń (redo logs), buforów danych (data file buffer) i plików bazodanowych (data files).

redologs

“Redologi” (*.log) rejestrują wszystkie zatwierdzone (commit) transakcje bazy danych czyli te operacje które coś zmieniają w bazie. Standardowo po instalacji bazy są trzy grupy plików redo logs o określonej wielkości. Jeśli pierwszy z plików się zapełni transakcje zapisywane są do następnego pliku i tak w koło.

Gdy baza działa w bezpiecznym trybie archiwizacji logów, zapełniony plik jest archiwizowany czyli zmienia się w plik archive logs (*.arc). Z punktu działania bazy, redo logs są bardzo ważnymi plikami wykorzystywanymi np. podczas awarii bazy, dlatego też czasami warto zwiększyć ich ilość, dodać kolejne pliki do każdej grupy i umieścić je dla bezpieczeństwa na innym dysku lub np. w przypadku pompowania duże ilości danych do bazy zwiększyć ich wielkość (inaczej będą za szybko przyrastać).

Przydatne polecenia:

Sprawdzanie statusu i położenie plików redo logs:

select l.group#,l.sequence#,l.members,l.archived,l.status,f.member
from v$log l, v$logfile f where f.group#=l.group# order by group#;

Sprawdzanie samego statusu:

select group#, status from v$log;

Istnieje kilka statusów. Najważniejsze to:

  1. INACTIVE – plik nieaktywny.
  2. UNUSED – nowy plik, nieaktywny i jeszcze nieużywany.
  3. CURRENT – poprawny plik i aktualnie używany.
  4. ACTIVE – poprawny plik, ale aktualnie nieużywany
  5. CLEARING – plik który aktualnie jest czyszczony (tworzony od nowa)
  6. INVALID – plik niedostępny lub uszkodzony

Jakiekolwiek operacje powinniśmy wykonywać tylko na plikach ze statusem INACTIVE lub UNUSED.

Jeśli potrzebujemy zmienić plik który aktualnie jest używany (CURRENT) wywołujemy polecenie switch logfile:

alter system switch logfile;

Jeśli potrzebujemy zmienić coś w pliku ze statusem ACTIVE musimy wywołać chechpoint. Polecenie checkpoint powoduje zapisanie wszystkich zatwierdzonych zmian z pamięci operacyjnej serwera do plików bazodanowych.

alter system checkpoint global;

Kasowanie grupy:

alter database drop logfile group 2;

Zakładanie nowej grupy:

alter database add logfile group 2 ( '/u01/app/oracle/oradata/hart/redo02.log')
size 50m reuse;

Dodawanie kolejnego członka do nowej grupy:

alter database add logfile member '/u01/app/oracle/oradata/hart/redo02_2.log'
reuse to group 2;

W sieci:

4 thoughts on “Redo logs – czyli transakcyjne logi bazy danych

  1. Czy mozna calkowicei wylaczyc logowanie w plikach redo.
    Nie chce posiadac zadnej historii transakcji. Baze danych backup’uje za pomoca dumpa (expdp, impdp).
    Jak pozbyc sie redo logow ??

  2. nologging powoduje tylko tyle, że operacje DDL (alter, create) nie są logowane, czyli przebudowy indeksów, tworzenie tabel itp. Operacje DML (update,delete itp.) zawsze są logowane.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

*

Releated

Oracle Listener

Oracle Listener jest komponentem odpowiedzialnym za komunikację pomiędzy serwerem baz danych a klientami. Nasłuchuje standardowo na porcie TCP 1521. Proces użytkownika komunikuje się z listenerem, który uruchamia proces serwera (jeżeli TCP to OS przydziela mu wolny port przez algorytm mapowania portów) następnie adres portu zostaje przesłany do procesu użytkownika . Dalsza komunikacja przebiega już tym […]

Oracle Standard Edition One 11G standby

Rezerwowa baza standby jest fizyczną lub logiczną kopia bazy podstawowej i działa na zasadzie rekonstruowania wyrażeń SQL ze zarchiwizowanego dziennika powtórzeń i aplikowania ich do wybranych tabel. Przeważnie utrzymywana jest ona na osobnym komputerze i w przypadku awarii bazy podstawowej, rezerwowa bazy przechodzi z trybu standby w tryb read write i przejmuje obowiązki głównej bazy. […]