Jak dużo REDO generuje moja baza Oracle?
styczeń 17th, 2008Wszystkie infromacje zmieniane w bazie Oracle, zanim zostaną zapisane do plików z danymi ( datafile ) są zapisywane do REDO logów.
REDO jest swoistym “biciem serca” bazy. Wszytkie dane i segmenty wycofania ( undo / rollback segments ) są zapisywane w pierwszej kolejności do REDO logów.
REDO logi są uzywane w przypadku awarii instancji ( złożenia się procesów/maszyny ) do automatycznego otworzenia bazy ( instance recovery ).
Podczas instance recovery odczytywane informacje zawarte w REDO logach i zapisywane do plików bazy dancyh. Transakcje zakończone są zatwierdzane ( commit ), a transakcje nie zakończone są wycofane ( rollback ).
Informacja o ilości REDO generowanych przez bazę, a właściwie przez aplikacje są często potrzbne do określenia:
- Czy aplikacja jest poprawnie zaprojektowana i napisana? ( Im mniej REDO tym lepiej ) Czasem wprowadzane poprawki i zmiany aplikacji gwałtownie zwiększają ilośc REDO.
- Do okreslenia rozmiaru obszaru dla przechowywania i backup’owania ARCHIVE logów. ( ARCHIVE log to kopia REDO logu, używana przy odtwarzaniu bazy z backup’u)
- Do ustalenia właściwego rozmiaru REDO log’ów i ilości grup logów.
Poniższe zapytanie pokazuje ilość przełączeń redo logów i rozmiar dancyh w ostatnich 30 dniach:
select count(1) "Switch#"
,to_char(count(1) * (select avg(bytes) from v$log) / 1024 / 1024
,'999G999G999') "Redo Size [MB]"
,trunc(first_time) "Date"
from v$log_history
where first_time between trunc(sysdate) - 30 and trunc(sysdate)
group by trunc(first_time)
order by trunc(first_time) desc