今天在看一條應用反應說執行不出來的SQL時,發現數據庫中的AWR報告沒有自動收集,最近的還停留在9月26日的,查看當前的時間是10月20日,如今有意思了,怎麼會這樣的,默認的AWR是1個小時收集一次,保留8天(此數據庫版本爲11.2.0.4)。sql
下面來檢查一下AWR的設置狀況:數據庫
SQL> show parameter statistics_level NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ statistics_level string TYPICAL SQL> select * from dba_hist_wr_control; DBID SNAP_INTERVAL RETENTION TOPNSQL ---------- -------------------------------- --------------------------- ---------- 2574787718 +00000 01:00:00.0 +00008 00:00:00.0 DEFAULT
statistics_level設置爲TYPICAL:收集數據庫自動管理的全部數據。bash
收集間隔snap_interval爲1小時,保留時間retention爲8天。服務器
這些設置都正常。oracle
又想到AWR收集後存放在SYSAUX表空間中,是否是表空間滿了麼?ide
TABLESPACE_NAME SIZE_G FREE_G USED_PCT ------------------------------ --------------- --------------- ---------- SYSAUX 2.78 0.51 81.50%
能夠看到有雖然SYSAUX表空間不大但也還有空間,看來也不是SYSAUX表空間的問題。日誌
再去看最近後臺的alert日誌也都是正常的日誌切換內容沒有任何的報錯的信息。blog
既然沒有報錯,那我手動收集一下AWR老是能夠的吧,因而執行下面的語句進程
SQL> exec dbms_workload_repository.modify_snapshot_settings(retention=>21600); BEGIN dbms_workload_repository.modify_snapshot_settings(retention=>21600); END; * ERROR at line 1: ORA-13516: AWR Operation failed: only a subset of SQL can be issued ORA-06512: at "SYS.DBMS_WORKLOAD_REPOSITORY", line 174 ORA-06512: at "SYS.DBMS_WORKLOAD_REPOSITORY", line 222 ORA-06512: at line 1
從上面能夠看到,手動收集AWR報錯,那既然有報錯信息就能夠根據報錯進行處理。文檔
先來看看這個報錯是什麼意思
SQL> !oerr ora 13516 13516, 00000, "AWR Operation failed: %s" // *Cause: The operation failed because AWR is not available. The // possible causes are: AWR schema not yet created; AWR // not enabled; AWR schema not initialized; or database // not open or is running in READONLY or STANDBY mode. // *Action: check the above conditions and retry the operation.
後面開始在MOS和百度進行搜索,MOS找到一篇文檔與這裏的報錯很類似,但對應的版本10.1到10.2,與我當前的版本不一致。後來看到一篇博客介紹說到AWR是由後臺進程MMON執行的收集的,因而查看服務器上的MMON進程
SQL> !ps -ef |grep mmon oracle 15484 2406 1 13:24:07 pts/5 0:00 grep mmon
竟然沒有!
看來MMON進程是被DOWN掉了,那又是何時DOWN掉的呢,又想到AWR停留在9月26日,因而去看那天的alert日誌,結果有重大發現:
看到26號那天晚上對數據庫作了shutdown操做,但很快shutdown又被取消了,這過程當中MMON和MMNL進程被down了,後來數據庫一直沒有重啓過,因此MMON進程就一直也沒有啓動,因而今天的問題就被發現了。
如今找到了緣由,那如何解決呢?怎麼把MMON進程可以啓起來呢?
上網查了不少,沒有找到相關的解決方法。最終的方法就是把數據庫重啓。
若是有大神知道如何在不重啓實例的狀況把MMON進程啓動,但願賜教。