AWR(Automatic Workload Repository)报告是我们进行日常数据库性能评定、问题SQL发现的重要手段。熟练掌握AWR报告,是做好开发、运维DBA工作的重要基本功。
AWR报告的原理是基于Oracle数据库的定时镜像功能。默认情况下,Oracle数据库后台进程会以一定间隔(一小时)收集系统当前状态镜像,并且保存在数据库中。生成AWR报告时,只需要指定进行分析的时间段(开始镜像编号和结束镜像编号),就可以生成该时间段的性能分析情况。AWR镜像保存在数据库中的时间为一个月左右。
目前Oracle10g之后,AWR报告取代了原先的Statspack报告成为一个主流性能分析报告。通常可以从OEM(Oracle Enterprise Manager Console)平台上生成查看AWR报告。在OEM中,使用图形化方法更加容易。本篇中介绍使用手工脚本方式生成AWR的方法,脱离OEM的限制。
1、 运行脚本
首先,准备一个目录作为AWR生成报告的路径。
[oracle@bspdev /]$ ls -l | grep test
drwxr-xr-x 2 oracle oinstall 4096 Jun 21 13:01 test
[oracle@bspdev /]$ cd test
启动sqlplus等开发工具,调用生成脚本。程序脚本一般保存在$ORACLE_HOME下的rdbms/admin中,名称为awrrptsql。
[oracle@bspdev test]$ sqlplus /nolog
SQLPlus: Release 112010 Production on Tue Jun 21 13:04:44 2011
Copyright (c) 1982, 2009, Oracle All rights reserved
SQL> conn / as sysdba
Connected
--调用脚本,生成文件
SQL> @/rdbms/admin/awrrptsql
之后进入报告参数输入模块。
2、输入报告参数
之后,要持续输入一系列的报告参数。
ü 输入生成报告类型,目前AWR提供txt和html两种格式。需要确认生成格式,默认是html格式。
Current Instance
~~~~~~~~~~~~~~~~
DB Id DB Name Inst Num Instance
----------- ------------ -------- ------------
4143510747 ORA11G 1 ora11g
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'
ü 报告涉及天数范围
启动报告后,会显示生成实例的名称等基本信息。
默认情况下,AWR会将镜像信息保留一个月。手工生成的时候,需要确认生成AWR报告的时间范围。一般情况下,特别是生产环境下,我们通常设置1-7天也就够用了。
Instances in this Workload Repository schema
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
DB Id Inst Num DB Name Instance Host
------------ -------- ------------ ------------ ------------
4143510747 1 ORA11G ora11g bspdevlocal
domain
Using 4143510747 for database Id
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 without
specifying a number lists all completed snapshots
Enter value for num_days: 3
ü 输入开始和结束的snapshot编号
输入天数信息后,AWR生成代码会将天数范围内的snapshot镜像点列出,供输入选择。
Listing the last 3 days of Completed Snapshots
Snap
Instance DB Name Snap Id Snap Started Level
------------ ------------ --------- ------------------ -----
ora11g ORA11G 1789 20 Jun 2011 13:01 1
1790 20 Jun 2011 14:00 1
1791 20 Jun 2011 15:00 1
1792 20 Jun 2011 16:00 1
(篇幅原因,有省略……)
1811 21 Jun 2011 11:00 1
1812 21 Jun 2011 12:00 1
1813 21 Jun 2011 13:00 1
Specify the Begin and End Snapshot Ids
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
之后,我们需要根据列出的时间范围,输入开始和结束的snap编号。
Specify the Begin and End Snapshot Ids
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Enter value for begin_snap: 1796
Begin Snapshot Id specified: 1796
Enter value for end_snap: 1813
ü 确定报告名称
最后就是确定生成报告的名称。一般采用默认的名称就可以了。
Specify the Report Name
~~~~~~~~~~~~~~~~~~~~~~~
The default report file name is awrrpt_1_1796_1813html To use this name,
press to continue, otherwise enter an alternative
Enter value for report_name:
之后输出内容很多,此处不加以累述。最后提示报告生成成功。
Report written to awrrpt_1_1796_1813html
于是,指定目录上可以看到相应的报告文件。
[oracle@bspdev test]$ ls -l
total 508
-rw-r--r-- 1 oracle oinstall 515262 Jun 21 13:10 awrrpt_1_1796_1813html
3、说明两个问题
首先,此处生成的html格式的报表。如果要求生成txt格式,就在生成过程中选择text格式报表。
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'
Enter value for report_type: text
Type Specified: text
End of Report
Report written to awrrpt_1_1789_1800txt
[oracle@bspdev test]$ ls -l
total 692
-rw-r--r-- 1 oracle oinstall 180601 Jun 21 13:27 awrrpt_1_1789_1800txt
-rw-r--r-- 1 oracle oinstall 515262 Jun 21 13:10 awrrpt_1_1796_1813html
第二个就是调用脚本的方式问题。调用时使用的sqlplus客户端可以在Oracle服务器本机上(远程登录),也可以在客户端机器本机上。笔者建议是在客户端本机上进行生成,这样可以避免报告文件来回拷贝的工作。但是最好要保证客户端版本与服务器版本相匹配。
4、结论
手工生成AWR报告,可以避免受到OEM的限制约束,而且灵活度高。本篇记录,权当备忘。
如果在日常工作中遇见了AWR数据量太大,可以通过如下方式做以清除:
SQL> select distinct dbid,db_name,instance_name from wrm$_database_instance;
DBID DB_NAME INSTANCE_NAME
---------- --------- ----------------
2691876695 MYDB mydb
运行如下脚本,清除AWR数据:
SQL> @\rdbms\admin\catnoawrsql
(略)
不重启的话,清空共享池
alter system flush shared_pool;
运行重建AWR脚本:
SQL> @\rdbms\admin\catawrtbsql
(略)
会话已更改
SQL> @\rdbms\admin\utlrpsql
(略)
ORACLE 11g需要需要运行如下脚本:
SQL> @\rdbms\admin\execsvrmsql
SQL> exec dbms_workload_repositorycreate_snapshot;
PL/SQL 过程已成功完成。
如果不对存储过程进行重新编译,执行快照过程会提示如下问题:
SQL> exec dbms_workload_repositorycreate_snapshot;
BEGIN dbms_workload_repositorycreate_snapshot; END;
第 1 行出现错误:
ORA-13516: AWR *** 作失败: AWR Schema not initialized
ORA-06512: 在 "SYSDBMS_WORKLOAD_REPOSITORY", line 99
ORA-06512: 在 "SYSDBMS_WORKLOAD_REPOSITORY", line 122
ORA-06512: 在 line 1
在重新编译了存储过程后,存储过程运行正常
隔5分钟后,再次运行:
SQL> exec dbms_workload_repositorycreate_snapshot;
PL/SQL 过程已成功完成。
SQL> @/rdbms/admin/awrrptsql
注意在RAC环境下的话,需要取消集群参数后,待执行完成后再次修改过来:
alter system set cluster_database = false scope = spfile;
AWR的数据主要有两部分组成:1)保存在内存中的系统负载和性能统计数据,主要通过v$视查询;
2)mmon进程定期以快照(snapshot)的方式将内存中的AWR数据保存到SYSAUX表空间中,主要通过dbA_视访问。
1AWR快照的生成默认情况下,每隔一小时自动产生一个快照,保存最近7天的信息,可以通过以下语句查询:sql>selectSNAP_INTERVAL,RETENTIONfromdba_hist_wr_control;SNAP_INTERVALRETENTION----------------------------------------------------------+0000001:00:000+0000700:00:000可以通过以下语句修改时间间隔和保存时间(以分钟为单位):execdbms_workload_repositorymodify_snapshot_settings(interval=>30,retention=>102460);
也可以根据需要随时手动生成快照:execdbms_workload_repositorycreate_snapshot;2AWR报告的生成以sysdba运行如下命令:@/rdbms/admin/awrrptsql3AWR报告的分析策略因为AWR报告非常长,不可能从头到尾一字不漏的去看,要有选择的去看重点部分。
最好能对照的来读,即和系统正常情况下的AWR报告对比,找差异。
AWR报告采用总分的形式,前面是系统的整体情况,后面是各个部分细节,一开始不要陷入细节,先分析系统的整体状况,对于后面的专题分析,要根据关注点的不同,采取跳跃式分析。
还要根据具体业务的不同,决定某种现象是否正常。
系统整体状况方面1)LoadProfile:分析系了解系统整体负载状况,如每秒中的事务数/语句数,每秒/每事务物理读写次数(PhysicalReads/Writes),逻辑读写次数(LogicalReads/Writes),sql语句的解析(Parse),特别是硬解析次数等。
2)InstanceEfficiencyPercentages:各指标都应接近100%,除了:executetoparse(70%以上)和parsecputoparseelapsed。
如果不符合,基本可以确定系统存在性能问题;
但是如果反过来,即都符合,也不能说明系统完全正常,还要看实际情况。
具体状况方面1)Top5TimedEvents:这里列出消耗时间最多的5个等待事件,每种等待说明,都表示一种原因,如:dbfilesequentialread表示按索引访问出现等待,dbfilescatteredreade表示全表扫描访问出现等待事件。
2)TopNsql:根据时间消耗,内存消耗,物理I/O等排序,对相关sql分析执行计划3)如果是rac环境,需要特别关注racStatistic中的相关指标4)sgapga分析5)分析表空间、数据文件I/O
@是执行本地sql语句
是代表$ORACLE_HOME的值
所以你要嘛 @/home/oracle/app/oracle/product/1120/dbhome_1/rdbms/admin/awrrptisql
要嘛就@/rdbms/admin/awrrptisql
才是正确路径
AWR是需要在运行Oracle的环境上,获取数据库的相关信息。
通过运行 $ORACLE_HOME/rdbms/admin 目录中的 awrrptsql 脚本,AWR 的功能可以立即通过它从采集的统计数据和量度中生成的报表得到最好的说明。
Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的 适应高吞吐量的数据库解决方案。
以上就是关于linux生成awr报告放什么地方全部的内容,包括:linux生成awr报告放什么地方、如何重建或安装Oracle 10g/11g的AWR、如何从awr中分析硬解析较高的语句等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)