一、11g的ADR
在11g中引入了自动诊断资料档案库(AutomaticDiagnostic Repository--ADR)特性,默认情况下各种trace,dump存放的目录位置区别于9i/10g显得更加难以查找了。
ADR基目录中可以包含多个ADR主目录,其中每个ADR主目录都是一个根目录,用于存放特定 Oracle产品或组件的特定实例的全部诊断数据。另外,还生成了两个预警文件。一个是文本形式的预警文件(与早期版本Oracle DB使用的预警文件非常相似),位于各个ADR主目录的TRACE目录下。还有一个符合XML标准的预警消息文件,存储在ADR主目录内的ALERT子目录下。可使用Enterprise Manager 和ADRCI实用程序查看文本格式的预警日志(已删除了XML标记)。
INCIDENT目录包含多个子目录, 每个子目录均以特定意外事件命名,并且仅包含与该意外事件相关的转储。
HM目录包含由健康状况监视器生成的检查器运行报告。
还有一个METADATA目录,其中包含资料档案库自身的重要文件。可以将此目录比作数据库字典。可使用ADRCI查询此字典。
ADR命令解释器(ADRCI) 是一个实用程序,可用于执行支持工作台允许的所有任务(但是仅限于在命令行环境中)。使用 ADRCI 实用程序,还可以查看ADR中跟踪文件的名称以及删除了XML标记、具有和不具有内容筛选功能的预警日志。
此外,还可以使用v$diag_info列出一些重要的ADR位置。
一个需要注意的细节是启用了ADR自动诊断资料档案库后,LISTENER监听器日志的默认位置也被移动到diagnostic_dest下了,而不在如9i/10g那样存放在$ORACLE_HOME/network/log目录下,实际上还是可以将listener.log日志的位置还原回10g的形式,这一点可以通过修改$ORACLE_HOME/network/admin/listener.ora来达成:
$ cat listener.ora # listener.ora Network Configuration File: /u01/app/oracle/11.2/network/admin/listener.ora# Generated by Oracle configuration tools.
LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 服务器IP)(PORT = 1521)) (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) ) )
ADR_BASE_LISTENER = /u01/app/oracle
将以上listener.ora文件的ADR_BASE_LISTENER条目删除,并加上DIAG_ADR_ENABLED_LISTENER = OFF
重启监听服务: lsnrctl reload
常用命令:
show home
show alert(要在操作系统上找到日志位置,或者指定日志位置,这样才会打印日志)
show incident(事件)
show hm_run
二、11g的v$diag_info视图
11g中提供了比传统的gettrcname.sql脚本更为给力的诊断文件位置信息汇总的视图V$DIAG_INFO:
V$DIAG_INFO 视图列出了所有重要的 ADR 位置:
通过查询V$diag_info可以很容易找到自身服务进程的trace文件位置
select name,value from v$diag_info;
对于其他进程的trace文件则可以查询v$process新加入的tracefile列:
col TRACEFILE for a70
select spid,tracefile from v$process;