oracle清理trace、alert、aud、listener等日誌文件

0、注意事項

數據庫產生的運行日誌不是隨便可以清理的,特別是有故障或者長期分析一個妖孽的問題時,清理日誌之前一定要做好備份工作。

1、數據庫各項日誌文件路徑

查看oracle各類日誌的方法:如果是rac,asm實例下查詢方法一樣

1)查看診斷日誌:

11g以及以上版本全新的診斷信息架構,查看v$diag_info信息,展示日誌目錄:

show parameter diag;
select * from v$diag_info
輸出例子如下:
         1 ADR Base
/u01/app/oracle
         1 ADR Home
/u01/app/oracle/diag/rdbms/orcl11g/orcl11g
         1 Diag Trace
/u01/app/oracle/diag/rdbms/orcl11g/orcl11g/trace
         1 Diag Alert
/u01/app/oracle/diag/rdbms/orcl11g/orcl11g/alert
         1 Diag Incident
/u01/app/oracle/diag/rdbms/orcl11g/orcl11g/incident
         1 Diag Cdump
/u01/app/oracle/diag/rdbms/orcl11g/orcl11g/cdump
         1 Health Monitor
/u01/app/oracle/diag/rdbms/orcl11g/orcl11g/hm
         1 Default Trace File
/u01/app/oracle/diag/rdbms/orcl11g/orcl11g/trace/orcl11g_ora_61174.trc

11g以下查看方式:

sqlplus / as sysdba
SYS@orcl1 > show parameter dump_dest;
NAME                                 TYPE        VALUE
background_dump_dest                 string      /u01/app/oracle/diag/rdbms/orcl11g/orcl11g/trace
core_dump_dest                       string      /u01/app/oracle/diag/rdbms/orcl11g/orcl11g/cdump
user_dump_dest                       string      /u01/app/oracle/diag/rdbms/orcl11g/orcl11g/trace

說明:
background_dump_dest  /* 存放數據庫後臺進程調試信息,與記錄影響實例、數據庫的trace文件和alert日誌文件,11gR1之後,缺省忽略此參數設置,根據diagnostic_dest存放
diagnostic_dest       /* 11gR1之後,引入,後臺進程與alert告警日誌會根據ADR base目錄存放
user_dump_dest        /* 存放用戶進程調試trace文件,11gR1之後,引入新的診斷架構這個參數將被忽略,由diagnostic_dest控制trace文件生成目錄
core_dump_dest        /* 存放Oracle核心轉儲文件

2)查看審計日誌:

SYS@orcl1 > show parameter audit_file_dest;
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
audit_file_dest                      string      /u01/app/oracle/admin/orcl/adump
audit_file_dest 

路徑下存放的是數據庫審計信息文件,如果設置audit_trail爲NONE,則默認此目錄只存放SYSDBA身份登陸審計信息。

注意,asm實例下面看到的路徑可能不一樣,比如:
audit_file_dest                      string      /u01/app/12.2.0/grid/rdbms/audit

3)查看監聽日誌位置:

[oracle@onetest ~]$ lsnrctl status 
Listener Parameter File   /u01/app/oracle/product/19.0.0/db_1/network/admin/listener.ora
Listener Log File         /u01/app/oracle/diag/tnslsnr/onetest/listener/alert/log.xml

注意,除了監聽xml日誌,還有listener.log日誌位於/u01/app/oracle/diag/tnslsnr/onetest/listener/trace目錄下

2、手工方式清理日誌文件

情況1:清理單個較大日誌文件,alert_sid.log、listener.log等

SQL> select * from v$diag_info where name='Diag Trace';

/u01/app/oracle/diag/rdbms/orcl/orcl/trace

[oracle@orclr01 trace]$cd /u01/app/oracle/diag/rdbms/orcl/orcl1/trace
[oracle@orclr01 trace]$ ls -lrt alert*
[oracle@orclr01 trace]$cp  alert_orcl1.log  /data/backlog/oralog/alert_orcl1.log -`date +"%Y%m%d"`
[oracle@orclr01 trace]$echo 0 > alert_orcl1.log
CPU空閒時操作:
cd /data/backlog/oralog 
gzip 剛纔備份的alert日誌文件
說明:通過echo的方式清理,可以保持文件的屬性,不影響zabbix監控alert日誌。

情況2:清理上萬個小的日誌文件,trc日誌、aud審計日誌等

asm實例下:
show parameter audit_file_dest
cd /u01/app/11.2.0/grid/rdbms/audit
清理前可選擇備份:
find . -mtime +30 -name \*.aud -exec mv {}  /oralog_bak \;
或者直接刪除:
find . -name "*.aud" -mtime +30 -type f | xargs rm -rf
其它類型的日誌文件類似,替換爲*.trc即可

如果開啓了數據庫審計日誌,那需要在數據庫中清理aud$審計表

3、使用oracle自帶工具清理

使用adrci清理trace和acident日誌

$ adrci
adrci> show home
adrci> set homepath diag/rdbms/orcl/orcl1
adrci> help purge     # 可根據清理多少分鐘前的數據,也可以show problem查看日誌中錯誤信息
adrci> purge -age 14400 -type incident #14400的單位是分鐘
adrci> purge -age 14400 -type trace

也可以在adrci中設置trace文件保留的策略:

adrci> show control  #查看可以設置的策略
adrci> help set control
set control (SHORTP_POLICY = 720) #720的單位是小時

12c以及以上版本部署purgeLogs工具
可能是oracle自己也知道從9i ~ 19c版本,日誌位置不斷變化,日誌也越來越多,翻不了了,官方出了專門清理日誌的工具。

MOS文檔:purgeLogs: Cleanup traces, logs in one command (Doc ID 2081655.1)

工具使用參考:

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,oak 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 OAK/DCS 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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章