天天看點

ORACLE 告警日志alert過大的處理

  現在,對于我來說,處理ORACLE告警日志alert多大不再是什麼難題;但是,由于資料庫是公司最重要的裝置,不容有失,處理資料庫相關的程序或檔案還是要特别小心。

 目前,ORACLE資料庫主要分widows和LINUX/UNIX版本,對于LINUX/UNIX平台,我們可以使用tail -n /path/alert*.log|more來檢視,很友善;但是,windows操作平台,我們遇到如下圖所示那麼大個的告警日志,該怎麼檢視。你要說直接TXT文本打開,估計是不會成功的;有人說可以上傳到linux檢視,那還不如當初就在linux上部署Oracle資料庫。是以,過大的ORACLE告警日志是很不友善檢視的,需要我們運維人員定期檢視并處理。

ORACLE 告警日志alert過大的處理

 對于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>

ORACLE 告警日志alert過大的處理

由于是示範,我就在trace目錄進行告警日志備份了:

ORACLE 告警日志alert過大的處理

  接下來,就可以删除原來的告警日志:

ORACLE 告警日志alert過大的處理

  通過切redo日志,可以使資料庫生成新的告警日志檔案:

系統已更改。

ORACLE 告警日志alert過大的處理