sql >> データベース >  >> RDS >> Oracle

ログローテーションして、日付がスタンプされたファイルをクリーンアップします

    Logrotateは、ローテーションされたログファイル名の字句的にソートされたリストの順序に従って、またファイルの経過時間(ファイルの最終変更時刻を使用)によってファイルを削除します

    • 回転 回転するファイルの最大数です。ローテーションされたログファイルの数が多い場合、それらの名前は字句的に並べ替えられ、字句的に最小のものが削除されます。

    • 最大値 ローテーションされたログファイルを削除するための別の基準を定義します。指定された日数より古いローテーションされたログファイルはすべて削除されます。日付は、ファイル名からではなく、ファイルの最終変更時刻から検出されることに注意してください。

    • dateformat ローテーションされたファイルの日付に特定のフォーマットを許可します。マニュアルページでは、形式を使用すると字句的に正しい並べ替えが行われることに注意してください。 。

    • 昨日 1日前のログファイル名で日付を使用できます。

    毎日ローテーションされるファイル(例:7)で指定された日数を保持するには、rotateを設定する必要があります 値を7にすると、maxageを無視できます。 、ファイルが本当に毎日作成およびローテーションされている場合。

    ログの作成が数日間行われない場合、例: 14日間、ローテーションされたログファイルの数は同じままです(7)。

    maxage 常に古すぎるファイルを削除することにより、「ログが生成されない」シナリオの状況を改善します。ログが作成されない状態が7日間続くと、ローテーションされたログファイルは存在しなくなります。

    dateformatは使用できません OPが示すように、字句的に並べ替えることはできません。 dateformatを台無しにする おそらく、実際に必要なもの以外のローテーションされたログファイルが削除されることになります。

    ヒント-dを使用してコマンドラインからlogrotateを実行します ドライランを実行するオプション:logrotateが何をするかがわかりますが、実際には何もしません。次に、-vを使用して手動実行を実行します (詳細)実行されたことが希望どおりであることを確認できるようにします。

    解決策:cronによって作成されたログをクリーンアップします

    コンセプトは次のとおりです。

    cronにログファイルの作成と更新を許可しますが、デフォルトのdateextを使用する場合は、logrotateの標準ファイル名に従って、ファイルを作成するために小さな変更を加えます。

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

    logrotateは、古すぎるログファイルを削除する場合にのみ使用してください

    • 存在しないログファイル/data/tier2/scripts/logs/recover_standby_SID.logを目指します
    • missingokを使用する ログローテーションのクリーンアップを実行させる
    • rotateを設定します 保持するログファイルの数をカバーするのに十分な高さ(1日に1つの「ローテーション」ログファイルがある場合は少なくとも7つですが、9999のように非常に高く設定しても安全です)
    • maxageを設定します これにより、最終変更時間が7日を超えるファイルが削除されます。
    • dateext logrotateは、ローテーションされたように見える古いファイルを確実に検索するために使用されます。

    Logrotate構成ファイルは次のようになります。

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

    解決策:1日1回logrotateで直接ローテーションします

    ソースリカバリスタンバイファイルがどのように作成されるかはわかりませんが、Oracleまたはあなたのスクリプトが定期的または継続的にファイルに追加されていると思います/data/tier2/scripts/logs/recover_standby_SID.log>

    コンセプトは次のとおりです。

    • logrotateで1日1回ファイルをローテーションします
    • リカバリデータを含むログファイルを直接操作する/data/tier2/scripts/logs/recover_standby_SID.log
    • daily 1日に1回ローテーションが発生します(cronの方法に関して) dailyを理解している )
    • rotate 7(またはそれ以上の数値)に設定する必要があります。
    • maxage 7(日)に設定
    • dateext デフォルトのログローテーション日付サフィックスを使用するには
    • dateyesterday ローテーションされたファイルの日付のサフィックスが1日前に戻るようにするために使用されます。
    • missingok ローテーションする新しいコンテンツが存在しない場合でも、古いファイルをクリーンアップします。

    Logrotateの設定は次のようになります:

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

    copytruncateで少し遊ぶ必要があるかもしれないことに注意してください および外部プロセスによって作成されたソースログファイルの方法と、ローテーションの動作にどのように反応するかに関連する他の同様のオプション。



    1. パフォーマンスの違い:INNERJOINとWHERE句に配置された条件

    2. データの配列を入力パラメータとしてOracleプロシージャに渡す

    3. MySQLで時系列データのギャップを見つける方法は?

    4. SQLAlchemyと複数のプロセスとの接続の問題