Oracle awr 的是使用方法.docx
《Oracle awr 的是使用方法.docx》由会员分享,可在线阅读,更多相关《Oracle awr 的是使用方法.docx(29页珍藏版)》请在冰豆网上搜索。
Oracleawr的是使用方法
ASH和AWR的故事
1.1 关于ASH
我们都知道,用户在ORACLE数据库中执行操作时,必然要创建相应的连接和会话,其中,所有当前的会话信息都保存在动态性能视图V$SESSION中,通过该视图,DBA可以查看用户实际执行的操作,或者当前的等待事件等。
通常这部分信息是调优过程中的关键信息,不过,一旦连接断开。
会话信息就会被同时从V$SESSION及其它相关视图中清除,也就是说,用户执行完操作走人,而你(DBA),如果不能在当前逮到他,过了这点,就不知道它曾经做过什么了。
10g版本中,ORACLE又新增加了一个视图(其它是若干,不过咱们还是以session为引子说):
V$ACTIVE_SESSION_HISTORY,看名字就知道,就是活动会话的历史记录,这下,即使用户操作完成后,断开了连接也不怕,因为其会话的情况已经被记录了下来,这项特性就是ASH了,全称与视图名相同,正是:
ACTIVE SESSION HISTORY。
ASH每秒钟收集一次当前处于非空闲等待事件的、活动状态的、session的信息,并保存在V$ACTIVE_SESSION_HISTORY视图中,我们(应该以及必须)知道,动态性能视图其实上是ORACLE自行构造的一堆存在于SGA内存区的虚表,就是说,ASH的数据是保存在内存里的,实际上,ORACLE分配给ASH的空间并不是无限大(更何况ORACLE自身管理的内存空间也不是无限大),查看ASH可供使用的内存空间,可以通过如下SQL:
SQL> select pool, name, bytes/1024/1024 Mb From v$sgastat where name like ¨ASH %¨;
POOL NAME Mb
------------ -------------------------- ---------------
shared pool ASH buffers 15.5
直白的讲,V$ACTIVE_SESSION_HISTORY中能够记录多少会话信息,一方面取决于该数据库的SGA分配给ASH buffers的大小,另一方面取决于数据库的启动和关闭(重启数据库时将重构SGA内存区)。
这两方面的因素制约了V$ACTIVE_SESSION_HISTORY中能够保存的会话信息的能力,做为DBA,我们肯定是希望ASH尽可能多的保留关于会话的信息,但目前来看单纯依靠V$ACTIVE_SESSION_HISTORY肯定无法实现这点,那怎么办呢?
别担心,ORACLE又提供了AWR特性,ASH收集到的会话信息,是做为AWR中快照信息的一部分,被保存到了硬盘上。
1.2 关于AWR
AWR是Oracle 10g版本推出的新特性,全称叫Automatic Workload Repository-自动负载信息库。
谈到这一特性呢,不得不先提Statspack,Statspack称的上是ORACLE世界里的老人了,不过毕竟年岁大了,腿脚虽然还算灵便,但效率不那么高了,用时髦话讲就是不能适应时代发展步伐,不能紧跟时代潮流,不能保持做为一名优秀党员的先进性,始终坚持带三个表的为DBA服务。
但是,说到底Statspack还是为了党国事业奋斗了一辈子,在党内还是有势力有威信有地位有影响的四有老人,还有余热可以发挥,虽然其在统计实时性方面,表现已不足以满足DBA多变的需求,依然不能一下就将其拿下,因此ORACLE采取渐进方式先推出了AWR,说是辅助Statspack工作,其实明眼人一看就明了,这是新指定的接班人哪。
提示:
关于Statspack的学和用请参考三思笔记相关章节:
AWR与前辈Statspack在职业定位方面是相同的,都是负责收集、处理并维护性能统计信息,用于检查和分析性能问题(甚至生成的报告格式都非常接近),AWR生成的统计数据即可以通过V$视图和DBA_*数据字典查看,也可以通过脚本来生成相应报表。
谈到相比Statspack,AWR究竟在哪些方面有所提升呢,捡主要的讲就两条:
自动+实时,至于功能上的些许提高,不过是因为AWR年轻腿脚利索罢了。
提示:
进入10g版本,ORACLE更加注重强调使用EM(Enterprise Manager)管理各项操作,不过考虑性能、通用度等各方面因素,这里三思仍然主要通过脚本操作来使用AWR和ASH的各项功能。
生成分析报表
AWR是通过对比两次快照(snapshot)收集到的统计信息,来生成报表数据,生成的报表包括多个部分,这点与Statspack生成的报告非常类似。
不过AWR在生成报告时,可以选择生成TXT或HTML两种格式的报告,相对来说,HTML更利于阅读,而TXT的适用性更广(即使在不能使用浏览器的机器上也能看)。
操作过Statspack的朋友都还记的,生成报告使用$ORACLE_HOME/rdbms/admin/spreport.sql脚本,到了AWR这片,操作步骤基本上相同,不过生成报告的脚本多了很多选择,包括:
∙awrrpt.sql:
生成指定快照区间的统计报表;
∙awrrpti.sql:
生成指定数据库实例,并且指定快照区间的统计报表;
∙awrsqlrpt.sql:
生成指定快照区间,指定SQL语句(实际指定的是该语句的SQLID)的统计报表;
∙awrsqrpi.sql:
生成指定数据库实例,指定快照区间的指定SQL语句的统计报表;
∙awrddrpt.sql:
指定两个不同的时间周期,生成这两个周期的统计对比报表;
∙awrddrpi.sql:
指定数据库实例,并指定两个的不同时间周期,生成这两个周期的统计对比报表;
下面的章节中,我们就来一一例举。
提示:
与使用Statspack一样,要想让AWR收集到准确的统计信息,从而生成可靠的性能分析报告,必须将初始化参数STATISTICS_LEVEL的值设置为TYPICAL或ALL。
2.1生成标准统计报表
过程并不复杂,下列操作中加粗的部分,是需要指定值的位置(注意,执行报表生成的用户必须拥有DBA角色):
JSSWEB>@$ORACLE_HOME/rdbms/admin/awrrpt.sql
CurrentInstance
~~~~~~~~~~~~~~~~
DBIdDBNameInstNumInstance
-------------------------------------------
3812548755TEST081test08
SpecifytheReportType
~~~~~~~~~~~~~~~~~~~~~~~
WouldyoulikeanHTMLreport,oraplaintextreport?
Enter¨html¨foranHTMLreport,or¨text¨forplaintext
Defaultsto¨html¨
Entervalueforreport_type:
html
此处需指定生成的报表格式,有txt和html两种选择,默认情况下为html格式,这里为演示起见,输入html。
TypeSpecified:
html
InstancesinthisWorkloadRepositoryschema
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
DBIdInstNumDBNameInstanceHost
--------------------------------------------------------
*38125487551TEST08test08yans1
Using3812548755fordatabaseId
Using1forinstancenumber
Specifythenumberofdaysofsnapshotstochoosefrom
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Enteringthenumberofdays(n)willresultinthemostrecent
(n)daysofsnapshotsbeinglisted.Pressingwithout
specifyinganumberlistsallcompletedsnapshots.
Entervaluefornum_days:
2
此处需指定要读取多少天内的快照信息!
Listingthelast2daysofCompletedSnapshots
Snap
InstanceDBNameSnapIdSnapStartedLevel
--------------------------------------------------------
test08TEST0873302010月200900:
001
73312010月200901:
001
73322010月200902:
001
73332010月200903:
001
73342010月200904:
001
73352010月200905:
011
73362010月200906:
001
73372010月200907:
011
73382010月200908:
001
73392010月200909:
001
73402010月200910:
001
73412010月200911:
001
73422010月200912:
001
73432010月200913:
001
73442010月200914:
001
73452010月200915:
001
73462010月200916:
001
73472010月200917:
001
73482010月200918:
001
73492010月200919:
001
73502010月200920:
001
73512010月200921:
001
73522010月200922:
001
73532010月200923:
001
73542110月200900:
001
73552110月200901:
001
73562110月200902:
001
73572110月200903:
001
73582110月200904:
001
73592110月200905:
001
73602110月200906:
001
73612110月200907:
001
73622110月200908:
001