現在,對于我來說,處理ORACLE告警日志alert多大不再是什麼難題;但是,由于資料庫是公司最重要的裝置,不容有失,處理資料庫相關的程序或檔案還是要特别小心。
目前,ORACLE資料庫主要分widows和LINUX/UNIX版本,對于LINUX/UNIX平台,我們可以使用tail -n /path/alert*.log|more來檢視,很友善;但是,windows操作平台,我們遇到如下圖所示那麼大個的告警日志,該怎麼檢視。你要說直接TXT文本打開,估計是不會成功的;有人說可以上傳到linux檢視,那還不如當初就在linux上部署Oracle資料庫。是以,過大的ORACLE告警日志是很不友善檢視的,需要我們運維人員定期檢視并處理。
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIn5GcukDO2EGO5ADZyATO5UWOxAzY5QmNlJmM4AzNzITM0EDNfdWbp9CXt92Yu4GZjlGbh5SZslmZxl3Lc9CX6MHc0RHaiojIsJye.png)
對于linux平台,處理很簡單,就是echo /dev/null > /path/alert*.log,舉例如下:
首先,檢視告警日志的位置:
[oracle@oradbs ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.3.0 Production on Thu May 19 18:09:19 2016
Copyright (c) 1982, 2011, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> show parameter dump
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
background_core_dump string partial
background_dump_dest string /home/oracle/oracle/diag/rdbms/oradb/oradb/trace
core_dump_dest string /home/oracle/oracle/diag/rdbms/oradb/oradb/cdump
max_dump_file_size string unlimited
shadow_core_dump string partial
user_dump_dest string /home/oracle/oracle/diag/rdbms/oradb/oradb/trace
[oracle@oradbs ~]$ ls -l /home/oracle/oracle/diag/rdbms/oradb/oradb/trace/alert*.log
-rw-r----- 1 oracle dba 94275 May 19 18:00 /home/oracle/oracle/diag/rdbms/oradb/oradb/trace/alert_oradb.log
其次,一定要先做備份:
[oracle@oradbs ~]$ cp /home/oracle/oracle/diag/rdbms/oradb/oradb/trace/alert*.log /home/oracle/alert_bak20160607
[oracle@oradbs ~]$ ls
alert_bak20160607 oracle oraInventory
再次,對告警日志進行截斷處理:
[oracle@oradbs ~]$ echo /dev/null > /home/oracle/oracle/diag/rdbms/oradb/oradb/trace/alert*.log
-rw-r----- 1 oracle dba 10 May 19 18:13 /home/oracle/oracle/diag/rdbms/oradb/oradb/trace/alert_oradb.log
處理的結果:
[oracle@oradbs ~]$ cat /home/oracle/oracle/diag/rdbms/oradb/oradb/trace/alert*.log
/dev/null
有人懷疑,動了告警日志,資料庫是不是就不在往這個告警日志寫日志了,答案是不會的,我們切換redo日志看看:
SQL*Plus: Release 11.2.0.3.0 Production on Thu May 19 18:15:49 2016
SQL> alter system switch logfile;
System altered.
SQL>
SQL> !cat /home/oracle/oracle/diag/rdbms/oradb/oradb/trace/alert*.log
Thu May 19 18:15:58 2016
Thread 1 advanced to log sequence 7 (LGWR switch)
Current log# 1 seq# 7 mem# 0: /oradata/oradb/redo01.log
Archived Log entry 4 added for thread 1 sequence 6 ID 0x9ecc00e3 dest 1:
看吧!資料庫還是會寫到截斷的告警日志裡。
那麼,widows的告警日志過大又該怎麼處理呢,流程是這樣的:先做備份,然後直接删除即可,當資料庫發生檢查點或切換redo日志時,資料庫會自動建立新的告警日志。舉例如下:
檢視告警日志:
C:\Users\localadmin>sqlplus sys/oracle as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on 星期二 6月 7 08:59:53 2016
Copyright (c) 1982, 2010, Oracle. All rights reserved.
連接配接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
background_core_dump string
partial
background_dump_dest string
c:\oracle\diag\rdbms\oradb\ora
db\trace
core_dump_dest string
db\cdump
max_dump_file_size string
unlimited
shadow_core_dump string
none
user_dump_dest string
SQL>
由于是示範,我就在trace目錄進行告警日志備份了:
接下來,就可以删除原來的告警日志:
通過切redo日志,可以使資料庫生成新的告警日志檔案:
系統已更改。