adrci (Automatic Diagnostic Repository Command Interpreter) là 1 công cụ dòng lệnh mới có ở 11g để hỗ trợ thao tác với log file.
Từ version 11G, các thư mục log của Oracle database đã thay đổi, không còn nằm hoàn toàn trong ORACLE_BASE/admin/ nữa, mà nằm trong thư mục ORACLE_BASE/diag/ và có kiến trúc như sau:
ADR Base (Automatic Diagnostic Repository Base) cho mỗi database instance được set trong parameter diagnostic_dest, thường là /u01/app/oracle.
Nếu không set parameter đó thì default ADR Base sẽ là ORACLE_BASE, nếu ORACLE_BASE không set thì ADR sẽ là thư mục ORACLE_HOME/log.
Trên server để vào adrci:
1 2 3 4 5 6 7 8 |
$ adrci ADRCI: Release 11.2.0.4.0 - Production on Wed Jul 22 16:02:10 2015 Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved. ADR base = "/u01/app/oracle" adrci> |
Kiểm tra các thư mục home chứa log liên quan:
1 2 3 4 5 6 7 8 9 |
adrci> show base ADR base is "/u01/app/oracle" adrci> show home ADR Homes: diag/asm/+asm/+ASM diag/tnslsnr/orcldb01svr/listener diag/rdbms/orcldb01/orcldb01 adrci> |
Như vậy ta thấy adrci quản lý thư mục log của ASM, database, listener, và cả client nếu có.
Trên 10G, để xóa log file, trace file, ta thường phải xóa tay hay viết script đặt lịch xóa, tính ra cũng khá mất công. Với adrci, ta có thể cấu hình để hệ thống xóa log file, trace file 1 cách tự động, nhanh chóng và gọn lẹ.
Trong thư mục diag thường có các kiểu tập tin như sau:
Kiểu tập tin | Vị trí |
---|---|
ALERT | các tập tin nằm trong thư mục alert |
INCIDENT | các tập tin nằm trong thư mục incident/incdir_<incid> |
TRACE | các tập tin trace nằm trong thư mục trace |
CDUMP | các tập tin nằm trong thư mục cdump |
UTSCDMP | các tập tin nằm trong thư mục trace/cdmp_<timestamp> |
STAGE | các tập tin nằm trong thư mục stage |
SWEEP | các tập tin nằm trong thư mục sweep |
HM | các tập tin nằm trong thư mục hm và metadata trong schema HM |
IPS | các tập tin nằm trong thư mục incpkg và metadata trong schema IPS |
Để kiểm tra cấu hình xóa log file, ta phải set home, sau đó dùng lệnh show control
1 2 3 4 5 6 7 8 9 10 11 |
adrci> set home diag/rdbms/orcldb01/orcldb01 adrci> show control ADR Home = /u01/app/oracle/diag/rdbms/orcldb01/orcldb01: ************************************************************************* ADRID SHORTP_POLICY LONGP_POLICY LAST_MOD_TIME LAST_AUTOPRG_TIME LAST_MANUPRG_TIME ADRDIR_VERSION ADRSCHM_VERSION ADRSCHMV_SUMMARY ADRALERT_VERSION CREATE_TIME -------------------- -------------------- -------------------- ---------------------------------------- ---------------------------------------- ---------------------------------------- -------------------- -------------------- -------------------- -------------------- ---------------------------------------- 339924111 720 8760 2014-10-27 14:59:13.867105 +07:00 2015-07-16 15:38:56.954262 +07:00 2015-07-22 11:05:48.535682 +07:00 1 2 80 1 2014-10-27 14:59:13.867105 +07:00 1 rows fetched adrci> |
Ngoài set home về thư mục chứa log database instance dùng đường dẫn như trên, có thể dùng set home rdbms, hoặc set home <ORACLE_SID>. Có thể query thông tin ngắn gọn dùng câu select như sau:
1 2 3 4 5 6 7 8 9 10 11 |
adrci> set home rdbms adrci> select SHORTP_POLICY,LONGP_POLICY,LAST_AUTOPRG_TIME,LAST_MANUPRG_TIME from ADR_CONTROL; ADR Home = /u01/app/oracle/diag/rdbms/orcldb01/orcldb01: ************************************************************************* SHORTP_POLICY LONGP_POLICY LAST_AUTOPRG_TIME LAST_MANUPRG_TIME -------------------- -------------------- ---------------------------------------- ---------------------------------------- 720 8760 2015-07-16 15:38:56.954262 +07:00 2015-07-22 11:05:48.535682 +07:00 1 rows fetched adrci> |
LAST_MOD_TIME là thời gian sửa cấu hình gần nhất. LAST_AUTOPRG_TIME là thời gian hệ thống tự xóa log gần nhất. LAST_MANUPRG_TIME là thời gian DBA vào xóa log thủ công gần nhất.
Cái ta cần quan tâm là Short Policy và Long Policy.
Short policy là “độ tuổi sẽ được xóa” của các file sau:
- TRACE
- CDUMP
- UTSCDMP
- IPS
Như ở trên ta kiểm tra, các file log cũ hơn 720 giờ = 30 ngày sẽ bị xóa.
Long policy là “độ tuổi sẽ được xóa” của các file sau:
- ALERT
- INCIDENT
- SWEEP
- STAGE
- HM
Như ở trên ta kiểm tra, các file log cũ hơn 8760 giờ = 365 ngày sẽ bị xóa.
Ta sẽ set lại short policy còn 15 ngày = 360 giờ, và policy thành 6 tháng ~ 180 ngày = 4320 giờ
1 2 3 4 5 6 7 8 9 10 11 12 |
adrci> set control (SHORTP_POLICY=360) adrci> set control (LONGP_POLICY=4320) adrci> show control ADR Home = /u01/app/oracle/diag/rdbms/orcldb01/orcldb01: ************************************************************************* ADRID SHORTP_POLICY LONGP_POLICY LAST_MOD_TIME LAST_AUTOPRG_TIME LAST_MANUPRG_TIME ADRDIR_VERSION ADRSCHM_VERSION ADRSCHMV_SUMMARY ADRALERT_VERSION CREATE_TIME -------------------- -------------------- -------------------- ---------------------------------------- ---------------------------------------- ---------------------------------------- -------------------- -------------------- -------------------- -------------------- ---------------------------------------- 339924111 360 4320 2015-07-22 16:42:13.867105 +07:00 2015-07-16 15:38:56.954262 +07:00 2015-07-22 11:05:48.535682 +07:00 1 2 80 1 2014-10-27 14:59:13.867105 +07:00 1 rows fetched adrci> |
Việc thực hiện xóa log tự động này sẽ được thực hiện bởi process MMON. Auto purge job sẽ chạy lần đầu tiên sau khi instance start được 2 ngày, và sau đó cứ 7 ngày sẽ chạy 1 lần.
Trong 1 số trường hợp khi log quá nhiều, ta muốn tự xóa log, có thể dùng lệnh purge
1 |
purge [[-i {id1 | start_id end_id}] [-age mins] [-type {ALERT | INCIDENT | TRACE | CDUMP | HM}] |
VD: ta muốn xóa trace file cũ hơn 6 ngày:
1 |
adrci> purge -age 8640 -type TRACE |
Lưu ý: trong lệnh purge thời gian tính bằng phút. Trong policy tính bằng giờ.
Tuy vậy, các file audit (*.aud) trong thư mục ORACLE_BASE/admin/<ORACLE_SID>/adump không nằm trong phạm vi quản lý của adrci. Muốn xóa các file này ta cũng có 1 số phương pháp, mình sẽ đề cập ở 1 bài viết riêng.
06/12/2015 at 13:28
Cảm ơn bạn! Bài viết rất bổ ích!
07/12/2015 at 10:35
Thank you 🙂