Oracle官方提供清理偵聽器日志的4種方式


 

Oracle官方提供清理偵聽器日志的4種方式

 

偵聽器日志,例如:

[root@dev-testdb trace]# ll /u01/app/grid/diag/tnslsnr/dev-testdb/listener/trace/listener.log 
-rw-r----- 1 grid oinstall 1129 Jan 20 10:35 /u01/app/grid/diag/tnslsnr/dev-testdb/listener/trace/listener.log

 

 

根據實際執行和Why Are My Listener Logs & Traces Not Purged By The ADR (文檔 ID 1438242.1)可知,不會被如下命令adrci的交互式命令清除:

purge -age <min> -type alert

該命令只會清理xml格式的文本。

 

以11g為例子,總結了官方提供的4種清除方式。

  1. ARCHIVED How to Rotate or Purge Listener Log Data to Avoid Large listener.log File (文檔 ID 1457196.1)
    停止監聽后刪除或重命名日志,下次啟動偵聽器會創建新的日志
  2. ARCHIVED How to Rotate or Purge Listener Log Data to Avoid Large listener.log File (文檔 ID 1457196.1)
    LSNRCTL> set current_listener <listenername>
    LSNRCTL> set log_status off
    在另一個窗口中重命名日志文件。然后返回上一個窗口
    LSNRCTL> set log_status on
    這將創建一個新的空 listener.log 文件,該文件將繼續記錄。  
  3. Excessive Listener XML FILES CREATED IN $GRID_HOMElogdiagtnslsnr (文檔 ID 1927067.1)
    Adrci Purge Does Not Clear the Text-formatted Alert.Log located in the Trace Folder (文檔 ID 751082.1)
    How To Purge Listener Log.Xml File (文檔 ID 816871.1)
    這3篇官方文檔指出adrci不會清理文本格式的 alert.log 文件,只修改 XML 格式的警報文件,而不是 Text 格式的警報文件。
    需要手工編輯或者刪除文本基礎.log的文件,例如:對文件進行拆分,或者使用 Unix 上的“vi”之類的編輯器來清空文件等...
  4. echo "" >| /u01/app/grid/diag/tnslsnr/dev-testdb/listener/trace/listener.log
    咋一看簡單且暴力,一點也不優雅。
    purgeLogs Cleanup traces, logs in one command (文檔 ID 2081655.1)中提供了一個腳本purgeLogs,需要使用root用戶執行並且需要有/etc/init.d/init.ohasd腳本,即單機環境無法使用。
    下邊詳細說說這第4點。

echo方式清空日志實際上就是purgeLogs這個腳本的處理方式。
腳本功能比較強大,可以清理osw,tfa,rdbms等等的信息文件,不僅僅限於日志。

[root@dev-testdb trace]# /soft/purgeLogs  -h
Usage:
     purgeLogs [ -days <days> [ -aud ] [ -lsnr ] ] |
               [ -orcl <days> [ -aud ] [ -lsnr ] ] |
               [ -tfa <days> ] | 
               [ -osw <days> ] | 
               [ -oda <days> ] | 
               [ -extra '<folder>':<days> | [, '<folder>':<days>] ]
               [ -automigrate ]
               [ -dryrun ]

     purgeLogs OPTIONS
      -days  <days>             Purge orcl,tfa,osw,oda components logs & traces older then # days
      -orcl  <days>             Purge only GI/RDBMS logs & traces (Default 30 days)
      -tfa   <days>             Purge only TFA repository older then # days (Default 30 days)
      -osw   <days>             Purge only OSW archives older then # days (Default 30 days)
      -oda   <days>             Purge only ODA logs and trace older then # days (Default 30 days)
      -extra '<folder>':<days>  Purge only files in user specified folders (Default 30 days)
      -aud                      Purge Audit logs based on '-orcl <days>' option
      -lsnr                     It will force the cleanup of listeners log independently by the age
      -dryrun                   It will show the purge commands w/o execute them
      -automigrate              It will run the adrci schema migrate commands in case of DIA-49803
      -h                        Display this help and exit

     Example:
       purgeLogs
       purgeLogs -days 20
       purgeLogs -orcl 50
       purgeLogs -orcl 50 -aud -lsnr
       purgeLogs -tfa  50
       purgeLogs -osw  20 -oda 10
       purgeLogs -orcl 20 -osw 20 -oda 10
       purgeLogs -orcl 20 -osw 20 -oda 10 -extra /tmp:10,/var/log:20

 

根據幫助手冊,刪除GI/RDBMS日志和trace文件,同時刪除偵聽日志的指令:

/soft/purgeLogs -orcl  10 -lsnr -aud -dryrun

 

輸出案例:

[root@dev-testdb ~]# /soft/purgeLogs -orcl  10 -lsnr -aud -dryrun

│▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒│
 purgeLogs version: 1.65
 Copyright (c) 2015-2020 Oracle and/or its affiliates.
 -------------------------------------------------------
 Author: Ruggero Citton <ruggero.citton@oracle.com>
 RAC Pack, Cloud Innovation and Solution Engineering Team
│▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒│

2022-01-20 11:01:04: I DRYRUN - Cleaning up Listener logs, ORACLE_BASE is '/u01/app/grid'
        echo "" >| /u01/app/grid/diag/tnslsnr/dev-testdb/listener/trace/listener.log 2022-01-20 11:01:04: I DRYRUN - Cleaning up SCAN1 Listener logs, ORACLE_BASE is '/u01/app/grid'
2022-01-20 11:01:04: W Path /u01/app/grid/diag/tnslsnr/dev-testdb/listener_scan1/trace does not exist, SCAN1 Listener logs cleanup skipped...
2022-01-20 11:01:04: I DRYRUN - Cleaning up SCAN2 Listener logs, ORACLE_BASE is '/u01/app/grid'
2022-01-20 11:01:04: W Path /u01/app/grid/diag/tnslsnr/dev-testdb/listener_scan2/trace does not exist, SCAN2 Listener logs cleanup skipped...
2022-01-20 11:01:04: I DRYRUN - Cleaning up SCAN3 Listener logs, ORACLE_BASE is '/u01/app/grid'
2022-01-20 11:01:04: W Path /u01/app/grid/diag/tnslsnr/dev-testdb/listener_scan3/trace does not exist, SCAN3 Listener logs cleanup skipped...
2022-01-20 11:01:04: I DRYRUN - Cleaning up Management Listener logs, ORACLE_BASE is '/u01/app/grid'
2022-01-20 11:01:04: W Path /u01/app/grid/diag/tnslsnr/dev-testdb/mgmtlsnr/trace does not exist, Management Listener logs cleanup skipped...
2022-01-20 11:01:04: I DRYRUN - Cleaning up ASM Listener logs, ORACLE_BASE is '/u01/app/grid'
2022-01-20 11:01:04: W Path /u01/app/grid/diag/tnslsnr/dev-testdb/asmnet1lsnr_asm/trace does not exist, ASM Listener logs cleanup skipped...
2022-01-20 11:01:04: I GI Audit logs purge started
2022-01-20 11:01:04: I DRYRUN - Purging GI Audit logs under '/u01/app/11.2.0/grid/rdbms/audit' older then 10 days
        rm /u01/app/11.2.0/grid/rdbms/audit/null_ora_26047_20210517200222237009143795.aud
        rm /u01/app/11.2.0/grid/rdbms/audit/+ASM1_ora_26076_20210517200222587121143795.aud
        rm /u01/app/11.2.0/grid/rdbms/audit/+ASM1_ora_26076_20210517200222588926143795.aud
        rm /u01/app/11.2.0/grid/rdbms/audit/+ASM1_ora_26089_20210517200222906375143795.aud
        rm /u01/app/11.2.0/grid/rdbms/audit/+ASM1_ora_26089_20210517200259048887143795.aud
        rm /u01/app/11.2.0/grid/rdbms/audit/+ASM1_ora_26201_20210517200259071998143795.aud
        ...省略部分內容...
2022-01-20 11:01:04: I DRYRUN - Purging GI Audit logs under '/u01/app/grid/admin/_mgmtdb/adump' older then 10 days
2022-01-20 11:01:04: W Path /u01/app/grid/admin/_mgmtdb/adump does not exist, GI Audit archive logs cleanup skipped...
~~~~~~~~~~~~~~~~~~~~~~adrci GI purge started~~~~~~~~~~~~~~~~~~~~~~
2022-01-20 11:01:04: I Checking if this is an Oracle Restart environment
2022-01-20 11:01:04: I DRYRUN - adrci GI purging diagnostic destination diag/asm/+asm/+ASM1 older than 10 days
        su grid -c 'export ORACLE_HOME=/u01/app/11.2.0/grid;/u01/app/11.2.0/grid/bin/adrci exec="set homepath diag/asm/+asm/+ASM1;purge -age 14400 -type ALERT "'
        su grid -c 'export ORACLE_HOME=/u01/app/11.2.0/grid;/u01/app/11.2.0/grid/bin/adrci exec="set homepath diag/asm/+asm/+ASM1;purge -age 14400 -type INCIDENT "'
        su grid -c 'export ORACLE_HOME=/u01/app/11.2.0/grid;/u01/app/11.2.0/grid/bin/adrci exec="set homepath diag/asm/+asm/+ASM1;purge -age 14400 -type TRACE "'
        su grid -c 'export ORACLE_HOME=/u01/app/11.2.0/grid;/u01/app/11.2.0/grid/bin/adrci exec="set homepath diag/asm/+asm/+ASM1;purge -age 14400 -type CDUMP "'
        su grid -c 'export ORACLE_HOME=/u01/app/11.2.0/grid;/u01/app/11.2.0/grid/bin/adrci exec="set homepath diag/asm/+asm/+ASM1;purge -age 14400 -type STAGE "'
        su grid -c 'export ORACLE_HOME=/u01/app/11.2.0/grid;/u01/app/11.2.0/grid/bin/adrci exec="set homepath diag/asm/+asm/+ASM1;purge -age 14400 -type SWEEP "'
        su grid -c 'export ORACLE_HOME=/u01/app/11.2.0/grid;/u01/app/11.2.0/grid/bin/adrci exec="set homepath diag/asm/+asm/+ASM1;purge -age 14400 -type HM "'
        su grid -c 'export ORACLE_HOME=/u01/app/11.2.0/grid;/u01/app/11.2.0/grid/bin/adrci exec="set homepath diag/asm/+asm/+ASM1;purge -age 14400 -type UTSCDMP "'
2022-01-20 11:01:04: I DRYRUN - adrci GI purging diagnostic destination diag/tnslsnr/dev-testdb/listener older than 10 days
        su grid -c 'export ORACLE_HOME=/u01/app/11.2.0/grid;/u01/app/11.2.0/grid/bin/adrci exec="set homepath diag/tnslsnr/dev-testdb/listener;purge -age 14400 -type ALERT "'
        su grid -c 'export ORACLE_HOME=/u01/app/11.2.0/grid;/u01/app/11.2.0/grid/bin/adrci exec="set homepath diag/tnslsnr/dev-testdb/listener;purge -age 14400 -type INCIDENT "'
        su grid -c 'export ORACLE_HOME=/u01/app/11.2.0/grid;/u01/app/11.2.0/grid/bin/adrci exec="set homepath diag/tnslsnr/dev-testdb/listener;purge -age 14400 -type TRACE "'
        su grid -c 'export ORACLE_HOME=/u01/app/11.2.0/grid;/u01/app/11.2.0/grid/bin/adrci exec="set homepath diag/tnslsnr/dev-testdb/listener;purge -age 14400 -type CDUMP "'
        su grid -c 'export ORACLE_HOME=/u01/app/11.2.0/grid;/u01/app/11.2.0/grid/bin/adrci exec="set homepath diag/tnslsnr/dev-testdb/listener;purge -age 14400 -type STAGE "'
        su grid -c 'export ORACLE_HOME=/u01/app/11.2.0/grid;/u01/app/11.2.0/grid/bin/adrci exec="set homepath diag/tnslsnr/dev-testdb/listener;purge -age 14400 -type SWEEP "'
        su grid -c 'export ORACLE_HOME=/u01/app/11.2.0/grid;/u01/app/11.2.0/grid/bin/adrci exec="set homepath diag/tnslsnr/dev-testdb/listener;purge -age 14400 -type HM "'
......

可以看到腳本實際就是使用了echo來清理日志的。10[天]這個參數不生效。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM