ORACLE 告警日誌alert過大的處理

清風艾艾發表於2016-06-07
  現在,對於我來說,處理ORACLE告警日誌alert多大不再是什麼難題;但是,由於資料庫是公司最重要的裝置,不容有失,處理資料庫相關的程式或檔案還是要特別小心。
 目前,ORACLE資料庫主要分widows和LINUX/UNIX版本,對於LINUX/UNIX平臺,我們可以使用tail -n /path/alert*.log|more來檢視,很方便;但是,windows操作平臺,我們遇到如下圖所示那麼大個的告警日誌,該怎麼檢視。你要說直接TXT文字開啟,估計是不會成功的;有人說可以上傳到linux檢視,那還不如當初就在linux上部署Oracle資料庫。所以,過大的ORACLE告警日誌是很不方便檢視的,需要我們運維人員定期檢視並處理。

 對於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
[oracle@oradbs ~]$ ls -l /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日誌看看:
[oracle@oradbs ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.3.0 Production on Thu May 19 18:15:49 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> alter system switch logfile;
System altered.
SQL> 
SQL> !cat /home/oracle/oracle/diag/rdbms/oradb/oradb/trace/alert*.log
/dev/null
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
Thu May 19 18:15:58 2016
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
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
c:\oracle\diag\rdbms\oradb\ora
db\trace
core_dump_dest                       string
c:\oracle\diag\rdbms\oradb\ora
db\cdump
max_dump_file_size                   string
unlimited
shadow_core_dump                     string
none
user_dump_dest                       string
c:\oracle\diag\rdbms\oradb\ora
db\trace
SQL>

由於是演示,我就在trace目錄進行告警日誌備份了:

  接下來,就可以刪除原來的告警日誌:

  透過切redo日誌,可以使資料庫生成新的告警日誌檔案:
SQL> alter system switch logfile;
系統已更改。
SQL>
 




來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29357786/viewspace-2116610/,如需轉載,請註明出處,否則將追究法律責任。

相關文章