Oracle故障诊断(一线DBA必备技能)之ADRCI(五):ADRCI综合应用

1. 题记:

前面几篇都是介绍了ADRCI的基本功能,本篇我们来一次ADRCI综合应用总结及场景演示。

2. 数据库诊断文件(Diagnostic File)

警告日志(Alert Log)
–RDBMS
–ASM
–Listenerl
跟踪文件(Trace Files)
–User-Generated(10046,10053)
–System-Generated(ORA error)
核心转储文件(CoreDumps)

3. 10g诊断文件

初始化参数设置:%_dump_dest
默认位置: O R A C L E B A S E / a d m i n / ORACLE_BASE/admin/ ORACLEBASE/admin/ORACLE_SID/
–bdump–警告日志、后台跟踪文件
–cdump–核心转储文件(core dumps)
–udump–用户跟踪文件(10046,10053)
–adump–审计文件

4. 11g诊断文件

自动诊断资料库Automatic Diagnostic Repostory(ADR)
初始化参数设置:DIAGNOSTIC_DEST
–取代10g的参数%_dump_dest
–如果没有设置DIAGNOSTIC_DEST,则默认取ORACLE_BASE,
–如果没有设置ORACLE_BASE,则默认取ORACLE_HOME/log,
–在此目录下建立子目录diag,
–查看视图V$DIAG_INFO,

视图V D I A G I N F O S Q L > c o l n a m e f o r a 25 S Q L > c o l v a l u e f o r a 100 S Q L > s e l e c t n a m e , v a l u e f r o m v DIAG_INFO SQL>col name for a25 SQL>col value for a100 SQL>select name,value from v DIAGINFOSQL>colnamefora25SQL>colvaluefora100SQL>selectname,valuefromvdiag_info;
在这里插入图片描述

5. ADR中的诊断文件

支持的产品类型:asm/rdbms/tnslsnr/clients
警告日志:包括文本格式(trace)和XML格式
跟踪文件
–10046事件等,位于trace目录
–SQLNet跟踪文件
–事故文件(Incidentfiles)
–核心转储文件(Coredumps)

6. 禁用ADR

设置隐含参数:altersystemset"_diag_adr_enabled"=falsescope=spfile;
改用旧版的参数:*_dump_dest
不建议禁用ADR设置!

7.禁用跟踪文件(TraceFiles)

设置隐含参数,减少跟踪文件的种类及数量:
–_disable_health_check=TRUE;
–不建议在生产系统中禁用跟踪文件!

ADRCI命令行工具演示1:

$adrci
adrci>showbase;
ADR baseis "/u01/app/oracle"
adrci>showhomes;
ADRHomes:
diag/tnslsnr/myhost/listener
diag/asm/+asm/+ASM
diag/rdbms/mydb/mydb
adrci>set homediag/rdbms/mydb/mydb;

8. ADRCI查看警告日志(AlertLog)

查看/监视警告日志
–adrci>showalert;
直接读取XML格式的警告日志
使用默认的文本编辑器(vi)查看警告日志
adrci>showalert-tail-f;
– -tail-f选项:监视日志输出,Ctrl+C终止监视
adrci>showalert-term;
-term选项:直接在屏幕显示日志内容
查看日志中的匹配信息内容
adrci>showalert-p"message_textlike’%ORA-%'"-term;
包含信息事件的时间戳,比grep命令更好用。
匹配内容区分大小写。
可查找匹配的host_id,user_id等信息,参考命令帮助:adrci>help show alert

9. 查看警告日志:按时间范围

便于查看日志内容
必需存在XML格式的警告日志文件
可导出(SPOOL)至新的日志文件

show alert -p "originating_timestamp>= systimestamp-1/24" -term; 
show alert -p "message_text like '%ORA-%' and originating_timestamp>= systimestamp-30" -term;

查看警告日志:DDL语句
启用DDL记录:

alter system set enable_ddl_logging=true scope=both;
alter session set enable_ddl_logging=true;
查看警告日志输出:

adrci>show alert -p “message_text like ‘%DROP%’”-term;
ADR Home= c:\oracle\diag\rdbms\orcl\orcl:
注意:-p的匹配内容区分大小写

10. 文件维护

–XML格式的警告日志默认是按10MB大小自动切换。
–旧的警告日志文件和后台跟踪文件可按设置的保留时间策略,执行删除处理。
–用户启用的跟踪文件、监听日志文件不会自动切换,也不会做归档保存。

11. 短期文件清除策略

查看控制配置:adrci>show control;
–SHORTP_POLICY:短期文件的保留时间,以小时(HOUR)为单位,默认是720(30天)。
–最大值:35791394(大于4000年)。
–设置为0(zero)表示所有短期文件都可删除,包括:TraceFiles、CoreDumps、PackagingInfo。
–修改方法:(例如改为保留14天):adrci>set control(SHORTP_POLICY=336);

12. 长期文件清除策略

–LONGP_POLICY:长期文件的保留时间,以小时为单位,默认是8760(365天)
–最大值:35791394(大于4000年)。
–设置为0(zero)表示所有长期文件都可删除,包括:IncidentInfo、IncidentDumps、AlertLogs。
–修改方法:(例如改为保留60天):adrci>set control(LONGP_POLICY=1440);

13. 清除策略

–文件清除工作是由MMON进程衍生的子任务执行。
–默认是自动检查并清除7天内过期的数据文件。

14. 手工清除文件

查看跟踪文件
adrci>show tracefile-rt
-rt选项:按文件的时间倒序显示
删除跟踪文件(2天前)、警告日志(1天前):
adrci>purge -age 2880 -type trace;
adrci>purge -age 1440 -type alert;
-age选项:以分钟为单位
-type选项:文件类型
删除指定事故(incident)的全部文件:adrci>purge -i 12345;
查看帮助adrci>help purge

15. 事故打包服务IPS(IncidentPackagingService)

–IPS(事故打包服务):是创建与发生严重事故事件相关的数据信息文件包,以便提供给Oracle做分析处理和技术支持。其中包含了事故的关键信息,如事件的编号或发生时间等。
–IPS可在EM的web界面或adrci命令行操作完成。
–ADRCI查看事故问题的方法:
adrci>show incident;
adrci>show problem;
adrci>show tracefile [-i 123] [-[r]t];

16. 事故防洪控制(IncidentFloodControl)

–Flood-controlledincidents(防洪控制的事故)会在警告日志中写入记录,但并不是转储事故的全部信息。
–事故记录数量的阈值:
每小时内只记录同一问题(Problem)的5个事故事件(Incident)。
每天只记录同一问题(Problem)的25个事故事件(Incident)。
限制记录合计最多每小时50个或每天250个事故事件(Incident)。

17. IPS–创建包(Packages)

–使用以下命令建立事故信息包:

adrci>IPS CREATE PACKAGE INCIDENT inc_number;
adrci>IPS CREATE PACKAGE PROBLEMproblem_ID;
adrci>IPS CREATE PACKAGE PROBLEMKEY "problem_key";
adrci>IPS CREATE PACKAGE SECONDS sec;
adrci>IPS CREATE PACKAGE TIME 'start_time' TO 'end_time';
adrci>IPS CREATE PACKAGE;

–可使用IPSADDINCIDENT或IPSADDFILE命令添加准备打包的数据。

18. IPS–生成打包文件

–生成打包的物理文件:
adrci>IPS GENERATE PACKAGE<package_number> IN
adrci>IPS GENERATE PACKAGE 1 IN /home/seiler/diagnostics
adrci>IPS SHOW FILES PACKAGE 1
–使用单个命令一次生成数据包:

adrci>IPS PACK INCIDENT<incident_id>IN<path>;
adrci>IPS PACK INCIDENT 12345 IN /home/seiler/diagnostics;

19. ADRCI脚本(Scripts)

  1. 内部调用脚本:
    adrci>@/home/oracle/test.adrci
  2. 命令行参数调用脚本:
    adrciscript=/home/oracle/test.adrci
  3. 脚本示例:
    #ADRCI script to find alertlog errors SPOOL /home/oracle/alert_log_errors.log
    ECHO"ALERT LOG ERRORS:";
    SET HOME PATH diag/rdbms/orcl/orcl;
    SHOW ALERT -TERM -P “MESSAGE_TEXTLIKE’%ORA-%'”;
    SPOOLOFF

20. ADRCI健康报告(HealthReport)

  1. 仅适用于HealthMonitorl
adrci>show hm_run;#Look for RUN_NAME,e.g. HM_RUN_1
adrci>create report hm_runhm_run_1;
adrci>show report hm_runhm_run_1;#Outputs XML
  1. 生成可读报告:
SQL>set long 99999 longchunksize 1000 pagesize 999 linesize 512;
SQL>select dbms_hm.get_run_report('HM_RUN_1') from dual;

21. 综合演示

1:引发事故事件
SQL>alter session set events ‘942 incident(table_missing)’;
Sessionaltered.
SQL>drop table does not exist;
droptabledoesnotexist
*
ERROR atline1:
ORA-00942:table or view does not exist
SQL>alter session set events ‘942 trace name context off’;
Sessionaltered

  1. 查看文本格式的警告日志
    $tail-n50/u01/app/oracle/diag/rdbms/orcl/orcl/trace/alert_orcl.log;

  2. ADRCI查看警告日志
    adrci>show alert -p “message_text like ‘%ORA-00942%’” -term
    //或
    adrci>show alert -p “message_text like ‘%ORA-%’ and originating_timestamp>= systimestamp-1/24” -term;

  3. 查看事故事件(Incident)
    在这里插入图片描述

  4. 创建事故数据包(Package)
    在这里插入图片描述

  5. 查看数据包的内容
    在这里插入图片描述

  6. 发送数据包给OracleSupport
    数据包将包含以下数据:
    –Alert log
    Incident trace files
    Export/dmpfiles

猜你喜欢

转载自blog.csdn.net/qq_45732829/article/details/143335775