Jak dużo REDO generuje moja baza Oracle?

Wszystkie 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:

  1. 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.
  2. 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)
  3. 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

One Response to “Jak dużo REDO generuje moja baza Oracle?”

  1. Yaz Okulu Says:

    does anyone knows if there is any other information about this subject in other languages?

Leave a Reply