ORACLE数据库AWR工具学习
AWR(Automatic Workload Repository)即工作负载信息库,主要用于收集数据库运行状态的资料库,通过AWR报告可以分析ORACLE数据库的性能,从而给出优化策略。

图一:此图来自网上
1、AWR的由来
10g之前的oracle:用户的连接将产生会话,当前会话记录保存在v$session中;处于等待状态的会话会被复制一份放在v$session_wait中。当该连接断开后,其原来的连接信息在v$session和v$session_wait中就会被删除;oracle10g及之后保留下了v$session_wait中的这些信息,并多了v$active_session_history(ASH)视图,记录每个活动session在v$session_wait中最近10次的等待事件。
ASH的采样数据是保存在内存中。而分配给ASH的内存空间是有限的,当所分配空间占满后,旧的记录就会被覆盖掉;而且数据库重启后,所有的这些ASH信息都会消失。这样,对于长期检测oracle的性能是不可能的。在Oracle10g中,提供了永久保留ASH信息的方法,这就是AWR。
由于全部保存ASH中的信息是非常耗费时间和空间的,AWR采用的策略是:每小时对v$active_session_history进行采样一次,并将信息保存到磁盘中,并且保留7天,7天后旧的记录才会被覆盖。这些采样信息被保存在视图wrh$_active_session_history中。而这个采样频率(1小时)和保留时间(7天)是可以根据实际情况进行调整的,这就给DBA们提供了更加有效的系统监测工具。具体如何去修改采样频率和保留时间,下文将进行详细介绍。
2、AWR的启用
在默认情况下,Oracle启用数据库统计收集这项功能(即启用AWR)。是否启用AWR由初始化参数STATISTICS_LEVEL控制。
通过SHOW PARAMETER命令可以显示STATISTICS_LEVEL的当前值:
SQL> SHOW PARAMETER STATISTICS_LEVEL
SQL语句的执行结果是:
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
statistics_level string TYPICAL
如果STATISTICS_LEVEL的值为TYPICAL或者 ALL,表示启用AWR;如果STATISTICS_LEVEL的值为BASIC,表示禁用AWR。
初始化参数statistics_level介绍:
AWR的行为受到参数STATISTICS_LEVEL的影响。这个参数有三个值:
(1)BASIC:AWR统计的计算和衍生值关闭.只收集少量的数据库统计信息.
(2)TYPICAL:默认值.只有部分的统计收集.他们代表需要的典型监控oracle数据库的行为.
(3)ALL : 所有可能的统计都被捕捉. 并且有操作系统的一些信息.这个级别的捕捉应该在很少的情况下,比如你要更多的sql诊断信息的时候才使用。
通过以下两种方式来进行对statistics_level参数设置:
alter system set statistics_level=typical; --修改数据库统计信息级别
alter session set statistics_level=typical;--修改当前会话
3、快照(SNAPSHOT)
快照每隔一小时,内存监控进程(MMON)自动地采集一次统计信息,并把这些信息存放到负载库中,一次采样就是一个快照。为了节省空间,采集的数据在7天后自动清除。快照的频率和保留时间可以由用户修改。
--查看快照的频率和保留时间
SQL> SELECT * FROM dba_hist_wr_control;
DBID SNAP_INTERVAL RETENTION TOPNSQL
---------- --------------------------------------- --------------------------------------- ----------
1339601269 +00000 01:00:00.0 +00007 00:00:00.0 DEFAULT
SELECT dbid, snap_interval, snapint_num, retention FROM wrm$_wr_control;
--修改快照的频率和保留时间(单位用分钟)
exec dbms_workload_repository.modify_snapshot_settings(interval=>30, retention=>3*24*60);
备注:
(1)关于内存监控进程(MMON)说明
MMON应该是 Memory Monitor的缩写,但是在有的文档中被记录为Manageability Monitor,这应当是10g早期版本中的称呼,只不过后来发生了变更。这个进程的主要作用: The memory monitor (MMON) process was introduced in 10g and is associated with the Automatic Workload Repository new features used for automatic problem detection and self-tuning. MMON writes out the required statistics for AWR on a scheduled basis.
另一个进程是MMNL,是Memory Monitor Light(MMNL)的缩写,在部分文档中记录为Manageability Monitor Light .这个进程的作用如下: The Memory Monitor Light (MMNL) process is a new process in 10g which works with the Automatic Workload Repository new features (AWR) to write out full statistics buffers to disk as needed.
(2)ORA-13541错误信息
SQL> exec dbms_workload_repository.modify_snapshot_settings(interval=>30,retention => 5*24*60);
begin dbms_workload_repository.modify_snapshot_settings(interval=>30,retention => 5*24*60); end;
ORA-13541: 系统移动窗口基线大小 (691200) 大于保留时间 (432000)
ORA-06512: 在 "SYS.DBMS_WORKLOAD_REPOSITORY", line 89
ORA-06512: 在 "SYS.DBMS_WORKLOAD_REPOSITORY", line 137
ORA-06512: 在 line 2
查看检查当前的移动窗口基线大小
SQL> SELECT dbid, baseline_name, baseline_type, moving_window_size from dba_hist_baseline;
DBID BASELINE_NAME BASELINE_TYPE MOVING_WINDOW_SIZE
---------- ---------------------------------------------------------------- ------------- ------------------
1339601269 SYSTEM_MOVING_WINDOW MOVING_WINDOW 7
修改当前的移动窗口基线大小,便可以修改retention大小。
SQL> exec dbms_workload_repository.modify_baseline_window_size(5);
PL/SQL procedure successfully completed
4、相关AWR视图
SQL> SELECT table_name FROM dba_tables WHERE table_name LIKE 'WRM$%';
TABLE_NAME
------------------------------
WRM$_WR_CONTROL
WRM$_SNAP_ERROR
WRM$_SNAPSHOT
WRM$_DATABASE_INSTANCE
WRM$_COLORED_SQL
WRM$_BASELINE_TEMPLATE
WRM$_BASELINE_DETAILS
WRM$_BASELINE
以上表都存放在sysaux表空间里,另外还有:
SELECT * FROM dba_hist_snapshot;
SELECT * FROM dba_hist_active_sess_history;
SELECT * FROM wrh$_active_session_history;
5、生产AWR报告
Oracle可以产生两种类型的AWR报告:文本格式和HTML 格式。HTML格式的报告界面更加友好。AWR报告用于显示两个快照或者两个时间点之间捕捉到的数据。AWR报告其实就是一张数据库健康体检表,它显示了数据库健康的各项指标。有针对整个数据库的AWR报告,有针对某个实例的AWR报告(在集群环境),有针对单条SQL语句的AWR报告。通过运行Oracle自带的SQL脚本产生。
--产生整个数据库的AWR报告,运行脚本awrrpt.sql。
@$ORACLE_HOME/rdbms/admin/awrrpt.sql
--产生某个实例的AWR报告,运行脚本awrrpti.sql。
@$ORACLE_HOME/rdbms/admin/awrrpti.sql
--产生某条SQL语句的AWR报告,运行脚本awrsqrpt.sql。
@$ORACLE_HOME/rdbms/admin/awrsqrpt.sql --注:
$ORACLE_HOME代表Oracle的主目录。
附注:产生整个数据库的AWR报告。
Oracle的主目录是D:\app\product\11.1.0\db_1\RDBMS\ADMIN 运行脚本awrrpt.sql。
SQL> @D:\app\product\11.1.0\db_1\rdbms\admin\awrrpti.sql Specify the Report Type ~~~~~~~~~~~~~~~~~~~~~~~ Would you like an HTML report, or a plain text report? Enter 'html' for an HTML report, or 'text' for plain text Defaults to 'html' 输入 report_type 的值: html
Type Specified: html
Instances in this Workload Repository schema
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
DB Id Inst Num DB Name Instance Host
------------ -------- ------------ ------------ ------------
* 1339601269 1 ORCL orcl win7-PC
输入 dbid 的值: 1339601269
Using 1339601269 for database Id 输入 inst_num 的值: 1
Using 1 for instance number
Specify the number of days of snapshots to choose from ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Entering the number of days (n) will result in the most recent (n) days of snapshots being listed. Pressing <return> without specifying a number lists all completed snapshots.
输入 num_days 的值: 4
Listing the last 4 days of Completed Snapshots
Snap Instance DB Name Snap Id Snap Started Level
------------ ------------ --------- ------------------ -----
orcl ORCL 83 03 8月 2013 11:21 1 84 03 8月 2013 12:00 1 85 03 8月 2013 13:00 1 86 03 8月 2013 16:29 1 87 03 8月 2013 17:00 1 88 03 8月 2013 21:44 1 89 03 8月 2013 23:00 1 90 04 8月 2013 09:11 1 91 04 8月 2013 10:00 1 92 04 8月 2013 11:00 1
Specify the Begin and End Snapshot Ids ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
输入 begin_snap 的值: 91 Begin Snapshot Id specified: 91 输入 end_snap 的值: 92 End Snapshot Id specified: 92
Specify the Report Name
~~~~~~~~~~~~~~~~~~~~~~~
The default report file name is awrrpt_1_91_92.html. To use this name, press <return> to continue, otherwise enter an alternative.
输入 report_name 的值:myawrreport.html
6、使用shell或者python自动生产AWR报告
http://wenku.baidu.com/view/940d262a647d27284b73518f.html[参考]
----------the end --------------
本文内容非常感谢[蓝紫博主]博客地址:
http://www.cnblogs.com/lanzi/archive/2011/03/07/1975096.html
oracle官网参考:
http://docs.oracle.com/cd/B19306_01/appdev.102/b14258/d_wkrpos.htm#BACEHJJI
ORACLE数据库AWR工具学习的更多相关文章
- 访问Oracle数据库的工具【unfinished】
ylbtech-Oracle:访问Oracle数据库的工具 访问Oracle数据库的工具 1. SQL*PLUS返回顶部 1.0, 1.0.1, 之network\admin\tnsnames.ora ...
- 愚公oracle数据库同步工具
最近,利用一些时间对oracle数据库实时同步工具做了一些调研分析,主要关注了linkedin的databus和阿里的yugong两个中间件,其中databus需要在每个待同步的表上增加额外的列和触发 ...
- 在VMware安装Centos再安装Oracle数据库(个人学习使用)
打开VMware 选择稍后安装 自定义安装 小生安装的是64位的Centos 给虚拟机设置名称和安装位置 设置虚拟机打处理器并分配内存(oracle12G我建议内存为2G以上) 网络类型选择仅主机模式 ...
- MySQL数据库Inception工具学习与测试 笔记
MySQL语句的审核,在业界都已经基本被认同了,实际上也是对MySQL语句写法的统一化,标准化,而之前的人工审核,针对标准这个问题其实是很吃力的,标准越多,DBA越累,开发也越累. 那么在这个都追求自 ...
- 获取Oracle数据库awr报告方法
--登录数据库 sqlplus username/passwd; --运行生成AWR报告脚本 SQL> @?/rdbms/admin/awrrpt.sql; --输入要生成报告的格式:htm ...
- oracle数据库可视化工具
1.TreeSoft基于web网页方式,管理维护oracle数据,功能包括:SQL在线执行,数据在线维护管理,数据导出,数据交换同步等. 支持MySQL,Oracle,DB2,PostgreSQL,S ...
- Oracle数据库sqlldr工具的使用
sqlldr导入文本内容到数据库表时,需要指定一个ctl文件(控制文件),通过该文件来完成数据的导入. 1 首先创建一个表student create table student( stu_id nu ...
- [转]Oracle数据库ASH和AWR的简单介绍
在Oracle数据库中,有时我们可能会遇到这样的术语:ASH和AWR,那么它们是怎样产生的呢?它们的作用又是什么呢?本文我们就来介绍这一部分内容. 1.10g之前 用户的连接将产生会话,当 ...
- 【风哥干货】快速解决Oracle数据库故障必备的20个脚本与命令
1.操作系统性能(通常故障出现时最先检查的内容)top.topas.vmstat.iostat.free.nmon 2.万能重启方法 如应急情况,需要重启数据库:tail -100f <对应路径 ...
随机推荐
- centos下kubernetes+flannel部署(旧)
更合理的部署方式参见<Centos下Kubernetes+Flannel部署(新)> 一.准备工作 1. 三台centos主机 k8s(即kubernetes,下同)master: 10. ...
- 运维甩锅神器---Jumpserver
简介jumpserver 也就是跳板机,堡垒机,主要用于免密钥登陆web终端,可以对所有操作进行记录,录像!对所有服务器进行资产管理, 给开发人员分配登陆主机的权限和sudo权限,为运维人员省了很多手 ...
- 在 Ubuntu下安装 labelImg (标数据用)
安装 SIP 下载 SIP 并解压 : $ sudo python configure.py $ make $ sudo make install 安装 依赖库 $ sudo apt-get ins ...
- TCP三次握手/四次挥手
TCP 三次握手 TCP 连接是通过三次握手进行初始化的.三次握手的目的是同步连接双方的序列号和确认号并交换 TCP 窗口大小信息.以下步骤概述了通常情况下客户端计算机联系服务器计算机的过程: 1. ...
- .Net Core使用 MiniProfiler 进行性能分析(转)
转自:http://www.cnblogs.com/ideacore/p/9505425.html 官方文档: https://miniprofiler.com/dotnet/AspDotNetCor ...
- 远程通信机制RPC与RMI的关系
1.RPC RPC(Remote Procedure Call Protocol)远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议.RPC不依赖于具体的网 ...
- 细说setTimeout/setImmediate/process.nextTick的区别
node.js中的非IO的异步API提供了四种方法,分别为setTimeOut(),setInterval(),setImmediate()以及process.nextTick(),四种方法实现原理相 ...
- Python socket编程之构造IP首部和ICMP首部
这两天在做一个实验需要自己构造IP首部,遇到诸多问题,搞了一天终于搞定. 关于socket的介绍网上一大堆,我只记录构造IP头时我遇到的问题.由于没玩过socket构造IP首部,网上找了段代码研究下, ...
- chrome 等浏览器不支持本地ajax请求的问题
chrome 等浏览器不支持本地ajax请求的问题 XMLHttpRequest cannot load file:///D:/WWW/angularlx/ui-router-test/templat ...
- ABP学习入门系列(二)(abp的数据迁移)
本文将介绍在ABP框架中将实体类迁移至数据库表 1.下图是abp的体系结构. 我们要是实现创建实体类并迁移数据到数据库的功能主要就是在下图中domain(领域层)做相应的一些操作. 2,看一下解决方案 ...