Oracle AWR (Automatic Workload Repository)

本文介绍了Oracle AWR(自动工作量资料档案库)的基本概念、设置方法及如何管理和使用快照和基线。包括快照的生成、查看和删除,以及如何生成AWR报告等内容。

一、什么是AWR(自动工作量资料档案库)
• 内置的性能信息资料档案库
• 所有自我管理功能的基础
• 保留期:默认八天
• 收集间隔:默认60分钟
• 收集级别:
– Basic(禁用多数 ADDM 功能,自优化功能被禁用)
– Typical(建议级别,默认)
– All(将其它 SQL 优化信息添加到快照中)


基本结构



AWR 基础结构由两个主要部分组成:
• 一个内存中统计信息收集工具,Oracle Database 11g组件使用它来收集统计信息。出于性能方面的考虑,这些统计信息存储在内存中。可以通过动态性能(V$) 视图访问存储在内存中的统计信息。
• 代表该工具持久部分的AWR 快照。AWR 快照可以通过数据字典视图和EnterpriseManager Database Control 来访问。
它为内部Oracle 服务器组件提供服务来收集、处理、维护和使用性能统计信息,以便进行问题检测和自优化。
AWR 中包含数百个表,所有这些表均属于SYSMAN方案且存储在SYSAUX表空间中。


二、AWR的设置
1、查看快照保留期、收集间隔的设置
select * from dba_hist_wr_control;


interval:收集快照的时间间隔。上图为1小时收集一次。
将间隔设置为0时,oracle将禁止采用自动和手工快照的机制。
retention:快照的保存时间。上图为8天。
当保存时间设置为0时,oracle将永久地保存这个快照。
Topnsql :指定收集的比较占用资源的SQL数量,可设置的值最小为30,最大不超过100000000。

2、修改快照保留期、收集间隔的设置

DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(
Retention IN NUMBER DEFAULT NULL,
Interval IN NUMBER DEFAULT NULL,
topnsql IN NUMBER DEFAULT NULL);
Retention保留天数,快照默认是7天
Interval快照设置多少分钟收集一次,默认1小时,最小10分钟,最大100年
Topnsql top几的SQL。
(注:单位都是为分钟)

例子:修改为间隔30分钟,保存15天:
exec dbms_workload_repository.modify_snapshot_settings(retention => 15*24*60,interval => 30);

3、查看快照收集级别
show parameter STATISTICS_LEVEL


二、快照

1、查看所有快照
select * from dba_hist_snapshot order by snap_id desc;

2、创建快照
exec dbms_workload_repository.create_snapshot();--调用MMON进程立即收集快照

3、删除快照
exec dbms_workload_repository.drop_snapshot_range(low_snap_id => 628,high_snap_id => 630);

4、生成AWR报告
@?/rdbms/admin/awrrpt.sql;


三、基线
基线的作用是将一段时间的快照保存下来,以便日后查看,即使是超过快照的保存时间,基线所指定的快照也不会删除。

1、查看基线
select * from dba_hist_baseline;

2、创建基线
dbms_workload_repository.create_baseline(start_snap_id => 108,end_snap_id => 109,baseline_name => 'base line');

3、删除基线
dbms_workload_repository.drop_baseline(baseline_name => 'base line');
dbms_workload_repository.drop_baseline(baseline_name => 'base line',cascade => true);
删除时指定了cascade参数值为true,对应的快照也被级联删除了


四、关于报告的解读
1、Buffer Nowait% ,Buffer Hit%

Buffer 没有等待的时间,越大越好
hit命中率,越大越好。

在一个使用直接读执行大型并行查询的DSS环境,20%的Buffer Hit Ratio是可以接受的,而这个值对于一个OLTP系统是完全不能接受的,要90%。



<think>好的,我现在需要回答用户关于Oracle ADR存储位置的问题。用户之前问过关于RMAN备份遇到坏块的问题,现在转到了ADR的存储位置。我需要先回顾用户提供的引用内容,确保答案准确。 根据引用[2],ADR的基本目录由初始化参数diagnostic_dest指定。用户可以通过SQL命令`show parameter diagnostic_dest`来查看这个路径。例如,如果diagnostic_dest是/u01/app/oracle,那么ADR的基本目录就是这个路径。 引用[3]提到,可以通过查询v$diag_info视图来获取ADR的具体路径信息,比如ADR Base、ADR Home等。例如,ADR Base对应基目录,ADR Home是当前实例的主目录,包含各个子目录如Diag Trace、Diag Alert等。 用户可能需要知道如何查找这些路径,所以需要分步骤说明方法:使用SQL查询参数和视图,以及查看文件系统结构。同时,要指出默认位置(如果未设置diagnostic_dest的话),比如ORACLE_BASE下的log目录。 需要注意引用中的细节,例如ADR的结构,每个实例有自己的主目录,路径层次的一致性。还要提到Alert Log的位置,这在引用[4]和[5]中都有说明,位于ADR Home下的trace目录中,可能以alert_.log的形式存在。 用户可能还会关心如何验证或修改diagnostic_dest,需要简要说明。同时,确保回答结构清晰,分点列出,引用正确的来源,比如引用[1]-[5]中的相关内容。 最后,生成相关问题,比如如何修改存储位置,如何查看日志内容等,帮助用户进一步了解ADR的管理。</think>### **Oracle ADR存储位置详解** #### **一、核心结论** Oracle ADR(Automatic Diagnostic Repository)的存储位置由初始化参数 **`diagnostic_dest`** 决定,其路径可通过以下方式查看: 1. **直接查询参数**: ```sql SHOW PARAMETER diagnostic_dest; ``` 示例输出: ``` NAME TYPE VALUE ---------------- ------- ------------------------------ diagnostic_dest string /u01/app/oracle ``` - 若未显式设置`diagnostic_dest`,默认值为 **`ORACLE_BASE`**(若`ORACLE_BASE`未定义,则指向`ORACLE_HOME/log`)[^2][^3]。 2. **查询动态视图`v$diag_info`**: ```sql SELECT * FROM v$diag_info; ``` 关键字段: - **ADR Base**:ADR根目录(如`/u01/app/oracle`)[^3]。 - **ADR Home**:当前实例的ADR主目录(如`/u01/app/oracle/diag/rdbms/orcl/orcl`)[^1]。 - **Diag Trace**:跟踪文件目录(包含`alert_<SID>.log`等日志)[^4][^5]。 --- #### **二、目录结构解析** ADR采用标准化的目录层次结构,以数据库实例为例: ``` ADR Base │ └───diag └───rdbms └───<db_name> -- 数据库名称 └───<instance_name> -- 实例名称 ├───alert -- XML格式的警报日志 ├───trace -- 文本格式的跟踪文件(含`alert_<SID>.log`) ├───incident -- 意外事件记录 └───... -- 其他子目录(如cdump、hm等) ``` - **关键文件位置**: - **警报日志(Alert Log)**:`<ADR Home>/trace/alert_<SID>.log` [^4][^5]。 - **跟踪文件(Trace Files)**:`<ADR Home>/trace`目录下的`.trc`或`.trm`文件。 - **健康监控报告**:`<ADR Home>/hm`目录。 --- #### **三、特殊场景说明** 1. **多组件环境(如RAC、ASM)**: - 每个组件(如数据库实例、ASM实例、监听器)均有独立的ADR Home目录。 - 示例: - **ASM实例**:`<ADR Base>/diag/asm/+asm/+ASM` - **监听器**:`<ADR Base>/diag/tnslsnr/<hostname>/listener` [^1]。 2. **诊断数据持久性**: - ADR数据不会随数据库实例重启而清除,需定期手动清理或通过ADRCI工具维护[^1][^3]。 --- #### **四、验证与修改方法** 1. **验证当前配置**: - **方法1**:通过SQL*Plus查询: ```sql SHOW PARAMETER diagnostic_dest; ``` - **方法2**:通过操作系统环境变量: ```bash echo $ORACLE_BASE ``` (若`diagnostic_dest`未显式设置,默认与`ORACLE_BASE`一致)[^2][^3]。 2. **修改存储位置**: - **步骤1**:修改参数文件(需重启数据库生效): ```sql ALTER SYSTEM SET diagnostic_dest='/new/path' SCOPE=SPFILE; ``` - **步骤2**:重启数据库: ```sql SHUTDOWN IMMEDIATE; STARTUP; ``` --- #### **五、引用支持** - [^1]: ADR为Oracle组件提供统一的诊断数据存储结构,每个实例有独立目录。 - [^2]: `diagnostic_dest`参数决定ADR根目录,默认与`ORACLE_BASE`关联。 - : 通过`v$diag_info`可获取完整的路径信息。 - [^4][^5]: 警报日志(Alert Log)是运维关键文件,记录数据库重要事件。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值