oracle数据库:数据文件_笔记5
3.2跟踪文件(续)
3.2.2针对内部错误生成的跟踪文件
这些跟踪文件不是我们想要的,只是由于ORA-00600或另外某个内部错误而自动生成。对这些跟踪文件我们能做些什么吗?
我们向Oracle Support提交服务请求时,这些跟踪文件会很有用。有一点很重要:如果得到内部错误,修改这个错误的唯一办法就是提交一个服务请求。如果将错误忽略,除非出现意外,否则它们不会自行修正。
从11g开始,收集跟踪信息以及上传到Oracle Support的过程有所改变。利用ADRCI命令行工具,再结合Enterprise Manager的用户界面,可以轻松查看ADR中的跟踪信息,并把它们打包传输到Oracle Support。
ADRCI工具允许你查看“问题”(数据库中的关键性错误)和事件(这些关键性错误的出现),并将它们打包以便传输到Oracle Support。打包步骤不仅包括获取跟踪信息,还包括获取数据库警告日志的详细信息以及其他配置/测试用例信息。
[oracle@vcenteroracle ~]$ adrci
ADRCI: Release 11.2.0.3.0 - Production on Tue Sep 3 18:26:35 2013
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
ADR base = "/home/oracle/app/oracle"
adrci> show problem
ADR Home = /home/oracle/app/oracle/diag/tnslsnr/vcenteroracle/listener:
*************************************************************************
0 rows fetched
ADR Home = /home/oracle/app/oracle/diag/tnslsnr/vcenteroracle/orcl:
*************************************************************************
0 rows fetched
ADR Home = /home/oracle/app/oracle/diag/rdbms/vcenter/vcenter:
*************************************************************************
PROBLEM_ID PROBLEM_KEY LAST_INCIDENT LASTINC_TIME
-------------------- ----------------------------------------------------------- -------------------- ----------------------------------------
1 ORA 445 2609 2013-06-06 21:14:35.412000 +08:00
ADR Home = /home/oracle/app/oracle/diag/rdbms/shop/shop:
*************************************************************************
PROBLEM_ID PROBLEM_KEY LAST_INCIDENT LASTINC_TIME
-------------------- ----------------------------------------------------------- -------------------- ----------------------------------------
1 ORA 445 9721 2013-07-17 17:02:03.243000 +08:00
ADR Home = /home/oracle/app/oracle/diag/rdbms/orcl/orcl:
*************************************************************************
PROBLEM_ID PROBLEM_KEY LAST_INCIDENT LASTINC_TIME
-------------------- ----------------------------------------------------------- -------------------- ----------------------------------------
1 ORA 600 [923] 7233 2013-09-01 07:14:19.055000 +08:00
ADR Home = /home/oracle/app/oracle/diag/clients/user_oracle/host_2424499387_80:
*************************************************************************
0 rows fetched
adrci>
通过执行show incident命令,可以看到哪些方面会受错误的影响:
adrci> show incident
ADR Home = /home/oracle/app/oracle/diag/tnslsnr/vcenteroracle/listener:
*************************************************************************
0 rows fetched
ADR Home = /home/oracle/app/oracle/diag/tnslsnr/vcenteroracle/orcl:
*************************************************************************
0 rows fetched
ADR Home = /home/oracle/app/oracle/diag/rdbms/vcenter/vcenter:
*************************************************************************
INCIDENT_ID PROBLEM_KEY CREATE_TIME
-------------------- ----------------------------------------------------------- ----------------------------------------
2521 ORA 445 2013-06-06 21:14:35.313000 +08:00
2609 ORA 445 2013-06-06 21:14:35.412000 +08:00
ADR Home = /home/oracle/app/oracle/diag/rdbms/shop/shop:
*************************************************************************
INCIDENT_ID PROBLEM_KEY CREATE_TIME
-------------------- ----------------------------------------------------------- ----------------------------------------
9721 ORA 445 2013-07-17 17:02:03.243000 +08:00
ADR Home = /home/oracle/app/oracle/diag/rdbms/orcl/orcl:
*************************************************************************
INCIDENT_ID PROBLEM_KEY CREATE_TIME
-------------------- ----------------------------------------------------------- ----------------------------------------
6193 ORA 600 [923] 2013-09-01 07:14:01.806000 +08:00
6194 ORA 600 [923] 2013-09-01 07:14:06.558000 +08:00
6195 ORA 600 [923] 2013-09-01 07:14:08.353000 +08:00
6196 ORA 600 [923] 2013-09-01 07:14:09.965000 +08:00
6197 ORA 600 [923] 2013-09-01 07:14:12.331000 +08:00
ADR Home = /home/oracle/app/oracle/diag/clients/user_oracle/host_2424499387_80:
*************************************************************************
0 rows fetched
通过show tracefile命令可以得出与各个事件相关的信息:
adrci> show tracefile -I 6196
diag/rdbms/orcl/orcl/incident/incdir_6196/orcl_m000_2268_i6196_a.trc
diag/rdbms/orcl/orcl/incident/incdir_6196/orcl_ora_2214_i6196.trc
更进一步,如果执行以下命令,会看到有关这个事件的大量详细信息:
adrci> show incident -mode detail -p "incident_id=6196"
ADR Home = /home/oracle/app/oracle/diag/tnslsnr/vcenteroracle/listener:
*************************************************************************
0 rows fetched
<INCIDENT_INFO mode="detail">
<ADR_HOME name="/home/oracle/app/oracle/diag/tnslsnr/vcenteroracle/listener">
ADR Home = /home/oracle/app/oracle/diag/tnslsnr/vcenteroracle/orcl:
*************************************************************************
0 rows fetched
</ADR_HOME>
<ADR_HOME name="/home/oracle/app/oracle/diag/tnslsnr/vcenteroracle/orcl">
ADR Home = /home/oracle/app/oracle/diag/rdbms/vcenter/vcenter:
*************************************************************************
0 rows fetched
</ADR_HOME>
<ADR_HOME name="/home/oracle/app/oracle/diag/rdbms/vcenter/vcenter">
ADR Home = /home/oracle/app/oracle/diag/rdbms/shop/shop:
*************************************************************************
0 rows fetched
</ADR_HOME>
<ADR_HOME name="/home/oracle/app/oracle/diag/rdbms/shop/shop">
ADR Home = /home/oracle/app/oracle/diag/rdbms/orcl/orcl:
*************************************************************************
**********************************************************
INCIDENT INFO RECORD 1
**********************************************************
INCIDENT_ID 6196
STATUS ready
CREATE_TIME 2013-09-01 07:14:09.965000 +08:00
PROBLEM_ID 1
CLOSE_TIME <NULL>
FLOOD_CONTROLLED none
ERROR_FACILITY ORA
ERROR_NUMBER 600
ERROR_ARG1 923
ERROR_ARG2 _olap_parallel_update_small_threshold
ERROR_ARG3 <NULL>
ERROR_ARG4 <NULL>
ERROR_ARG5 <NULL>
ERROR_ARG6 <NULL>
ERROR_ARG7 <NULL>
ERROR_ARG8 <NULL>
ERROR_ARG9 <NULL>
ERROR_ARG10 <NULL>
ERROR_ARG11 <NULL>
ERROR_ARG12 <NULL>
SIGNALLING_COMPONENT system_param
SIGNALLING_SUBCOMPONENT <NULL>
SUSPECT_COMPONENT <NULL>
SUSPECT_SUBCOMPONENT <NULL>
ECID <NULL>
IMPACTS 0
PROBLEM_KEY ORA 600 [923]
FIRST_INCIDENT 6193
FIRSTINC_TIME 2013-09-01 07:14:01.806000 +08:00
LAST_INCIDENT 7233
LASTINC_TIME 2013-09-01 07:14:19.055000 +08:00
IMPACT1 0
IMPACT2 0
IMPACT3 0
IMPACT4 0
KEY_NAME Client ProcId
KEY_VALUE oracle@vcenteroracle (TNS V1-V3).2214_47609173380656
KEY_NAME SID
KEY_VALUE 8.1353
KEY_NAME ProcId
KEY_VALUE 24.28
KEY_NAME PQ
KEY_VALUE (16777216, 1377990839)
OWNER_ID 1
INCIDENT_FILE /home/oracle/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_ora_2214.trc
OWNER_ID 1
INCIDENT_FILE /home/oracle/app/oracle/diag/rdbms/orcl/orcl/incident/incdir_6196/orcl_m000_2268_i6196_a.trc
OWNER_ID 1
INCIDENT_FILE /home/oracle/app/oracle/diag/rdbms/orcl/orcl/incident/incdir_6196/orcl_ora_2214_i6196.trc
ADR Home = /home/oracle/app/oracle/diag/clients/user_oracle/host_2424499387_80:
*************************************************************************
0 rows fetched
最后,可以创建这个事件的一个“包”,这会对Oracle Support很有帮助。
adrci> ips create package incident 6196
DIA-48448: This command does not support multiple ADR homes
adrci> help ips create package
Usage: IPS CREATE PACKAGE
[INCIDENT <incid> | PROBLEM <prob_id> | PROBLEMKEY <prob_key> |
SECONDS <seconds> | TIME <start_time> TO <end_time>]
[CORRELATE BASIC | TYPICAL | ALL]
Purpose: Create a package, and optionally select contents for the package.
Arguments:
<incid>: ID of incident to use for selecting package contents.
<prob_id>: ID of problem to use for selecting package contents.
<prob_key>: Problem key to use for selecting package contents.
<seconds>: Number of seconds before now for selecting package contents.
<start_time>: Start of time range to look for incidents in.
<end_time>: End of time range to look for incidents in.
Options:
CORRELATE BASIC: The package will include the incident dumps, and the
incident process trace files.
Additional incidents can be included automatically,
if they share relevant correlation keys.
CORRELATE TYPICAL: The package will include the incident dumps, and all
trace files that were modified in a time window around
each incident.
Additional incidents can be included automatically,
if they share relevant correlation keys, or occurred
in a time window around the main incidents.
CORRELATE ALL: The package will include the incident dumps, and all
trace files that were modified between the first
selected incident and the last selected incident.
Additional incidents can be included automatically,
if they occurred in the same time range.
Notes:
If no package contents are specified (incident, problem, etc), an empty
package will be created. Files and incidents can be added later.
If no correlation level is specified, the default level is used.
The default is normally TYPICAL, but it can be changed using the command
IPS SET CONFIGURATION.
Example:
ips create package incident 861;
ips create package time '2006-12-31 23:59:59.00 -07:00' to
'2007-01-01 01:01:01.00 -07:00';
实际上,在10g以及之前版本中也可以做同样的工作,只不过要手动完成。例如,快速检查一个跟踪文件的开始部分,就能得到一些有用的信息。
如果访问http://metalink.oracle.com来提交服务请求,或者搜索你遇到的问题查看是否早已经有人提出过,此时数据库信息会很重要。另外,可以看到出现错误的Oracle实例。并发运行多个实例非常常见,所以将问题隔离到某一个实例中会很有用。
???
还需要注意跟踪文件中下面这一部分:
***2010-01-20 14:32:40.007
***ACTION NAME:()2010-01-20 14:32:39.988
***MODULE NAME:(SQL*Plus)2010-01-20 14:32:39.988
***SERVICE NAME:(SYS$USERS)2010-01-20 14:32:39.988
跟踪文件中的这一部分是10g新增的,9i及更早版本里没有。它显示了V$SESSION的ACTION和MODULE列中的会话信息。这里可以看到,是一个SQL*Plus会话导致了错误(开发人员应该设置ACTION和MODULE信息;有些环境已经为你做了这项工作,如Oracle Forms和APEX)。
另外还可以得到SERVICE NAME。这就是连接数据库所用的服务名(这里就是SYS$USERS),由此看出没有通过TNS服务来连接。如果使用user/pass@ora10g.localdomain登录,可以看到:
***SERVICE NAME:(SYS$USERS)2010-01-20 14:32:39.988
其中ora10g是服务名(而不是TNS连接串。这是所连接TNS监听器中注册的最终服务)。这对于跟踪哪个进程或模块受此错误影响很有用。
最后,在查看具体的错误之前,可以看到会话ID和相关的日期/时间等进一步的标识信息(所有版本都提供了这些信息):
***SESSION ID:(19.27995)2010-01-20 14:32:39.988
错误本身有一些重要的信息。首先,可以看到产生内部错误时正在执行的SQL语句,这有助于跟踪哪个(哪些)应用会受到影响。同时,由于这里能看到SQL,所以可以研究采用哪些“迂回路线”,用不同的方法编写SQL,看看能不能很快绕过问题解决bug。另外,也可以把出问题的SQL剪切并粘贴到SQL*Plus中,看看能不能为Oracle Support提供一个可再生的测试用例。
另一个重要信息是错误码(通常是600、3113或7445)以及与错误码相关的其他参数。使用这些信息,再加上一些栈跟踪信息(显示按顺序调用的一组Oracle内部子例程),可能会发现这个bug已经报告过(还能找到解决方法、补丁等)。例如,使用以下询串:
ora-00600 12410 ksesic0 qerixAllocate qknRwsAllocateTree
http://blog.csdn.net/wankaiming/article/details/7798515
Oracle工具——ADRCI
http://wenku.baidu.com/view/05ecc90d4a7302768e99391e.html
如何在Oracle数据库10g中跟踪SQL
http://wenku.baidu.com/view/da99046ea26925c52cc5bf3f.html
使用trusss工具跟踪Oracle Sqlplus 登陆数据库错误
http://www.52ij.com/jishu/5149.html
oracle数据库:数据文件_笔记4
本文来源 我爱IT技术网 http://www.52ij.com/jishu/5150.html 转载请保留链接。
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
