Oracle 11g 新特性ADR.docx
- 文档编号:12051726
- 上传时间:2023-04-16
- 格式:DOCX
- 页数:12
- 大小:20.99KB
Oracle 11g 新特性ADR.docx
《Oracle 11g 新特性ADR.docx》由会员分享,可在线阅读,更多相关《Oracle 11g 新特性ADR.docx(12页珍藏版)》请在冰豆网上搜索。
Oracle11g新特性ADR
Oracle11g新特性ADR
ADR主目录
既然所有的焦点都集中于数据库的诊断能力,那么Oracle数据库是不是应该存储以结构化方式组织的所有跟踪文件、日志文件等等?
在Oracle数据库11g中确实如此。
自动诊断信息库(ADR)文件位于一个指定为诊断目标(或ADR基目录)的常用目录下的目录中。
该目录由初始化参数(diagnostic_dest)设置。
默认情况下,它设置为$ORACLE_BASE,但是您可以将其显式设置为某些独占目录。
(但是不建议这样做。
)该目录下有一个diag子目录,您将在这个子目录中发现存储诊断文件的子目录。
ADR存储所有组件(ASM、CRS、监听器等)的日志和跟踪文件,包括数据库本身的日志和跟踪文件。
这使您可以方便地在一个位置查找特定的日志。
在ADR基目录中,可以有多个ADR主目录,每个组件和实例一个。
例如,如果服务器有两个Oracle实例,则有两个ADR主目录。
下面是数据库实例的ADR主目录的目录结构。
目录名称
说明
<在DIAGNOSTIC_DEST参数中提到的目录>
→diag
→rdbms
→<数据库名称>
→<实例名称>
→alert
XML格式的警报日志存储在这里。
→cdump
核心转储存储在这里,相当于早期版本中的core_dump_dest。
→hm
运行情况监视对多个组件运行检查,它在这里存储某些文件。
→incident
所有事件转储都存储在这里。
→<所有事件目录存在这里>
每个事件存储在一个不同的目录中,这些目录都存储在这里。
→incpkg
当您打包事件时(在本文中可以了解打包),某些支持文件存储在这里。
→metadata
有关问题、事件、程序包等的元数据存储在这里。
→trace
用户跟踪文件和背景跟踪文件存储在这里,并附带警报日志的文本版本。
例如,如果您的数据库名称为ODEL11并且实例名称也为ODEL11(大写),则ADR主目录的路径为/home/oracle/diag/rdbms/odel11/ODEL11。
现在,您会在该ADR主目录下看到不同的子目录:
$ls
alertcdumphmincidentincpkgirlckmetadatastagesweeptrace
要支持这个新结构,忽略以前版本中的*_dest参数(background_dump_dest和user_dump_dest)。
(core_dump_dest未被忽略;实际上,Oracle建议您将其设置为很大的核心转储。
)如果您要10g升级到11g,则根本不应设置它们,应该将它们从初始化参数文件中删除以免以后发生冲突。
其他组件的ADR目录结构与此相似。
例如,对于ASM实例,“diag”下的目录名为asm而不是rdbms。
目录结构的其他部分保持不变。
asm的目标名称为+asm。
例如,我的ASM的ADR主目录如下所示:
$pwd
/home/oracle/diag/asm/+asm/+ASM
$ls
alertcdumphmincidentincpkgirlckmetadatastagesweeptrace
对于监听器,diag下的目录为tnslsnr,在该目录下是另一个以主机名命名的目录,然后在该主机名目录下是另一个以监听器名称命名的目录。
在该监听器名称目录下,您会看到其他目录。
<在DIAGNOSTIC_DEST参数中提到的目录>
→diag
→tnslsnr
→<服务器的主机名>
→<监听器名称>
→alert
→trace...
例如,如果主机名为oradba3并且监听器名称为“listener”(默认名称),则该目录为/home/oracle/diag/tnslsnr/oradba3/listener。
在该目录下创建所有其他目录(alert、trace、metadata等)。
与警报日志一样,监听器日志文件也作为XML条目存储在alert子目录下。
普通的文本监听器日志文件仍然在trace目录下创建。
新视图V$DIAG_INFO显示有关ADR主目录的所有详细信息。
在我的RDBMS主目录中,它显示如下:
SQL>select*fromv$diag_info;
INST_IDNAMEVALUE
-------------------------------------------------------------------------------------------------------
1DiagEnabledTRUE
1ADRBase/home/oracle
1ADRHome/home/oracle/diag/rdbms/odel11/ODEL11
1DiagTrace/home/oracle/diag/rdbms/odel11/ODEL11/trace
1DiagAlert/home/oracle/diag/rdbms/odel11/ODEL11/alert
1DiagIncident/home/oracle/diag/rdbms/odel11/ODEL11/incident
1DiagCdump/home/oracle/diag/rdbms/odel11/ODEL11/cdump
1HealthMonitor/home/oracle/diag/rdbms/odel11/ODEL11/hm
1DefaultTraceFile/home/oracle/diag/rdbms/odel11/ODEL11/trace
/ODEL11_ora_3908.trc
1ActiveProblemCount3
1ActiveIncidentCount37
11rowsselected.
这只显示了有关该实例的ADR信息。
要查看其他实例的该信息,只需连接到该实例并从v$diag_info中选择。
视图中的各列都具有自我说明性。
DefaultTraceFile指明当前会话的跟踪文件。
ActiveProblemCount和IncidentCount针对以前描述的问题和事件。
您可以通过两种方式在ADR中访问文件和执行其他操作。
最简单的方法是通过您在前面看到的企业管理器。
另一种方法是使用命令行工具 asrci.下面我们来看看如何使用该工具。
在UNIX(或Windows)命令提示符下,键入“adrci”:
$adrci
ADRCI:
Release11.1.0.6.0-BetaonSunSep2323:
22:
242007
Copyright(c)1982,2007,Oracle.Allrightsreserved.
ADRbase=”/home/oracle”
如您在前面所了解的那样,存在多个 ADR主目录,Oracle组件的每个实例一个。
因此,第一个任务是显示存在多少个主目录。
该命令为 showhomes。
adrci>showhomes
ADRHomes:
diag/rdbms/odel11/ODEL11
diag/rdbms/dbeng1/DBENG1
diag/clients/user_unknown/host_411310321_11
diag/tnslsnr/oradba3/listener
如您所见,存在多个主目录。
要在特定主目录上进行操作,您应该使用 sethomepath 命令:
adrci>sethomepathdiag/rdbms/odel11/ODEL11
设置后,您可以在提示符下发出许多命令。
您可以尝试的第一个命令是 help,它将显示所有可用的命令。
下面是输出的简要摘录:
adrci>help
HELP[topic]
AvailableTopics:
CREATEREPORT
ECHO
EXIT
HELP
HOST
IPS
...
如果您希望了解有关特定命令的更多信息,执行 help<命令>。
例如,如果您希望获得有关showincident命令的使用帮助,执行:
adrci>helpshowincident
Usage:
SHOWINCIDENT[-p
[-modeBASIC|BRIEF|DETAIL]
[-last
[-orderby(field1,field2,...)[ASC|DSC]]
Purpose:
Showtheincidentinformation.Bydefault,thiscommandwill
onlyshowthelast50incidentswhicharenotfloodcontrolled.
Options:
[-p
Thepredicatestringmustbedouble-quoted.
[-modeBASIC|BRIEF|DETAIL]:
Thedifferentmodesofshowingincidents.
[...andsoon...]
这种将统计信息的收集和发布相分开的方法也可用于分区的表。
假定您正在逐个分区地加载一个表。
您不希望只提供部分信息给优化程序,您更希望所有分区的统计信息能够同时被优化程序看到。
但是您还想在加载分区后立刻利用这一时间。
那么,您可以在加载分区后立即收集它的统计信息,但不发布这些信息。
分析完所有分区后,您可以一次性发布这些统计信息。
通过输出,您可以了解命令的用法。
现在要了解已经记录了多少事件,您可以执行:
adrci>showincident-modebasic
ADRHome=/home/oracle/diag/rdbms/odel11/ODEL11:
******************************************************************
INCIDENT_IDPROBLEM_KEYCREATE_TIME
----------------------------------------------------------------------------------------------------------------
14556ORA600[KSSRMP1]2007-10-1704:
01:
57.725620-04:
00
14555ORA600[KSSRMP1]2007-10-1618:
45:
03.970884-04:
00
14435ORA6032007-10-1606:
06:
46.705430-04:
00
14427ORA6032007-10-1606:
06:
42.007937-04:
00
14419ORA6032007-10-1606:
06:
30.069050-04:
00
6001ORA40312007-08-2814:
50:
01.355783-04:
00
5169ORA40312007-09-0419:
09:
36.310123-04:
00
5121ORA40312007-09-0314:
40:
14.575457-04:
00
5017ORA40312007-09-0419:
09:
30.969226-04:
00
4993ORA40312007-09-0419:
09:
33.179857-04:
00
4945ORA40312007-09-0419:
09:
30.955524-04:
00
4913ORA40312007-09-0419:
09:
31.641990-04:
00
将显示所有事件的列表。
现在,您可以获得特定事件的详细信息,如下所示:
adrci>showincident-modedetail-p"incident_id=14556"
ADRHome=/home/oracle/diag/rdbms/odel11/ODEL11:
*************************************************************************
**********************************************************
INCIDENTINFORECORD1
**********************************************************
INCIDENT_ID14556
STATUSready
CREATE_TIME2007-10-1704:
01:
57.725620-04:
00
.
[...andsoon...]
.
INCIDENT_FILE/home/oracle/diag/rdbms/odel11/ODEL11/trace/ODEL11_mmon_14831.trc
OWNER_ID1
INCIDENT_FILE/home/oracle/diag/rdbms/odel11/ODEL11/incident/incdir_14556/ODEL11_mmon_14831_i14556.trc
1rowsfetched
adcri命令行中显示的信息与您将在企业管理器屏幕中看到的内容相似。
但是后者可能更加简单,用户友好得多。
当您由于某种原因无法访问EMSupportWorkbench时,adcri很有用。
您还可以使用adcri缩减警报日志文件或搜索某些日志(监听器、css、crs、警报等)中的特定模式等。
如果您希望以编程方式使用ADR,adcri也很有用。
新的警报日志
在Oracle数据库11g中,警报日志是用XML格式编写的。
为了与以前的工具兼容,传统的警报日志也在trace目录下的ADR主目录中提供。
例如,在上述示例中,您可以在/home/oracle/diag/rdbms/odel11/ODEL11/trace目录中找到alert_ODEL11.log。
但是其他警报日志为XML格式,位于ADR主目录下的alert子目录中。
我们来看文件:
$pwd
/home/oracle/diag/rdbms/odel11/ODEL11/alert
$ls-ltr
total60136
-rw-r-----1oracleoinstall10485977Sep1317:
44log_1.xml
-rw-r-----1oracleoinstall10486008Oct1606:
35log_2.xml
-rw-r-----1oracleoinstall10485901Oct1607:
27log_3.xml
-rw-r-----1oracleoinstall10485866Oct1608:
12log_4.xml
-rw-r-----1oracleoinstall10486010Oct1723:
56log_5.xml
-rw-r-----1oracleoinstall9028631Oct2120:
07log.xml
注意,有多个文件:
log_1.xml、log_2.xml等。
当log.xml达到一定大小时,该文件重命名为log_?
.xml,系统启动一个新文件。
这可以防止警报日志变得过大而无法管理。
新的警报日志通过adrci实用程序—ADR命令行工具进行访问,您已经在前面的部分对它有所了解。
通过adrci工具发出:
adrci>showalertChoosethealertlogfromthefollowinghomestoview:
1:
diag/rdbms/odel11/ODEL112:
diag/clients/user_oracle/host_1967384410_113:
diag/clients/user_unknown/host_411310321_114:
diag/tnslsnr/oradba3/listenerQ:
toquitPleaseselectoption:
您可以从菜单中选择一个主目录或者自己提供一个特定的主目录:
adrci>sethomepathdiag/rdbms/odel11/ODEL11
adrci>showalert
ADRHome=/home/oracle/diag/rdbms/odel11/ODEL11:
[...andthewholealertlogshowuphere...]
您可能不想选择整个警报日志,只是希望指定结尾的几行,例如10行(类似于UNIX中的 tail-10 命令):
adrci>showalert-tail10
2007-09-2319:
57:
44.502000-04:
00
Errorsinfile/home/oracle/diag/rdbms/odel11/ODEL11/trace/ODEL11_arc1_20810.trc:
[...therestofthe10lines...]
或许它最常用的是不断地显示警报日志的后几行,有点类似于UNIX中的 tail-f 命令。
adrci>showalert-tail-f
您可以在adrci命令行提示符下执行脚本。
下面是一个Windows脚本示例,它设置主目录并显示警报日志的最后10行:
C:
\>typeshow_alert_10lines.cmd
sethomepathdiag\rdbms\lapdb11\lapdb11
showalert-tail10
您可以按以下方式调用该脚本:
adrciscript=show_alert_10lines.cmd
类似的功能是exec参数,它允许您直接从命令行运行命令:
adrciexec=”showhomes;showcatalog”
在adrci提示符下,您还可以使用“run”命令或“@”符号运行命令:
adrci>>@show_alert_10lines.cmd
警报日志为XML文件的一个最大好处是信息以结构化方式编写。
警报日志不再是非结构化数据的信息库。
XML格式使文件可以作为表通过adrci进行查看。
要查看该“表”的字段,使用describe命令:
adrci>>describealert_ext
NameTypeNULL?
-------------------------------------------------------
ORIGINATING_TIMESTAMPtimestamp
NORMALIZED_TIMESTAMPtimestamp
ORGANIZATION_IDtext(65)
COMPONENT_IDtext(65)
HOST_IDtext(65)
HOST_ADDRESStext(17)
MESSAGE_TYPEnumber
MESSAGE_LEVELnumber
MESSAGE_IDtext(65)
MESSAGE_GROUPtext(65)
CLIENT_IDtext(65)
MODULE_IDtext(65)
PROCESS_IDtext(33)
THREAD_IDtext(65)
USER_IDtext(65)
INSTANCE_IDtext(65)
DETAILED_LOCATIONtext(161)
UPSTREAM_COMP_IDtext(101)
DOWNSTREAM_COMP_IDtext(101)
EXECUTION_CONTEXT_IDtext(101)
EXECUTION_CONTEXT_SEQUENCEnumber
ERROR_INSTANCE_IDnumber
ERROR_INSTANCE_SEQUENCEnumber
MESSAGE_TEXTtext(2049)
MESSAGE_ARGUMENTStext(129)
SUPPLEMENTAL_ATTRIBUTEStext(129)
SUPPLEMENTAL_DETAILStext(129)
PARTITIONnumber
RECORD_IDnumber
FILENAMEtext(513)
PROBLEM_KEYtext(65)
由于信息是非结构化的,您可以进行精度搜索。
假设您希望搜索警报日志中与某个字段中的特定值匹配的行。
示例如下:
adrci>>showalert-p"module_id='DBMS_SCHEDULER'"
这显示模块id为dbms_scheduler的进程编写的所有行。
您还可以使用不等式运算符(不包含DBMS_SCHEDULER):
adrci>>showalert-p"module_id!
='DBMS_SCHEDULER'"
否则,可以使用模式匹配运算符:
adrci>>showalert-p"module_idlike'%SCHEDULER'"
spool命令的作用与它在SQL*Plus中的同名命令一样。
您可以删除输出中的多余行并生成一个文件:
adrci>>spoola
adrci>>showalert-tail50
adrci>>spooloff
它创建一个包含警报日志的后50行的文件(a.ado)。
该选项的一大用途是从警报日志中提取特定类型的消息。
如果您希望从警报日志中提取与流相关的语句,使用以下命令:
adrci>showalert-p"message_textlike'%STREAM%'"
您也可以通过 adrci 命令提示符查看在ADR基目录中生成的所有跟踪文件。
adrci>>showtracefile
上述命令显示在ADR目录中生成的所有跟踪文件的列表。
要按相反的顺序显示特定类型的跟踪文件(例如,“reco”),使用以下命令:
adrci>>showtracefile%reco%-rt
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Oracle 11g 新特性ADR 11 特性 ADR