ADRCI工具是Oracle11g才推出的新工具,主要用来管理alert文件、trace文件、dump文件、健康监事报告等。
这一篇简单介绍ADRCI工具。
用过11g的人都会发现,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的技术支持。
看一下ADRCI工具的简单命令:
C:Documents and Settingsytk>adrci
ADRCI: Release 11.1.0.6.0 - Beta on 星期日 3月 29 21:23:57 2009
Copyright (c) 1982, 2007, Oracle. All rights reserved.
ADR base = "e:oracle"
adrci> help
HELP [topic]
Available Topics:
CREATE REPORT
ECHO
EXIT
HELP
HOST
IPS
PURGE
RUN
SET BASE
SET BROWSER
SET CONTROL
SET ECHO
SET EDITOR
SET HOMES | HOME | HOMEPATH
SET TERMOUT
SHOW ALERT
SHOW BASE
SHOW CONTROL
SHOW HM_RUN
SHOW HOMES | HOME | HOMEPATH
SHOW INCDIR
SHOW INCIDENT
SHOW PROBLEM
SHOW REPORT
SHOW TRACEFILE
SPOOL
There are other commands intended to be used directly by Oracle, type
"HELP EXTENDED" to see the list
HELP列出了ADRCI工具的所有命令,还可以通过HELP加个别命令的方式来列出这个命令的具体语法,比如:
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
adrci> HELP IPS ADD
Usage: IPS ADD
[INCIDENT <incid> | PROBLEM <prob_id> | PROBLEMKEY <prob_key> |
SECONDS <seconds> | TIME <start_time> TO <end_time>]
PACKAGE <package_id>
Purpose: Add incidents to an existing package.
Arguments:
<incid>: ID of incident to add to package contents.
<prob_id>: ID of problem to add to package contents.
<prob_key>: Problem key to add to package contents.
<seconds>: Number of seconds before now for adding package contents .
<start_time>: Start of time range to look for incidents in.
<end_time>: End of time range to look for incidents in.
Example:
ips add incident 22 package 12
adrci> HELP SHOW PROBLEM
Usage: SHOW PROBLEM [-p <predicate_string>]
[-last <num> | -all]
[-orderby (field1, field2, ...) [ASC|DSC]]
Purpose: Show the problem information. By default, this command will
only show the last 50 problems.
Options:
[-p <predicate_string>]: The predicate string must be double-quoted.
The field names that users can specify in the predicate are:
PROBLEM_ID number
PROBLEM_KEY text(550)
FIRST_INCIDENT number
FIRSTINC_TIME timestamp
LAST_INCIDENT number
LASTINC_TIME timestamp
IMPACT1 number
IMPACT2 number
IMPACT3 number
IMPACT4 number
SERVICE_REQUEST text(64)
BUG_NUMBER text(64)
[-last <num> | -all]: This option allows users to either select
the last <num> of qualified problems to show or to show all the
qualified problems. If this option is not specified, this command
will only show 50 incidents.
[-orderby (field1, field2, ...) [ASC|DSC]]: If specified, the results
will be ordered by the specified fields‘ values. By default, it will be
in the ascending order unless "DSC" is specified. Note that the field
names that can be specified here are from the "PROBLEM" relation.
Examples:
show problem
show problem -p "problem_id>123"
下面是查询数据库中错误的几个小例子:
adrci> show base
ADR base is "e:oracle"
adrci> show home
ADR Homes:
diagclientsuser_systemhost_3414944083_11
diagclientsuser_unknownhost_3414944083_11
diagclientsuser_unknownhost_411310321_11
diagclientsuser_ytkhost_3414944083_11
diagrdbmsytk1110ytk1110
diagtnslsnrytk-thinkpadlistener
adrci> set home diagrdbmsytk1110ytk1110
adrci> show alert -tail 5
2009-02-25 22:51:17.640000 +08:00
Completed: alter database open
2009-02-25 22:55:26.171000 +08:00
Starting background process CJQ0
CJQ0 started with pid=7, OS id=14428
2009-02-25 22:55:49.796000 +08:00
Errors in file e:oraclediagrdbmsytk1110ytk1110traceytk1110_j008_15220.trc
:
ORA-12012: 自动执行作业 11689 出错
ORA-01403: 未找到任何数据
2009-02-25 23:20:39.828000 +08:00
Thread 1 advanced to log sequence 75
Current log# 3 seq# 75 mem# 0: E:ORACLEORADATAYTK111REDO03.LOG
2009-02-26 08:31:51.296000 +08:00
***********************************************************************
Fatal NI connect error 12638, connecting to:
(DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
VERSION INFORMATION:
TNS for 32-bit Windows: Version 11.1.0.6.0 - Production
Oracle Bequeath NT Protocol Adapter for 32-bit Windows: Version 11.1.0.6.0 - Pro
duction
Time: 26-2月 -2009 08:31:51
Tracing not turned on.
Tns error struct:
ns main err code: 12638
TNS-12638: ***明检索失败
ns secondary err code: 0
nt main err code: 0
nt secondary err code: 0
nt OS err code: 0
除了上面交互式的方式外,还可以调用脚本,或者指定一系列命令来批量执行命令:
C:Documents and Settingsytk>adrci -help
Syntax:
adrci [-help] [script=script_filename]
[exec = "one_command [;one_command;...]"]
Options Description (Default)
-----------------------------------------------------------------
script script file name (None)
help help on the command options (None)
exec exec a set of commands (None)
-----------------------------------------------------------------
比如:
C:Documents and Settingsytk>adrci exec="show base;show home;set home diagrdb
msytk1110ytk1110;show home"
ADR base is "e:oracle"
ADR Homes:
diagclientsuser_systemhost_3414944083_11
diagclientsuser_unknownhost_3414944083_11
diagclientsuser_unknownhost_411310321_11
diagclientsuser_ytkhost_3414944083_11
diagrdbmsytk1110ytk1110
diagtnslsnrytk-thinkpadlistener
ADR Homes:
diagrdbmsytk1110ytk1110
在ADRCI众多命令中,比较常用的命令包括SHOW INCIDENT和SHOW PROBLEM。
看看这两个命令的使用:
[[email protected] ~]$ adrci
ADRCI: Release 11.1.0.6.0 - Beta on Sat Feb 14 07:40:14 2009
Copyright (c) 1982, 2007, Oracle. All rights reserved.
ADR base = "/data/oracle"
adrci> show home
ADR Homes:
diag/tnslsnr/yangtk/listener
diag/clients/user_oracle/host_1761010651_11
diag/rdbms/ora11g_p/ora11g
diag/rdbms/ora11g/ora11g
adrci> set home diag/rdbms/ora11g_p/ora11g
adrci> show incident
ADR Home = /data/oracle/diag/rdbms/ora11g_p/ora11g:
*************************************************************************
INCIDENT_ID PROBLEM_KEY CREATE_TIME
------------ ----------------------------- ----------------------------------
178263 ORA 4031 2008-08-06 07:18:22.545029 +08:00
178247 ORA 4031 2008-08-06 07:18:34.820273 +08:00
178239 ORA 4031 2008-08-06 07:18:22.504526 +08:00
178223 ORA 4031 2008-08-06 07:18:24.815544 +08:00
178143 ORA 4031 2008-08-06 07:18:35.246630 +08:00
177075 ORA 4031 2008-08-05 14:58:35.377256 +08:00
177067 ORA 4031 2008-08-05 14:58:58.782595 +08:00
177051 ORA 4031 2008-08-05 14:58:35.422671 +08:00
177043 ORA 4031 2008-08-05 14:58:35.402265 +08:00
176939 ORA 4031 2008-08-05 14:58:54.864399 +08:00
175859 ORA 4031 2008-08-05 13:58:50.980910 +08:00
175858 ORA 4031 2008-08-05 13:58:41.125870 +08:00
175826 ORA 4031 2008-08-05 13:58:42.802084 +08:00
175738 ORA 4031 2008-08-05 13:58:44.351160 +08:00
174657 ORA 4031 2008-08-05 13:46:41.399981 +08:00
174656 ORA 4031 2008-08-05 13:46:38.378564 +08:00
172231 ORA 7445 [ksldclt_cln()+264] 2008-08-04 22:07:06.387781 +08:00
172212 ORA 4031 2008-08-04 22:03:46.338443 +08:00
172211 ORA 4031 2008-08-04 22:03:40.771874 +08:00
172204 ORA 4031 2008-08-04 22:03:46.546782 +08:00
172203 ORA 4031 2008-08-04 22:03:38.053562 +08:00
172187 ORA 4031 2008-08-04 22:03:42.360428 +08:00
169786 ORA 4031 2008-07-30 02:36:18.482753 +08:00
169785 ORA 4031 2008-07-30 02:36:15.666044 +08:00
166151 ORA 603 2008-07-27 17:21:42.556972 +08:00
166129 ORA 603 2008-07-27 15:35:11.931255 +08:00
166039 ORA 4031 2008-07-27 15:21:42.574517 +08:00
166011 ORA 600 [kebm_mmon_main_1] 2008-07-27 17:52:24.860044 +08:00
166009 ORA 4031 2008-07-27 15:21:51.290947 +08:00
166008 ORA 4031 2008-07-27 15:21:45.393293 +08:00
166007 ORA 4031 2008-07-27 15:21:42.666587 +08:00
165999 ORA 4031 2008-07-27 15:21:52.049840 +08:00
161323 ORA 4031 2008-07-01 15:20:51.038193 +08:00
161322 ORA 4031 2008-07-01 15:20:50.132755 +08:00
161321 ORA 4031 2008-07-01 15:20:44.286697 +08:00
161257 ORA 4031 2008-07-01 15:20:48.717581 +08:00
161185 ORA 4031 2008-07-01 15:20:44.285834 +08:00
160110 ORA 4031 2008-06-26 04:15:27.704828 +08:00
160102 ORA 4031 2008-06-26 04:15:25.346548 +08:00
160086 ORA 4031 2008-06-26 04:15:28.601534 +08:00
160070 ORA 4031 2008-06-26 04:15:26.756150 +08:00
159974 ORA 4031 2008-06-26 04:15:24.147550 +08:00
156469 ORA 4031 2008-05-17 05:55:11.601467 +08:00
156453 ORA 4031 2008-05-17 05:55:21.028975 +08:00
156366 ORA 600 [qerghFetch:inc] 2008-05-17 08:10:01.178942 +08:00
156365 ORA 600 [qerghFetch:inc] 2008-05-17 05:02:50.616159 +08:00
156334 ORA 4031 2008-05-17 05:55:15.819541 +08:00
156333 ORA 4031 2008-05-17 05:55:14.628802 +08:00
156317 ORA 4031 2008-05-17 05:55:11.642549 +08:00
153748 ORA 7445 [kokacau()+683] 2008-02-28 05:10:44.389655 +08:00
50 rows fetched
adrci> show problem
ADR Home = /data/oracle/diag/rdbms/ora11g_p/ora11g:
*************************************************************************
PROBLEM_ID PROBLEM_KEY LAST_INCIDENT LASTINC_TIME
----------- ----------------------------- -------------- ----------------------------------
7 ORA 4031 178240 2008-08-06 07:18:43.590263 +08:00
12 ORA 7445 [ksldclt_cln()+264] 172231 2008-08-04 22:07:06.387781 +08:00
11 ORA 600 [kebm_mmon_main_1] 166011 2008-07-27 17:52:24.860044 +08:00
5 ORA 603 166151 2008-07-27 17:21:42.556972 +08:00
10 ORA 600 [qerghFetch:inc] 156366 2008-05-17 08:10:01.178942 +08:00
9 ORA 600 [qmxiUnpPacked2] 152793 2008-02-28 06:08:31.659320 +08:00
8 ORA 7445 [kokacau()+683] 153748 2008-02-28 05:10:44.389655 +08:00
6 ORA 1578 123833 2007-11-24 02:49:43.837675 +08:00
4 ORA 600 [krhpfh_03-1208] 117944 2007-11-09 00:48:49.678494 +08:00
3 ORA 600 [prssptoa2] 96380 2007-10-18 00:53:25.480274 +08:00
2 ORA 600 [kkdcacr: ptn_kxcp] 85602 2007-10-11 22:01:08.539854 +08:00
1 ORA 7445 [koioapm()+254] 14503 2007-09-06 02:50:52.122404 +08:00
12 rows fetched
Oracle将每次错误信息作为一个INCIDENT,通过SHOW INCIDENT可以很方便的了解alert文件中包含所有的错误信息,以及发生的时间点。
而SHOW PROBLEM的结果更加清晰,它会根据Oracle的错误号,将相同的错误信息合并到一起。通过这个结果,可以了解数据库出现了哪些不同的错误信息。
无论是SHOW PROBLEM、SHOW INCIDENT还是SHOW ALERT命令,Oracle都支持定制查询结果,比如只返回ORA-600错误的PROBLEM:
adrci> show problem -p "problem_key like ‘%600%‘"
ADR Home = /data/oracle/diag/rdbms/ora11g_p/ora11g:
*************************************************************************
PROBLEM_ID PROBLEM_KEY LAST_INCIDENT LASTINC_TIME
----------- ---------------------------- -------------- ----------------------------------
11 ORA 600 [kebm_mmon_main_1] 166011 2008-07-27 17:52:24.860044 +08:00
10 ORA 600 [qerghFetch:inc] 156366 2008-05-17 08:10:01.178942 +08:00
9 ORA 600 [qmxiUnpPacked2] 152793 2008-02-28 06:08:31.659320 +08:00
4 ORA 600 [krhpfh_03-1208] 117944 2007-11-09 00:48:49.678494 +08:00
3 ORA 600 [prssptoa2] 96380 2007-10-18 00:53:25.480274 +08:00
2 ORA 600 [kkdcacr: ptn_kxcp] 85602 2007-10-11 22:01:08.539854 +08:00
6 rows fetched
而SHOW INCIDENT还支持更详细的显示,比如:
adrci> show incident -mode detail -p "incident_id=166011"
ADR Home = /data/oracle/diag/rdbms/ora11g_p/ora11g:
*************************************************************************
**********************************************************
INCIDENT INFO RECORD 1
**********************************************************
INCIDENT_ID 166011
STATUS ready
CREATE_TIME 2008-07-27 17:52:24.860044 +08:00
PROBLEM_ID 11
CLOSE_TIME <NULL>
FLOOD_CONTROLLED none
ERROR_FACILITY ORA
ERROR_NUMBER 600
ERROR_ARG1 kebm_mmon_main_1
ERROR_ARG2 36
ERROR_ARG3 <NULL>
ERROR_ARG4 <NULL>
ERROR_ARG5 <NULL>
ERROR_ARG6 <NULL>
ERROR_ARG7 <NULL>
ERROR_ARG8 <NULL>
SIGNALLING_COMPONENT <NULL>
SIGNALLING_SUBCOMPONENT <NULL>
SUSPECT_COMPONENT <NULL>
SUSPECT_SUBCOMPONENT <NULL>
ECID <NULL>
IMPACTS 0
PROBLEM_KEY ORA 600 [kebm_mmon_main_1]
FIRST_INCIDENT 166011
FIRSTINC_TIME 2008-07-27 17:52:24.860044 +08:00
LAST_INCIDENT 166011
LASTINC_TIME 2008-07-27 17:52:24.860044 +08:00
IMPACT1 0
IMPACT2 0
IMPACT3 0
IMPACT4 0
KEY_NAME SID
KEY_VALUE 157.1
KEY_NAME Client ProcId
KEY_VALUE [email protected] (MMON).2774_13056208
KEY_NAME ProcId
KEY_VALUE 14.1
OWNER_ID 1
INCIDENT_FILE /data/oracle/diag/rdbms/ora11g_p/ora11g/trace/ora11g_mmon_2774.trc
OWNER_ID 1
INCIDENT_FILE /data/oracle/diag/rdbms/ora11g_p/ora11g/incident/incdir_166011/ora11g_mmon_2774_i166011.trc
1 rows fetched
利用ADRCI的IPS命令,可以将问题相关的trace文件,打包为一个zip文件,以提供给Oracle的支持人员。
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
IPS包括的命令很多,介绍两种常用的打包方法。
最简单的方法莫过于直接使用PACK命令:
adrci> set home diag/rdbms/ora11g_p/ora11g
adrci> show problem -p "problem_id = 1"
ADR Home = /data/oracle/diag/rdbms/ora11g_p/ora11g:
*************************************************************************
PROBLEM_ID PROBLEM_KEY LAST_INCIDENT LASTINC_TIME
---------- -------------------------- ------------- ----------------------------------
1 ORA 7445 [koioapm()+254] 14503 2007-09-06 02:50:52.122404 +08:00
1 rows fetched
adrci> ips pack problem 1
Generated package1 infile /home/oracle/IPSPKG_20090215012523_COM_1.zip, mode complete
另一种方法是利用CREATE PACKAGE命令,然后添加相关的INCIDENT,最后通过GENERATE PACKAGE命令来生成PACKAGE。
adrci> ips create package
Created package 2 without any contents, correlation level typical
adrci> ips create package problemkey "ORA 7445 [koioapm()+254]"
Created package 3 based on problem key ORA 7445 [koioapm()+254], correlation level typical
adrci> ips add incident 172231 package 3
Added incident 172231 to package 3
adrci> ips add file <ADR_HOME>/trace/ora11g_ora_4582.trc package 3
Added file <ADR_HOME>/trace/ora11g_ora_4582.trc to package 3
adrci> ips generate package 3
Generated package3 infile /home/oracle/IPSPKG_20090215013006_COM_1.zip, mode complete
还可以追加文件到PACKAGE 3:
adrci> ips add new incidents package 3
Added new incidents to package 3
adrci> ips add problem 12 package 3
Added problem 12 to package 3
adrci> ips generate package 3
Generated package3 infile /home/oracle/IPSPKG_20090215013006_COM_2.zip, mode complete
最后简单介绍一下UNPACK命令,这个命令可以将得到的zip文件解压到指定目录:
adrci> ips get metadata from file /home/oracle/IPSPKG_20090215012523_COM_1.zip
IPS metadata from file /home/oracle/IPSPKG_20090215012523_COM_1.zip:
----------------------------------------------------------
<?xml version="1.0" encoding="US-ASCII"?>
<PACKAGE>
<PACKAGE_ID>1</PACKAGE_ID>
<PACKAGE_NAME>IPSPKG_20090215012523</PACKAGE_NAME>
<MODE>Complete</MODE>
<SEQUENCE>1</SEQUENCE>
<LAST_COMPLETE>1</LAST_COMPLETE>
<DATE>2009-02-15 01:25:27.179103 +08:00</DATE>
<ADR_BASE>/data/oracle</ADR_BASE>
<ADR_HOME>/data/oracle/diag/rdbms/ora11g_p/ora11g</ADR_HOME>
<PROD_NAME>rdbms</PROD_NAME>
<PROD_ID>ora11g_p</PROD_ID>
<INST_ID>ora11g</INST_ID>
<OCM_GUID/>
</PACKAGE>
----------------------------------------------------------
adrci> ips unpack file /home/oracle/IPSPKG_20090215012523_COM_1.zip into /home/oracle
Unpacking file /home/oracle/IPSPKG_20090215012523_COM_1.zip into target /home/oracle
adrci> host
[[email protected] ~]$ cd /home/oracle/diag/rdbms/ora11g_p/ora11g/
[[email protected] ora11g]$ ls -l
total 44
drwxr-xr-x 2 oracle oinstall 4096 Feb 15 02:21 alert
drwxr-xr-x 2 oracle oinstall 4096 Feb 15 02:21 cdump
drwxr-xr-x 2 oracle oinstall 4096 Feb 15 02:21 hm
drwxr-xr-x 2 oracle oinstall 4096 Feb 15 02:21 incident
drwxr-xr-x 3 oracle oinstall 4096 Feb 15 02:21 incpkg
drwxr-xr-x 2 oracle oinstall 4096 Feb 15 02:21 ir
drwxr-xr-x 2 oracle oinstall 4096 Feb 15 02:21 lck
drwxr-xr-x 2 oracle oinstall 4096 Feb 15 02:21 metadata
drwxr-xr-x 2 oracle oinstall 4096 Feb 15 02:21 stage
drwxr-xr-x 2 oracle oinstall 4096 Feb 15 02:21 sweep
drwxr-xr-x 2 oracle oinstall 4096 Feb 15 02:21 trace
[[email protected] ora11g]$ ls trace/
alert_ora11g.log
[[email protected] ora11g]$ ls alert
log.xml