2020年9月3日 星期四

4.9 Automatic Diagnostic Repository (ADR)

自從 Oracle 11g 開始,推出了 Automatic Diagnostic Repository (ADR) 這個功能,目的是用來集中化管理資料庫所有的 log 與 trace file,以往 Oracle 資料庫所產生的 trace file 共分開三個地方存放,分別為 background_dump_dest 、 core_dump_dest 、 user_dump_dest ,預設是放在 $ORACLE_BASE/admin/<SID> 底下的 bdump 、 cdump 、 udump 目錄,而 ADR 則是把這些目錄下的所有檔案集中到一個 $ADR_BASE 底下的目錄結構來管理:

 

預設 ADR Base 為 $ORACLE_BASE,而資料庫參數 diagnostic_dest 則是可以指定此資料庫的 log 檔要放在哪一個 ADR Base 底下:

 

ADR Base 底下分別存放著不同種類的 log ,例如 DB 相關的 log 放在 diag/rdbms 目錄底下;ASM 相關的 log 放在 diag/asm 目錄,listener log 則是放在 diag/tnslsnr 底下…等。以往的 bdump 、 cdump 、 udump 則是都集中在 diag/rdbms 底下,最大的改變是 DB 的 alert log 由原本的 budmp 目錄改放到 diag/rdbms/<db_name>/<SID>/trace 底下:

ADR 雖然將所有的 log 集中化起來,但卻造成目錄結構冗長的狀況,也因此產生了新的命令 adrci ,用來幫助我們快速檢視 ADR 底下的內容。


執行 adrci 會進入 adrci> 並自動帶入預設的 ADR Base:

執行 help 可以查閱所有 adrci 可執行的命令。


假如 ADR Base 不是使用預設的 $ORACLE_BASE,可以在進入 adrci 之後使用 show base 與set base 來查看與設定 ADR Base:

 

透過 ADR 最常使用的功能不外乎是查看 DB 的 alert log,進入 adrci 後使用 show alert 會列出所有 log 的路徑,然後再選擇我們要看的那個 db 就好了:

選擇好之後會以文字編輯器 (Unix 系統為 vi) 開啟所要查看的 log。


另外還可以使用 tail –f 的方式來檢視 alert log,需先使用 set home設定要查閱的 home 目錄:


ADR 底下的檔案維護分為 SHORTP_POLICY 與 LONGP_POLICY ,SHORTP_POLICY 預設為 720 (單位:小時,30天) 自動清理 trace files 、Core dump files 與 Packaging information ; LONGP_POLICY 預設為 8760 (單位:小時,365天) 自動清理 Incident information 、 Incident dumps 與 alert logs。可以透過 set control 來修改,例如將 SHORTP_POLICY 改為 360、LONGP_POLICY 改為 4380 如下:


adrci> set control (SHORTP_POLICY = 360)

adrci> set control (LONGP_POLICY = 4380)


要查看設定則是使用 show control 指令:


除此之外也可以直接使用 purge 指令來手動清理 ADR 底下的檔案,一般 purge 指令會加上 –age 參數來指定要清理幾天以前的檔案,例如要清空三天前的所有檔案:

adrci> purge –age 3

 

值得額外一提的是,如果是有安裝 RAC ,在 11g 的時候 crs log 還是存放在 $GRID_HOME/log 底下,到了 12c 以後 crs log 才改放到 ADR 目錄底下。




沒有留言:

張貼留言