Oracle AWR文件导出、分析,查看Alert文件_awr和alert-程序员宅基地

技术标签: oracle  数据库  

Oracle Awr报告

一.AWR的概念#

  Oracle数据库是一个使用量很多的数据库,关于Oracle数据库的性能。Oracle10g以后,Oracle提供了一个性能检测的工具:AWR(Automatic Workload Repository 自动工作负载库)这个工具可以自动采集Oracle运行中的负载信息,并生成与性能相关的统计数据。我们可以根据这些统计数据来分析一些潜在的问题。

二.AWR的原理#

  Oracle启动后,后台会有个进程去每小时采集一次系统的快照信息,信息采集来源为: V$active_Session_History视图。该视图可以展示最近活动会话的历史记录。并将采集到的信息保存8天。(查询SQL:select * from dba_hist_wr_control;)采样频率和保存时间可配置。

  快照由MMON和MMNL的进程自动地每隔固定时间采集一次。MMON进程负责执行多种和管理相关的后台任务,MMNL负责执行轻量级切高频率的管理相关的后台任务。

三.导出awr报告#

  oracle 可以将8天的awr快照数据进行储存,我们可以将oracle中的任何两个时间点(输入日期后,会返回相应的时段内,快照对应的时间)生成该段时间内的awr报告。具体生成方式有多种,一般需要sys权限,如果读者有更好的方法,欢迎讨论。

  1.首先登陆sys用户下  sqlplus sys/Gkjzzfdb_2022 as sysdba; 

   然后,再新弹出的窗口中输入@?/rdbms/admin/awrrpt.sql

  

按照提示,输入导出脚本的类型(HTML还是text),输入HTML

  

  这里输入的是返回几天的快照,这里输入1天,表示返回一天的记录

  这里返回的是范围内的所有快照的信息。通过输入两个快照id生成两个快照点之间的报告信息。这里可以根据需要进行选择,比如说,四点的时候,系统出现了明显的卡顿,想要分析这个卡顿出现的原因,那么最好取三点到五点之间的日志,也就是对应的26和28 两个snapId的值。

  从上图可以看出,id为21和22之间服务器进行了重启,不能选择这样的快照区间,不然会抛出异常。

  这里,我们选择12点到18点之间的日志。

然后,输入返回awr对象的名称,建议写一些有代表意义的名称,便于以后查看。

 然后就是一通滚屏,最后可以看到输出成功的提示:

默认输出至 用户 文件夹下

导出的awr报告:

四.分析查看AWK报告#

查看数据库运行的总体情况:

从图中可以看出:

  1. 这是一个双节点的rac中的一个节点的AWR报告。
  2. 数据库版本为:11.1.0.7.0
  3. 平台为Windows X86 64
  4. 有8颗CPU共16个核心数
  5. 一小时内产生了两份快照
  6. 一小时内DB Time为174
  7. 所以,可以计算出这个快照周期内数据库负载为:174/(60*16)=18%。说明此时间段内数据库的负载是很低的。但是要注意一点,由于AWR报告展示的一段时间内的统计数据,如果快照跨度包括了大量的空闲时间,那么计算出来的CPU平均利用率也会偏低。
  8. 图中10点产生快照时候,数据库中有166个session;等到11点时数据库中有181个session

*查看负载分析表:*

建议重点关注以下数据项:

Redo size: *Redo size* *单位* *bytes**,**redo size**可以用来估量**update/insert/delete**的频率,大的**redo size**往往对**lgwr**写日志,和**arch**归档造成**I/O**压力。*

如何解决每秒钟产生大量redo****?

  • 增加redo log****的size
  • 增加redo log****组
  • 增加redo buffer

Logical reads、Block changes、Physical reads、Physical writes:,评估数据库的读/写繁忙程度,判断数据库的活动性质和规模。

逻辑读的单位是块,表中每秒读了50290.4块,那么大小就是50290.4*8K=393M;逻辑读影响全表扫描。

Parses、Hard parses:SQL软解析以及硬解析的次数,评估SQL是否需要优化。

Executes、Transactions:每秒/每事务SQL执行次数、每秒事务数.每秒产生的事务数,反映数据库任务繁重与否。

Recursive Call:递归调用占所有操作的比率.递归调用的百分比,如果有很多PL/SQL,那么这个值就会比较高。

Rollback:每秒回滚率及每事物回滚率,因为回滚很耗资源,如果回滚率过高,可能说明你的数据库经历了太多的无效操作 ,过多的回滚可能还会带来Undo Block的竞争。

*查看实例效率分析报表*

Instance Efficiency Percentages报表显示了Oracle关键指标的内存命中率及其它数据库实例操作的效率:

Buffer Nowait %:在内存获得数据的未等待比例。这个值一般需要大于99%,否则可能存在争用。

Buffer Hit %:数据块在数据缓冲区中的命中率,通常应在95%以上。否则需要调整重要的参数,或者要加大db_cache_size。

Library Hit %:SQL在共享区的命中率,通常应该在95%以上。

Soft Parse %:软解析的百分比,通常应该在95%以上。,

Execute to Parse %:语句执行与分析的比例,反映SQL的重用率。

*查看共享池统计报表*

*Shared Pool Statistics*

Memory Usage %:共享池内存使用率,正常应在75%~90%之间,过低说明有浪费,过高则说明有争用。

% SQL with executions>1:执行次数大于1的SQL的比例。

% Memory for SQL w/exec>1:执行次数大于1的SQL消耗内存的占比。

*查看系统Top10等待*

*一个性能良好的系统,DB CPU项应该排在前5之内*

*查看SQL统计信息*

建议重点关注以下:

SQL ordered by Elapsed Time:记录了执行总时间最长的Top SQL,其中Elapsed Time = CPU Time + Wait Time

SQL ordered by CPU Time:记录了占CPU时间最长的Top SQL

SQL ordered by User I/O Wait Time:记录了执行过程中等待IO时间最长的Top SQL

SQL ordered by Gets:记录了执行最多逻辑读(逻辑IO)的Top SQL

SQL ordered by Reads:记录了执行最多物理读(物理IO)的Top SQL

SQL ordered by Executions:记录了执行次数最多的Top SQL,即使单条SQL****运行速度飞快,任何被执行几百万次的操作都将耗用大量的时间。

SQL ordered by Parse Calls****:记录了软解析次数最多的Top SQL

*查看Undo资源信息*

Undo Statistics部分记录了回滚相关的信息:

*查看行锁等待信息*

Segments by Row Lock Waits表展示了行锁等待信息:

当一个进程在正被其它进程锁住的数据行上获得排它锁时会发生等待,这种等待经常是由在一个有主键索引的表上做大量INSERT操作时引起。

 select * from v$diag_info;
  VALUE
--------------------------------------------------------------------------------

	1 Diag Trace
	/u01/app/oracle/diag/rdbms/orcl/orcl/trace

	1 Diag Alert    #数据库文件目录
	/u01/app/oracle/diag/rdbms/orcl/orcl/alert
进入数据库alert 及trace目录,备份及清理

	cd 进去

	alert 下是log.xml 文件

如果觉得改文章有用,或者需要长期持久学习,请加入我的星球吧~~~~ 扫描二维码即可加入。

这个时代,信息价值比以往任何时候更有价值,一年50元,你将得到每周不少于两次技术分享,各种答疑,梳理各种测试、以及测试周边技能的学习路线,持续更新各种软件开发、软件测试测试资料!!

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/kft1314/article/details/130711110

智能推荐

前端开发之vue-grid-layout的使用和实例-程序员宅基地

文章浏览阅读1.1w次,点赞7次,收藏34次。vue-grid-layout的使用、实例、遇到的问题和解决方案_vue-grid-layout

Power Apps-上传附件控件_powerapps点击按钮上传附件-程序员宅基地

文章浏览阅读218次。然后连接一个数据源,就会在下面自动产生一个添加附件的组件。把这个控件复制粘贴到页面里,就可以单独使用来上传了。插入一个“编辑”窗体。_powerapps点击按钮上传附件

C++ 面向对象(Object-Oriented)的特征 & 构造函数& 析构函数_"object(cnofd[\"ofdrender\"])十条"-程序员宅基地

文章浏览阅读264次。(1) Abstraction (抽象)(2) Polymorphism (多态)(3) Inheritance (继承)(4) Encapsulation (封装)_"object(cnofd[\"ofdrender\"])十条"

修改node_modules源码,并保存,使用patch-package打补丁,git提交代码后,所有人可以用到修改后的_修改 node_modules-程序员宅基地

文章浏览阅读133次。删除node_modules,重新npm install看是否成功。在 package.json 文件中的 scripts 中加入。修改你的第三方库的bug等。然后目录会多出一个目录文件。_修改 node_modules

【】kali--password:su的 Authentication failure问题,&sudo passwd root输入密码时Sorry, try again._password: su: authentication failure-程序员宅基地

文章浏览阅读883次。【代码】【】kali--password:su的 Authentication failure问题,&sudo passwd root输入密码时Sorry, try again._password: su: authentication failure

整理5个优秀的微信小程序开源项目_微信小程序开源模板-程序员宅基地

文章浏览阅读1w次,点赞13次,收藏97次。整理5个优秀的微信小程序开源项目。收集了微信小程序开发过程中会使用到的资料、问题以及第三方组件库。_微信小程序开源模板

随便推点

Centos7最简搭建NFS服务器_centos7 搭建nfs server-程序员宅基地

文章浏览阅读128次。Centos7最简搭建NFS服务器_centos7 搭建nfs server

Springboot整合Mybatis-Plus使用总结(mybatis 坑补充)_mybaitis-plus ruledataobjectattributemapper' and '-程序员宅基地

文章浏览阅读1.2k次,点赞2次,收藏3次。前言mybatis在持久层框架中还是比较火的,一般项目都是基于ssm。虽然mybatis可以直接在xml中通过SQL语句操作数据库,很是灵活。但正其操作都要通过SQL语句进行,就必须写大量的xml文件,很是麻烦。mybatis-plus就很好的解决了这个问题。..._mybaitis-plus ruledataobjectattributemapper' and 'com.picc.rule.management.d

EECE 1080C / Programming for ECESummer 2022 Laboratory 4: Global Functions Practice_eece1080c-程序员宅基地

文章浏览阅读325次。EECE 1080C / Programming for ECESummer 2022Laboratory 4: Global Functions PracticePlagiarism will not be tolerated:Topics covered:function creation and call statements (emphasis on global functions)Objective:To practice program development b_eece1080c

洛谷p4777 【模板】扩展中国剩余定理-程序员宅基地

文章浏览阅读53次。被同机房早就1年前就学过的东西我现在才学,wtcl。设要求的数为\(x\)。设当前处理到第\(k\)个同余式,设\(M = LCM ^ {k - 1} _ {i - 1}\) ,前\(k - 1\)个的通解就是\(x + i * M\)。那么其实第\(k\)个来说,其实就是求一个\(y\)使得\(x + y * M ≡ a_k(mod b_k)\)转化一下就是\(y * M ...

android 退出应用没有走ondestory方法,[Android基础论]为何Activity退出之后,系统没有调用onDestroy方法?...-程序员宅基地

文章浏览阅读1.3k次。首先,问题是如何出现的?晚上复查代码,发现一个activity没有调用自己的ondestroy方法我表示非常的费解,于是我检查了下代码。发现再finish代码之后接了如下代码finish();System.exit(0);//这就是罪魁祸首为什么这样写会出现问题System.exit(0);////看一下函数的原型public static void exit (int code)//Added ..._android 手动杀死app,activity不执行ondestroy

SylixOS快问快答_select函数 导致堆栈溢出 sylixos-程序员宅基地

文章浏览阅读894次。Q: SylixOS 版权是什么形式, 是否分为<开发版税>和<运行时版税>.A: SylixOS 是开源并免费的操作系统, 支持 BSD/GPL 协议(GPL 版本暂未确定). 没有任何的运行时版税. 您可以用她来做任何 您喜欢做的项目. 也可以修改 SylixOS 的源代码, 不需要支付任何费用. 当然笔者希望您可以将使用 SylixOS 开发的项目 (不需要开源)或对 SylixOS 源码的修改及时告知笔者.需要指出: SylixOS 本身仅是笔者用来提升自己水平而开发的_select函数 导致堆栈溢出 sylixos

推荐文章

热门文章

相关标签