使用IPS收集Exadata的诊断信息

原文链接:http://www.dbaleet.org/collect_exadata_diagnostic_info_via_ips/

IPS是Incident Packaging Service的简称,即事件打包服务。在此之前,能提供打包服务的一般是物流公司,例如Fedex或者UPS。从Oracle 11g开始,Oracle也介入这个行业与他们开始正面竞争了。

 

事件打包服务是FDI(Fault Diagnosability Infrastructure)故障诊断基础架构中的一项技术, 属于ADR的一部分。IPS可以针对某一特定错误或故障相关的数据进行打包,一次性收集诊断此问题需要的日志,例如traces, dumps, health check reports等,免去多次索要和提供日志之苦。Just wait for 1 minutes. 收集日志我用diagcollection.pl脚本不就行了么?何苦还需要另外学习收集日志方式? diagcollection.pl一般用于收集集群某个特定时间段的信息,或者某种特定类型的日志,例如chm;而IPS通常使用来收集数据库或者cell软件的诊断信息,例如可以用它来针对某一错误进行日志收集,例如ORA-00600,这两者并不冲突并且可以互补。

 

在Exadata上除了可以使用IPS收集DB节点的日志信息,还可以使用它来收集Cell节点的日志信息。DB节点的收集方式同样可以用于非Exadata的数据库,Cell节点的收集方式仅用于Exadata。以下分别讲述如何在DB节点和Cell节点使用IPS收集日志信息。我这里并不打算介绍所有的IPS的特性,仅仅只是针对某一错误进行日志收集。

 

DB节点:

        1.  进入adrci界面:
          $adrci
          adrci> help ips
          
           HELP IPS [topic]
             Available Topics:
                  ADD
                  ADD FILE
                  ADD NEW INCIDENTS
                  CHECK REMOTE KEYS
                  COPY IN FILE
                  COPY OUT FILE
                  CREATE PACKAGE
                  DELETE PACKAGE
                  FINALIZE PACKAGE
                  GENERATE PACKAGE
                  GET MANIFEST
                  GET METADATA
                  GET REMOTE KEYS
                  PACK
                  REMOVE
                  REMOVE FILE
                  SET CONFIGURATION
                  SHOW CONFIGURATION
                  SHOW FILES
                  SHOW INCIDENTS
                  UNPACK FILE
                  USE REMOTE KEYS
        2. 设置ADR HOME:
          adrci> show home
          
          adrci> set homepath  /u01/app/oracle/diag/rdbms/dbm/dbm1/
        3. 查看问题:
          adrci> show problem 
          ADR Home = /u01/app/oracle/diag/rdbms/dbm/dbm1:
          *************************************************************************
          PROBLEM_ID PROBLEM_KEY LAST_INCIDENT LASTINC_TIME
          -------------------- ----------------------------------------------------------- -------------------- ---------------------------------------- 
           1 ORA 7445 [kfkrqDump()+30] 1964325 2012-09-23 23:35:08.763000 +08:00
          1 rows fetched
          adrci> show incident -p "problem_key='ORA 7445 [kfkrqDump()+30]'"
          ADR Home = /u01/app/oracle/diag/rdbms/dbm/dbm1:
           *************************************************************************
           INCIDENT_ID PROBLEM_KEY CREATE_TIME 
           -------------------- ----------------------------------------------------------- ---------------------------------------- 
           1964325 ORA 7445 [kfkrqDump()+30] 2012-09-23 23:35:08.763000 +08:00
           1 rows fetched
        4. 生成此问题的IPS包:
adrci> ips pack incident 1964325 in /u01/app/oracle/admin

 Generated package 3 in file /u01/app/oracle/admin/ORA7445kf_20120924090018_COM_1.zip, mode complete

DB节点的一个IPS包就生成好了。

Cell节点:

Cell节点的IPS与DB节点的IPS差异并不大,但是它会额外收集以下信息:

1. Restart Server trace文件:rstrc_<pid>_<tid>.tr*
2. Cell Server trace文件: svtrc_<pid>_<tid>.tr*
3. Management Server trace文件
4. ms-odl.log文件
5. Cell的alert log文件

以下演示如何在Cell节点上使用IPS收集Cell的诊断信息:

  •  检查环境:
# env |grep ADR
ADR_BASE=/opt/oracle/cell11.2.2.2.0_LINUX.X64_101206.2/log
# which adrci
/opt/oracle/cell11.2.2.2.0_LINUX.X64_101206.2/cellsrv/bin/adrci
# which celldiag.pl
/opt/oracle/cell11.2.2.2.0_LINUX.X64_101206.2/cellsrv/bin/celldiag.pl
  •  查看事件信息
#/opt/oracle/cell11.2.2.2.0_LINUX.X64_101206.2/cellsrv/bin/adrci
adrci> set homepath diag/asm/cell/dmorlx8cel06
adrci> show problem

ADR Home = /opt/oracle/cell11.2.2.2.0_LINUX.X64_101206.2/log/diag/asm/cell/dmorlx8cel06:
*************************************************************************
PROBLEM_ID           PROBLEM_KEY            INCIDENT        LASTINC_TIME               
-------------------- -----------------------------------------------------
1                    RS 7445                  1              2011-01-12 18:09:16.759000 -05:00
1 rows fetched
adrci> show incident -p "problem_key='RS 7445'"

ADR Home = /opt/oracle/cell11.2.2.2.0_LINUX.X64_101206.2/log/diag/asm/cell/dmorlx8cel06:
*************************************************************************
INCIDENT_ID          PROBLEM_KEY             CREATE_TIME
-------------------- -------------------------------------------------
1                    RS 7445                2011-01-12 18:09:16.759000 -05:00
1 rows fetched
  • 收集错误信息:
adrci>  ips pack incident 1 in /tmp/
diag/asm/cell/dmorlx8cel06 Generated package 1 in file /tmp/RS7445_20110805074355_COM_1.zip, mode complete

当在Exadata上运行IPS的时候, 系统会自动检查celldiag.pl脚本是否存在, 如果这个脚本存在,那么IPS会在ADR的输出中放入这个脚本的输出,并且调用这个目录作为一个它的参数使用。celldiag.pl调用的语法如下:

./celldiag.pl -adr <file_destination> -aftertime <start_time> -beforetime <end_time> -level typical

 

用户可以手工执行这个脚本:

# /opt/oracle/cell11.2.2.2.0_LINUX.X64_101206.2/cellsrv/bin/celldiag.pl -adr /tmp/adrci -aftertime 201101120000 -beforetime 20110130000 -level all

这个脚本主要收集一些系统信息:例如meminfo, cpuinfo,/var/log/messages 以及一些ADR中不存在的trace文件(ms.err, oss<pid>.trc)。

收集完以后,就可以把上述使用IPS生成的zip包上传到MOS对应的SR中供Oracle Support分析。

以上


Posted

in

by

Tags:

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *