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).
“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:
- INACTIVE – plik nieaktywny.
- UNUSED – nowy plik, nieaktywny i jeszcze nieużywany.
- CURRENT – poprawny plik i aktualnie używany.
- ACTIVE – poprawny plik, ale aktualnie nieużywany
- CLEARING – plik który aktualnie jest czyszczony (tworzony od nowa)
- 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:
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 ??
Nie można. Pliki redo to niezbędny mechanizm bazy danych. Bez nich tranzakcje nie miały by sensu.
@admin
mozna, odsylam do opcji nologging
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.