Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Logrotate, aby wyczyścić pliki opatrzone datą

Logrotate usuwa pliki zgodnie z kolejnością na posortowanej leksykalnie liście nazw plików dziennika, które uległy rotacji, a także według wieku pliku (przy użyciu czasu ostatniej modyfikacji pliku)

  • obróć to maksymalna liczba obróconych plików, jaką możesz znaleźć. W przypadku większej liczby rotowanych plików dziennika ich nazwy są sortowane leksykalnie, a najmniejsze leksykalnie są usuwane.

  • maksymalny definiuje inne kryteria usuwania rotowanych plików dziennika. Każdy zmieniony plik dziennika, który jest starszy niż podana liczba dni, jest usuwany. Zauważ, że data jest wykrywana z czasu ostatniej modyfikacji pliku, a nie z nazwy pliku.

  • format daty umożliwia specyficzne formatowanie daty w obróconych plikach. Strona podręcznika zauważa, że ​​format powinien skutkować poprawnym leksykalnie sortowaniem .

  • datawczoraj pozwala na używanie dat w nazwach plików dziennika jeden dzień wstecz.

Aby zachować podaną liczbę dni w codziennych rotowanych plikach (np. 7), musisz ustawić rotate na wartość 7 i możesz zignorować maxage , jeśli Twoje pliki są tworzone i obracane naprawdę codziennie.

Jeśli tworzenie dziennika nie nastąpi przez kilka dni, np. przez 14 dni liczba rotowanych plików dziennika będzie nadal taka sama (7).

maxage poprawi sytuację w scenariuszach „nie utworzono dzienników”, usuwając zawsze zbyt stare pliki. Po 7 dniach braku produkcji logów nie będzie żadnych rotowanych plików logów.

Nie możesz użyć dateformat jak pokazuje OP, ponieważ nie można go leksykalnie sortować. Zamieszanie z dateformat prawdopodobnie spowodowałoby usunięcie innych rotowanych plików dziennika, niż naprawdę chciałeś.

Wskazówka :Uruchom logrotate z wiersza poleceń za pomocą -d opcja wykonania biegu próbnego:zobaczysz, co zrobiłby logrotate, ale w rzeczywistości nic nie robi. Następnie wykonaj ręczne uruchomienie za pomocą -v (pełne), aby można było potwierdzić, że to, co zostało zrobione, jest tym, czego chcesz.

Rozwiązanie:czyste logi utworzone przez cron

Koncepcja to:

Pozwól cronowi tworzyć i aktualizować pliki dziennika, ale dokonaj niewielkich modyfikacji, aby utworzyć pliki, postępując zgodnie ze standardowymi nazwami plików logrotate przy użyciu domyślnego dateext

/data/tier2/scripts/logs/recover_standby_SID.log-`date +\%Y\%m\%d`.log

Używaj logrotate tylko do usuwania zbyt starych plików dziennika

  • celuj w nieistniejący plik dziennika /data/tier2/scripts/logs/recover_standby_SID.log
  • użyj missingok aby umożliwić czyszczenie logrotate
  • ustaw rotate wystarczająco wysoki, aby pokryć liczbę przechowywanych plików dziennika (co najmniej 7, jeśli będzie jeden „obrócony” plik dziennika dziennie, ale możesz bezpiecznie ustawić go bardzo wysoko, np. 9999)
  • ustaw maxage do 7. Spowoduje to usunięcie plików, których czas ostatniej modyfikacji przekracza 7 dni.
  • dateext służy tylko do zapewnienia, że ​​logrotate wyszukiwania starszych plików wygląda na obrócone.

Plik konfiguracyjny Logrotate wyglądałby następująco:

data/tier2/scripts/logs/recover_standby_SID.log {
    daily
    missingok
    rotate 9999
    maxage 7
    dateext
}

Rozwiązanie:obracaj bezpośrednio przez logrotate raz dziennie

Nie jestem pewien, w jaki sposób jest tworzony plik gotowości odzyskiwania źródła, ale zakładam, że Oracle lub jakiś twój skrypt jest regularnie lub stale dołączany do pliku /data/tier2/scripts/logs/recover_standby_SID.log

Koncepcja to:

  • obróć plik raz dziennie, logrotate
  • bezpośrednia praca z plikiem dziennika zawierającym dane odzyskiwania /data/tier2/scripts/logs/recover_standby_SID.log
  • daily spowoduje rotację raz dziennie (pod względem sposobu, w jaki cron rozumie daily )
  • rotate musi być ustawiona na 7 (lub dowolną wyższą liczbę).
  • maxage ustawiony na 7 (dni)
  • dateext aby użyć domyślnego przyrostka daty logrotate
  • dateyesterday używane, aby przyrostki dat w rotowanych plikach były o jeden dzień wstecz.
  • missingok do czyszczenia starszych plików, nawet jeśli nie ma nowej zawartości do rotacji.

Konfiguracja Logrotate wyglądałaby następująco:

data/tier2/scripts/logs/recover_standby_SID.log {
    daily
    missingok
    rotate 7
    maxage 7
    dateext
    dateyesterday
}

Zwróć uwagę, że być może będziesz musiał trochę pobawić się copytruncate i inne podobne opcje, które są związane z tym, w jaki sposób plik dziennika źródłowego jest tworzony przez proces zewnętrzny i jak reaguje na akt rotacji.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Uzyskaj zestaw wyników z procedury przechowywanej Oracle

  2. Błąd porównania PL/SQL w wyzwalaczu (PLS-00405)

  3. Jak grupować kolejne wiersze w SQL według wielu kolumn?

  4. błąd podzapytania i zbyt wiele wartości przy użyciu xmllagg

  5. AKTUALIZACJA ODP.NET... POWRÓT DO... wielu wierszy, Typ parametru