AWR是需要在运行Oracle的环境上,获取数据库的相关信息。
创新互联主营环县网站建设的网络公司,主营网站建设方案,重庆App定制开发,环县h5重庆小程序开发公司搭建,环县网站营销推广欢迎环县等地区企业咨询
通过运行 $ORACLE_HOME/rdbms/admin 目录中的 awrrpt.sql 脚本,AWR 的功能可以立即通过它从采集的统计数据和量度中生成的报表得到最好的说明。这个脚本从外观和感觉上类似于 Statspack,它显示所有的现有 AWR 快照并请求两个特定的快照作为时间间隔边界。它产生两种类型的输出:文本格式(类似于 Statspack 报表的文本格式但来自于 AWR 信息库)和默认的 HTML 格式(拥有到部分和子部分的所有超链接),从而提供了非常用户友好的报表。现在运行该脚本以查看报表,从而对 AWR 的功能有一个了解。
手动生成AWR快照号:
exec dbms_workload_repository.create_snapshot
用CRT软件,使用Oracle登录到服务器上:
sqlplus /nolog
conn system/system
@$ORACLE_HOME/rdbms/admin/awrrpt.sql
你通过一个模糊查询like '%表名字%',就能查到存储过程名。
select distinct name from USER_SOURCE where type = 'PROCEDURE' and text like '%TABLE_A%'
这样应该能查到你的这个表涉及到的存储过程了。
Oracle awr报告可以生成两种格式的文件,一个是html,一个是text。
text在linux可以用cat/more/tail命令查看,windows双击就行了。
html也可以这么看,但是还是copy出来到windows机器上看。
如何看懂Oracle数据库AWR报告
先看数据库环境,版本,压力大小等
然后分析命中率,首先你要懂命中率什么意思然后定一个阀值,达到这个阀值有可能会有哪些问题,然后向下找出证据
最后也是最重要的是 等待事件,弄清楚每个等待事件的意义,然后向下找证据
事件下面基本可以看作证据,来证明你对命中率和等待事件的分析。
所以第一:你要会分析出问题。
第二:要知道AWR都收集哪些数据,对你的分析来佐证!
这种问题要回答好要求知识比较全面。
1 从操作系统层次上看
看CPU 内存 swqp(交换分区)等使用率
2 从磁盘上看
主要看磁盘读写。可以用dd测磁盘读写的速度 也可以在业务高峰期检测磁盘的速率。
3 从数据库本身来看。
先要看数据库各个参数的值 。 如sga的大小,process的大小,redo日志的个数与大小等这些关系到性能的参数是否设置合理。
长期观察的方式就是看各个时期的AWR报告。里面有各种性能指标,以及按执行时间或资源排列的sql ,以及各种等待时间的排名。从这里面可以掌握数据库的长期的性能变化。
即时观察的方式就是利用各种sql 查询 数据库在当前时间的各个性能指标(AWR报告里面的各种指标也都是通过sql查询出来的)
还有对数据库整体的一个检查:
如 表的大小,表是否需要分区而没有分区,索引是否创建,索引是否失效,开发人员写的sql是否正确使用到了索引,频繁使用的sql是否有绑定变量,有频繁大批量增删改的表是否存在高水位。。。
额 总之,这个话题涉及的知识非常多,尽可能多的学习一些东西,祝你好运。
方法一、
select * from v$log a where a.THREAD# = 1 ;
set line 200
select b.SEQUENCE#, b.FIRST_TIME,a.SEQUENCE#,a.FIRST_TIME,round(((a.FIRST_TIME-b.FIRST_TIME)*24)*60,2) from v$log_history a, v$log_history b where a.SEQUENCE#=b.SEQUENCE#+1 and b.THREAD#=1 order by a.SEQUENCE# desc;
方法二、
set line 200
select sequence#,first_time,nexttime,round(((first_time-nexttime)*24)*60,2) diff from (select sequence#,first_time,lag(first_time) over(order by sequence#) nexttime from v$log_history where thread#=1) order by sequence# desc;