W tym samouczku Oracle wyjaśnimy prosty sposób zrozumienia grupy logów ponawiania vs plik vs członek.
Dzisiaj poznamy koncepcję bufora redo log w Oracle. W którym dowiemy się, co to jest bufor dziennika redo, jak działa i jaka jest jego rola w architekturze Oracle.
Jeśli chcesz zrozumieć architekturę Oracle, naprawdę ważne jest, aby zrozumieć działanie bufora dziennika przeróbek. Poniższy artykuł pomoże Ci również odpowiedzieć na pytania podczas rozmowy kwalifikacyjnej.
Zrozumienie grupy logów ponawiania vs plik vs członek
Co to jest bufor dziennika przeróbek?
Jest to niewielka alokacja pamięci, zazwyczaj domyślnie około 14 MB. Jest to bufor cykliczny. Po zapełnieniu ponownie zaczyna zapisywać od góry, po zapełnieniu nadpisuje dane.
Co to jest ponowny wpis i zmiana wektora?
Instancja bazy danych Oracle zapisuje wszystkie transakcje DML/DDL w buforze dziennika redo SGA w postaci wpisów redo. Pojedynczy wyciąg w transakcji będzie skutkował co najmniej jednym wpisem ponawiania. Wszystkie te wpisy dotyczące ponownego wykonania są zbiorczo nazywane wektorem zmiany lub wektorem ponownego wykonania.
Każdy wpis redo składa się z instrukcji redo i undo, na przykład:
TABELA EMP
Praca | Nazwa | Dział |
---|---|---|
1 | Jon | 10 |
2 | Tony | 20 |
3 | Laura | 50 |
4 | Tygrys | 10 |
5 | Scott | 10 |
sql>delete empno from emp where deptno=10;
W powyższym przykładzie tabela emp zawiera 3 rekordy dla deptno=10. Tak więc Oracle utworzy 3 wpisy ponawiania dla powyższej instrukcji, a wpisy te zostaną zapisane w buforze dziennika ponawiania. Te 3 wpisy ponawiania są zbiorczo nazywane wektorem zmiany lub wektorem ponawiania.
Wektor zmiany to nic innego jak liczba wierszy, których dotyczy jedna operacja. Bufor dziennika redo przechwytuje transakcje użytkownika, a także przechwytuje efekt zerowy (instrukcja cofania) dla tej transakcji.
Praca procesu LGWR
Ponieważ rozmiar bufora dziennika ponawiania jest mały i nie może rosnąć dynamicznie, te zarejestrowane wpisy ponawiania muszą być okresowo zapisywane na dysku w pliku dziennika ponawiania online. Jest to często nazywane opróżnianiem bufora dziennika ponownego wykonania, a zadanie zapisania tych wpisów dotyczących ponownego wykonania na dysku jest wykonywane przez proces LGWR.
Kiedy LGWR zapisuje ponownie wpisy na dysku?
LGWR dość agresywnie zapisuje te wpisy na dysku. Poniżej znajdują się zdarzenia, w których LGWR zapisuje wpisy ponawiania na dysku.
- Gdy bufor jest zapełniony w 1/3
- Gdy w buforze dziennika zmian jest dostępny 1 MB wektorów zmian, oczekujących na zapis
- Co 3 sekundy
- Za każdym razem, gdy pojawia się punkt kontrolny
- Kiedy użytkownik dokonuje transakcji
Parametr do ustawienia rozmiaru bufora dziennika ponawiania
log_buffer=x bajtów
Struktura bufora dziennika redo
Architektura ponawiania składa się z 3 rzeczy
- Ponów wątek (logiczny)
- Grupy Redlog (logiczne)
- Pliki członka Redlog (fizyczne)
1. Co to jest wątek ponawiania dziennika?
- Podczas tworzenia pliku kontrolnego określa parametr „MAXINSTANCES”.
- Wątek ponawiania składa się z grup ponawiania. Wątek ponawiania musi być włączony, aby działał.
- W środowisku RAC możesz powiązać wątek ponownego wykonania z konkretną instancją za pomocą parametru init.ora „thread”.
W bazie danych innej niż RAC byłby w większości jeden wątek (wątek =1)
2. Rozumiesz grupę logów Redo i jej status?
-Podczas tworzenia pliku kontrolnego jest on podawany jako parametr „MAXLOGFILES”.
-Grupa dziennika ponawiania jest zbiorem identycznych plików członkowskich dziennika ponawiania.
-Ale dla lepszej odporności na błędy, często przechowuje się dwa pliki członkowskie dziennika ponawiania w każdej grupie dziennika ponawiania.
- Jeśli ktoś się zgubi, nie ma to żadnego wpływu. Pliki składowe dziennika ponownego wykonania są identyczne (kopie lustrzane)
LGWR zapisuje równolegle do wszystkich członków danej grupy dzienników przeróbek
W dowolnym momencie proces LGWR zapisuje tylko jedną grupę dzienników przeróbek. Grupa dzienników ponawiania jest naprawiona, co oznacza, że pliki członków dziennika ponawiania nie mogą dynamicznie rosnąć.
Grupa dzienników ponawiania, w której aktualnie zapisuje proces LGWR, ma status „bieżący”
Gdy grupa dzienników ponawiania jest pełna, proces LGWR przełączy następną grupę dzienników ponawiania.
Poprzednia grupa pokaże status „AKTYWNY”, a po pewnym czasie status będzie „NIEAKTYWNY”
BIEŻĄCY => AKTYWNY => NIEAKTYWNY => BIEŻĄCY => AKTYWNY => NIEAKTYWNY …………………………………
BIEŻĄCY status oznacza, że Oracle aktualnie zapisuje w tym buforze
AKTYWNE Punkt kontrolny ponawiania wpisów w tym buforze jest w toku
NIEAKTYWNE status oznacza, że dziennik przeróbek został zaznaczony i można go natychmiast nadpisać.
Nie można zmienić rozmiaru utworzonej grupy dzienników ponawiania, ale zawsze upuszczasz i ponownie tworzysz grupę dzienników ponawiania o różnych rozmiarach. Nie możesz usunąć grupy ponawiania logów ze statusem „BIEŻĄCY” lub „AKTYWNY”.
Jak przełączyć grupę ponawiania logów?
Zwykle LGWR automatycznie przełącza się między grupami ponawiania dziennika, ale możesz ręcznie przełączać się z jednej grupy ponawiania dziennika do innej za pomocą polecenia.
sql>alter system switch logfile ;
Za każdym razem, gdy LGWR pobiera nową grupę dzienników przeróbek i przypisuje jej monotonnie rosnący numer o nazwie „Numer sekwencyjny dziennika” lub „Sekwencja nr”. Możesz zapytać o metadane grup dzienników ponawiania za pomocą widoku:- v$log Grupy dzienników ponawiania są zapisywane przy użyciu fizycznego rozmiaru bloku dysku (sektor 512 bajtów)
Jak dodać nową grupę logów przeróbek
sql>alter database add logfile group 3 ('/path/to/member1.log', '/path/to/member2.log') size 100m reuse;
Tutaj znaczenie ponownego użycia mówi, ponownie użyj pliku member 1.log lub member2.log, jeśli już istnieje w tej samej ścieżce.
Jak usunąć grupę ponawiania logów
Możesz usunąć grupy ponawiania logów pod warunkiem, że ich stan nie jest AKTUALNY lub AKTYWNY. Również po zastosowaniu tego polecenia liczba dostępnych grup dzienników ponownego przetwarzania powinna wynosić 2 lub więcej.
sql>alter database drop logfile groups 3;
3. Ponów logowanie plików członków (fizyczne)
Podczas tworzenia pliku kontrolnego określa go parametr „MAXLOGMEMBERS”. Pliki członków dziennika ponownego wykonania są fizycznie dostępne na poziomie systemu operacyjnego. Rozmiar pliku jest ustalony w momencie ponownego tworzenia grupy logów.
Plik nie może dynamicznie rosnąć. LGWR zapisuje równolegle do wszystkich członków danej grupy dzienników przeróbek.
Pliki członków w grupie dzienników ponawiania są identyczne. Możesz zapytać o informacje o stanie z widoku v$logfile
Jak dodać nowego członka do istniejącej grupy?
sql>alter database add logfile member '/path/to/new/member1.log' to group 3;
Możesz usunąć członka z grupy, pod warunkiem, że pozostanie jeden członek, a status grupy nie jest aktualny
sql>alter database drop logfile member '/path/to/member_to_be_deleted.log';
Aby zapytać o szczegóły przełączania dziennika ponawiania
możesz zapytać v$log-history
sql>select count(*), trunc(first_time) from v$log_history;
grupa, aby nadpisać wpisy ponawiania
Dlaczego widzę „punkt kontrolny nieukończony” w alert.log
Gdy LGWR dotrze do grupy logów ponawiania, aby nadpisać wpisy ponawiania i do tego czasu, jeśli punkt kontrolny tej grupy jest w toku, zobaczysz komunikat w dzienniku alertów „punkt kontrolny niekompletny” Z tego powodu LGWR nie może natychmiast nadpisać grupy logów ponawiania.
W związku z tym Oracle uruchomi „punkt kontrolny”, który opróżni brudne bufory spowodowane ponownymi wpisami na dysku. Dopiero po tym LGWR może nadpisać do bufora ponownego wykonania. Oznacza to, że LGWR musi trochę poczekać, co nie jest dobre. Aby przezwyciężyć albo dodaj więcej grup ponawiania logów i/lub zwiększ rozmiar grup ponów logów.
Mamy nadzieję, że powyższe szczegóły pomogą Ci lepiej zrozumieć bufor dziennika ponownego przetwarzania.
To jest koniec samouczka, zrozumienie ponownych grup logów, plików i członków.