百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

AWR 报告介绍及相关工具

ccwgpt 2024-12-16 11:26 98 浏览 0 评论

一、什么是AWR

AWR(Automatic Workload Repository)架构是从oracle 10g开始的,它的前身Statspack,AWR的作用是提供一个时间段内整个系统资源使用情况的报告,它以快照形式自动收集并存储重要的累计统计信息,并可以通过AWR报告的形式反映系统在某个时间段内的运行情况。

AWR工作时是由后台进程MMON负责,缺省下于每1小时生成一个内存统计的快照,并写入磁盘上的sysaux表空间,快照不能移动到其他位置,快照也会作为ADDM的原始数据,默认情况下,Oracle将快照保留8天。

二、AWR的内容

1) AWR收集数据库有关性能信息:它是新的数据库自动调优机制的核心,这些信息包括以下内容:

*基本统计数据:也是v$sysstat和v$sesstat视图中收集的系统和会话的统计信息;

*SQL统计数据:v$sql,v$sqlarea,v$sqltext分别按执行时间、cpu时间、执行次数等标准来统计;

*对象的统计信息;

*时间模型统计信息:告知每个数据库活动要花多长时间。(在v$sys_time_model和v$sess_time_model视图中查看);

*等待统计数据:v$system_event等(来自V$session视图中的几个新添加的字段);

*ASH统计信息:包含近期会话活动的历史记录;

*数据库特性利用的统计数据;

*各种管理顾问会话的结果:如ADDM、Segment Advisor、Sql Access Adivisor等;

*操作系统的统计数据:如I/O和内存的利用率。

2)与AWR有关的参数

SQL> show parameter statistics_level
NAME                       TYPE                               VALUE
------------------------------------ ----------- ------------------------------
statistics_level           string                             TYPICAL

若参数 STATISTICS_LEVEL 设置为 TYPICAL 或 ALL ,将启用AWR采集数据库统计信息。ALL参数收集信息最全,参数的默认值是TYPICAL。

三、AWR报告(OEM提供)

四、手动生成AWR快照和报告

第一步:列出数据库中有多少快照

SYS@ prod>select * from dba_hist_snapshot order by 1 desc;

第二步:创建一个快照

SYS@ prod>exec dbms_workload_repository.create_snapshot;

第三步:根据两个快照建立一个AWR报告

SYS@ prod>@/u01/oracle/rdbms/admin/awrrpt.sql
看到提示:Specify the number of days of snapshots to choose from Snap
Instance DB Name Snap Id Snap Started Level
------------ ------------ --------- ------------------ -----
prod PROD 7 07 8月 2015 13:46 1
8 07 8月 2015 15:00 1
9 07 8月 2015 16:00 1
10 07 8月 2015 17:00 1
11 08 8月 2015 12:15 1
12 08 8月 2015 13:00 1
13 08 8月 2015 14:00 1

【注】:有空行的地方是数据库关闭过,再次启动后所有统计重置,所以报告使用的起始和结束快照之间不能跨越空行。

第四步:得到html格式的报告,缺省的路径是/home/oracle, 可以在Linux下进入图形界面使用缺省的火狐浏览器查看,也可以把它下载到win7下使用浏览器看。

五、如何看AWR报告.pdf

Execute to Parse:是语句执行与分析的比例,即(执行次数/执行次数+解析次数),SQL重用率越高该比例越高。

Parse CPU to Parse Elapse:解析实际运行时间/(解析实际运行时间+解析过程中等待资源时间),越高越好。

Non-Parse CPU:SQL实际运行时间/(SQL实际运行时间+SQL解析时间),越高越好,太低表示消耗解析时间过多。

六、Oracle 的自动维护任务(Autotask)

1) Autotask的三个job:

通过OEM->Server->Oracle Scheduler->Automated Maintenance Tasks查看。

Automatic Optimizer Statistics Collection,

Automatic Segment Advisor,

Automatic SQL Tuning Advisor。

2) 预定义维护窗口

有7种预定义窗口,通过OEM->Server->Oracle Scheduler->Window Groups可以查看,当一个维护窗口打开时,

数据库激活DEFAULT_MAINTENANCE_PLAN,3个自动维护任务运行在ORA$AUTOTASK_SUB_PLAN子计划之下。

3) Autotask使用的程序包

Oracle不给3种自动维护任务分配永久的Scheduler作业,所以不能用DBMS_SCHEDULER程序包管理这些任务。如果想修改Autotask必须使用DBMS_AUTO_TASK_ADMIN程序包。

七、ADDM (Automatic Database Dianostic Monitor)

一)概念:

ADDM根据AWR每小时采集的数据,自动发现快照间隔期间的性能问题。它通常建议调用各个相关的指导(Advisor),比如建议做SQL Tuning Advisor, 或SQL Access Advisor,或者建议创建相关索引。

如果ADDM发现问题,会自动生成的ADDM报告,如果想要ADDM跨越更长的时间段生成报告,也可以手动调用ADDM生成包括任意两个快照间的时间段。

与ADDM有关的参数:

control_management_pack_access 缺省是DIAGNOSTIC+TUNING,如果设成NONE,则ADDM关闭。

默认情况下ADDM报告保存30天。

八、OEM顾问实验

一)ADDM 报告生成:

SQL> @/u01/oracle/rdbms/admin/addmrpt.sql 这是单独生成ADDM报告的脚本

二)ADDM测试示例:

1)在OEM中了解最新AWR快照号和ADDM报告

2)模拟业务高峰

2.1)建立一个大表和小表,分别叫bigtable, smalltable。

sys:

grant connect,resource to tim identified by tim;

tim:

create table bigtable (id number(10),name varchar2(100));
create table smalltable (id number(10),name varchar2(100));

2.2)大表中插入4百万行记录

begin
for i in 1..2500000 loop
insert into bigtable values(i,'test'||i);
if mod(i, 100)=0 then
commit;
end if;
end loop;
end;
/
analyze table bigtable compute statistics;

2.3)小表中插入1000条记录

begin
for i in 1..1000 loop
insert into smalltable values(i,'test'||i);
if mod(i, 100)=0 then
commit;
end if;
end loop;
commit;
end;
/

3)清除shared pool,buffer cache

sys:

alter system flush shared_pool;
alter system flush buffer_cache;

tim:退出重新登录

关联查询:

select count(*) from smalltable a where a.id=(select b.id from bigtable b where b.id=a.id); 
需要1.5--2分钟左右

4)手工即时生成AWR快照

sys:

exec dbms_workload_repository.create_snapshot;

查看ADDM

OEM:Server-->Advisor Central-->Advisor Task Results(画面下方)已经显示了一个ADDM结果:

我们可以尝试单独生成一个ADDM报告,方法:

Server-->Advisor Central--> ADDM-->Run ADDM to analyze past performance

结合图型高峰段选择Period Start Time和Period End Time-->ok

可以看到报告生成的名称是task_nn,然后有Impact(%),Finding,Occurrences等信息

进入第一行,即Finding是Top SQL by DB Time,里面是Recommendations:

5)可以通过SQL Tuning Advisor分析该语句,得到推荐是在bigtable上建立索引。

6)可以通过SQL Access Advisor分析该语句,得到推荐是在bigtable上建物化视图。

7)可以通过Segment Advisor 做表空间级shrink。

最后,到底如何优化,最后还是自己拿主意咯。



the end !!!

@jackman 共筑美好!

相关推荐

NestJS入门教程系列一

介绍Nest(NestJS)是用于构建高效,可扩展的Node.js服务器端应用程序的框架。它使用渐进式JavaScript,内置并完全支持TypeScript(但开发人员仍然能够使用JavaScrip...

【推荐】一个网盘资源搜索与转存工具,支持移动端与PC端!

如果您对源码&技术感兴趣,请点赞+收藏+转发+关注,大家的支持是我分享最大的动力!!!项目介绍CloudSaver是一个基于Vue3和Express的网盘资源搜索与转存开源实用工具。它支持...

Appium原理精讲

目前使用Appium新版本和旧版本的企业数目都很多,而两个版本的安装过程和api的使用又有较大的区别。但是无论表面上的东东如何变化,内部原理都是一样的。在这里我给大家介绍一下appium的核心,增进大...

Kubernetes最小部署单元Pod

一、Kubernetes与Pod简介在当今云计算和容器化技术盛行的时代,Kubernetes已然成为容器编排领域的中流砥柱。它是一个开源的容器编排平台,由Google基于其内部使用的Bo...

最常用的四种跨域解决方案

前置知识什么是跨域?浏览器发送的请求地址(URL)与所在页面的地址不同(端口/协议/域名其一不同)。简言之,浏览器发出的请求url,与其所在页面的url不一样。此时,同源策略会让浏览器拒收服务器...

Bolt.New —— 全栈AI Web自动编程

Bolt.New是由StackBlitz公司推出的,全栈AI工具,代码编辑、运行、部署,通通一站式搞定。它使用WebContainers技术,无需任何本地安装或配置,在浏览器中,就可以运行完整的No...

Nodejs Express新手教程&高手进阶

NodejsExpress新手教程&高手进阶Express是一个NodeJS平台的框架,主要用于构于Web服务器项目。本文将通过示例介绍适合新手入门的Express基础使用,以及高手进阶知识,如:c...

Express.js 创建Node.js Web应用

Express.js是一个基于Node.js的Web应用框架,框架的设计目的是构建应用的架构和简化应用的开发。框架会解决一些通用的问题,在Express.js中,Express框架会处理如:中间件、代...

JavaScript 的 Express.js 功能及应用场景详解

Express.js是一个基于Node.js的轻量级Web应用框架,主要用于快速构建服务器端应用和API。它的核心功能包括以下关键点:1.路由管理URL路径与HTTP方法映射:通过...

nodejs的express4文件下载

在nodejs的express框架中,下载变得非常简单,就一个方法,res.download()首先express命令行生成项目基本框架:不会的看这里:http://blog.csdn.net/zz...

Express 系列:快速生成一个项目

系列预告本系列将以一个项目入手结合相关技术细节来带领大家一起学习Express这个基于Node.js的后端框架。本文首先将介绍:如何快速的生成一个具有一定结构的Express项目。Express项目结...

nodejs的express自动生成项目框架

nodejs版本为:4.X,express版本为4.X1.全局安装2个模块express、express-generator在命令行输入:npminstall-gexpressnpminsta...

express开发(一)简介与搭建

上周末去了趟上海书城,不愧是上海数得上号的书城,流行的科技书应有尽有,话不多说直接上图。最经典的C语言O(∩_∩)O最流行的java(づ ̄3 ̄)づ超酷的R语言/(ㄒoㄒ)/~~然而,身为一个坚定的前...

Vue+Echarts可视化大屏系统后端框架搭建(附代码)

各位同学,大家好。上节课,前面我们讲解了Vue+Echarts前端部分的设计方法。这节课程,我们开始讲解使用Express进行后端设计的方法。01项目相关理论介绍什么是expressExpress是...

Shopify电商API接口开发

Shopify电商API接口开发上线流程主要包括以下步骤。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎洽谈合作。前期准备-注册Shopify账号:在Shopify官网注册,用于后续开发测试...

取消回复欢迎 发表评论: