ADRCI工具是Oracle11g才推出的新工具,主要用来管理alert文件、trace文件、dump文件、健康监事报告等。
11g中alert,trace文件的位置发生了变化, 从原来的ORACLE_BASE/admin/INSTANCE_NAME目录变成了ORACLE_BASE/diag/rdbms/DBNAME/INSTANCE_NAME目录。
Oracle之所以修改了这个跨越多个版本都没有修改过的参数设置,就是因为Oracle在11g中推出了ADRCI。这个工具可以统一管理ASM实例和多个数据库实例的alert文件、后台trace文件、用户trace文件,dump文件等等。
而且这个工具可以快速查询错误相关的所有trace文件,并将这些文件打包到一个zip文件,以便将问题相关的信息提供给Oracle的技术支持。
0. 注意事项, 知识快速整理.
1. 定位problem,incident
2. 定位tracefile (user trace file, alert log file)
3. 生成package
show alert -tail -f 相关操作的时候需要先 set home 因为adrci是多目录操作不然会报错 DIA-48449: Tail alert can only apply to single ADR home 这是为了保证在多实例下不至于造成混乱。 adrci 也支持spool adrci 是基于一个叫做fault diagnosability infrastructure(错误诊断框架), 这样一个底层框架的, 核心的思想就是, 通过problem和incident来定位错误。 problem 和 incident 是一种相辅相成的关系, problem指的是大的问题,叫criticial error, 一个大问题会由很多小的incidents所导致。所以他们是1:n的关系. 而problem 的数据都预先定义在v$diag_critical_error了(应该是,猜的) adrci> show incident ADR Home = /u01/app/oracle/diag/rdbms/opt/opt: ************************************************************************* INCIDENT_ID PROBLEM_KEY CREATE_TIME -------------------- ----------------------------------------------------------- ---------------------------------------- 121 ORA 4031 2010-08-17 14:49:59.384000 +08:00 209 ORA 4031 2010-08-17 14:50:25.980000 +08:00 2 rows fetched adrci> adrci> adrci> show problem ADR Home = /u01/app/oracle/diag/rdbms/opt/opt: ************************************************************************* PROBLEM_ID PROBLEM_KEY LAST_INCIDENT LASTINC_TIME -------------------- ----------------------------------------------------------- -------------------- ---------------------------------------- 1 ORA 4031 209 2010-08-17 14:50:25.980000 +08:00 1 rows fetched --- 很容易看到一个04031对应了: 209,121,2个事件
1. 如何identified 这以上的problem和incident的tracefile所在位置呢。
1. 先说problem, problem都是记录在alert里的, 一般是放在$ORACLE_BASE/diag/rdbms/$DBNAME/$ORACLE_SID/trace/alert_SID.log, 可以手动去找, 不过adrci提供了更高效的方式, 直接吧04031那段记录在TMP文件里。获取的命令是: show alert -p "message_text like '%ORA-04031%'" #详细 show problem -p "problem_id=1" # 看某一个problem 2. incident 相关: # INCIDENT_FILE 显示了tracefile的位置。 show incident -MODE DETAIL -p "incident_id=121"
2. 定位tracefile (user trace file, alert log file)
# This example shows all trace files for incidents 1 and 4, under the path /home/steve/temp: show tracefile %mmon% -rt # This example shows all trace files for incidents 1 and 4, under the path /home/steve/temp: show tracefile -i 1 4 -path /home/steve/temp
4. 生成 package
set homepath diag/rdbms/opt/opt 方法一 ips pack problem 1 方法二 # Created package 8 without any contents, correlation level typical ips create package Added problem 1 to package 8 ips add incident 121 package 8 ips add incident 209 package 8 ips add file /u01/app/oracle/diag/rdbms/opt/opt/trace/opt_dbrm_5035.trc package 8 ips generate package 8 adrci> ips get metadata from file /home/oracle/script/IPSPKG_20110220163312_COM_1.zip IPS metadata from file /home/oracle/script/IPSPKG_20110220163312_COM_1.zip: ---------------------------------------------------------- <?xml version="1.0" encoding="US-ASCII"?> <PACKAGE> <PACKAGE_ID>8</PACKAGE_ID> <PACKAGE_NAME>IPSPKG_20110220163312</PACKAGE_NAME> <MODE>Complete</MODE> <SEQUENCE>1</SEQUENCE> <LAST_COMPLETE>1</LAST_COMPLETE> <DATE>2011-02-20 16:37:55.035301 +08:00</DATE> <ADR_BASE>/u01/app/oracle</ADR_BASE> <ADR_HOME>/u01/app/oracle/diag/rdbms/opt/opt</ADR_HOME> <PROD_NAME>rdbms</PROD_NAME> <PROD_ID>opt</PROD_ID> <INST_ID>opt</INST_ID> <OCM_GUID/> <FINALIZED>1</FINALIZED> </PACKAGE> ---------------------------------------------------------- ips unpack file /home/oracle/IPSPKG_20090215012523_COM_1.zip into /home/oracle