Oracle AWR与ASH性能报告深入解析
- 格式:pdf
- 大小:430.40 KB
- 文档页数:13
如何使用AWR报告来诊断Oracle数据库性能问题1如何使用AWR报告来诊断数据库性能问题 (2)1.1概述 (2)1.2性能诊断解决方案 (2)1.3如何收集AWR报告 (2)1.4Top 5 Timed Events部分 (7)1.5SQL Statistics部分 (10)1.5.1使用SQL Tuning Advisor (13)1.6Load Profile部分 (16)1.7Instance Efficiency部分 (17)1.8Latch Activity部分 (18)1.9其它值得注意的等待事件 (19)1.9.1CPU time events (19)1.9.2Log file sync waits (20)1如何使用AWR报告来诊断Oracle数据库性能问题1.1概述AWR、ADDM、ASH是分析Oracle数据库性能问题的重要工具。
本文主要描述了如何阅读、解析AWR报告中关于数据库性能问题的内容,帮助Oracle管理人员快速定位、解决Oracle数据库性能问题。
需要注意的是,生成AWR Report、访问AWR视图的相关内容,以及使用AWR 相关的诊断信息,都需要额外的Diagnostic Pack授权。
同时,生成AWR、ADDM、ASH报告也都需要获得Diagnostic Pack授权。
1.2性能诊断解决方案对于Oracle数据库整体的性能问题,AWR的报告是一个非常有用的诊断工具。
一般来说,当发现有性能问题时,我们会收集有性能问题的时间段的AWR报告。
但最好只收集1个小时时间段的AWR报告,如果时间过长,AWR报告就不能很好的反映出问题所在。
同时,还应该收集一份没有性能问题的时间段的AWR报告,作为一个参照,来对比有问题的时间段的AWR报告,而且,这两个AWR报告的时间段应该是一致的。
1.3如何收集AWR报告AWR属于sys用户,用于存放系统性能指标数据。
AWR存放于SYSAUX表空间。
AWR报告详细分析AWR 是 Oracle 10g 版本推出的新特性,全称叫Automatic Workload Repository-自动负载信息库, AWR 是通过对比两次快,照(snapshot)收集到的统计信息,来生成报表数据,生成的报表包括多个部分。
WORKLOAD REPOSITORY report forDB Name DB Id Instance Inst num Release RAC HostICCI 1314098396 ICCI1 1 10.2.0.3.0 YES HPGICCI1Snap Id Snap Time Sessions Cursors/SessionBegin Snap: 2678 25-Dec-08 14:04:50 24 1.5End Snap: 2680 25-Dec-08 15:23:37 26 1.5Elapsed: 78.79 (mins)DB Time: 11.05 (mins)Elapsed 时间,说明数据库比较空闲。
db time= cpu time + wait time(不包含空闲等待)(非后台进程)说白了就是db time就是记录的服务器花在数据库运算(非后台进程)和等待(非空闲等待)上的时间DB time = cpu time + all of nonidle wait event time在79分钟里(其间收集了3次快照数据),数据库耗时11分钟,RDA数据中显示系统有8个逻辑CPU(4个物理CPU),平均每个CPU耗时1.4分钟,CPU利用率只有大约2%(1.4/79)。
说明系统压力非常小。
列出下面这两个来做解释:Report A:Snap Id Snap Time Sessions Curs/Sess--------- ------------------- -------- ---------Begin Snap: 4610 24-Jul-08 22:00:54 68 19.1End Snap: 4612 24-Jul-08 23:00:25 17 1.7Elapsed: 59.51 (mins)DB Time: 466.37 (mins)Report B:Snap Id Snap Time Sessions Curs/Sess--------- ------------------- -------- ---------Begin Snap: 3098 13-Nov-07 21:00:37 39 13.6End Snap: 3102 13-Nov-07 22:00:15 40 16.4Elapsed: 59.63 (mins)DB Time: 19.49 (mins)服务器是AIX的系统,4个双核cpu,共8个核:/sbin> bindprocessor -qThe available processors are: 0 1 2 3 4 5 6 7先说Report A,在snapshot间隔中,总共约60分钟,cpu就共有60*8=480分钟,DB time 为466.37分钟,则:cpu花费了466.37分钟在处理Oralce非空闲等待和运算上(比方逻辑读)也就是说cpu有466.37/480*100% 花费在处理Oracle的操作上,这还不包括后台进程看Report B,总共约60分钟,cpu有19.49/480*100% 花费在处理Oracle的操作上很显然,2中服务器的平均负载很低。
Oracle性能调整的三把利剑--ASH,AWR,ADDMASH (Active Session History)ASH以V$SESSION为基础,每秒采样一次,记录活动会话等待的事件。
不活动的会话不会采样,采样工作由新引入的后台进程MMNL来完成。
ASH buffers 的最小值为1MB,最大值不超过30MB。
内存中记录数据。
期望值是记录一小时的内容。
生成ASH报告:SQLPLUS>@?/rdbms/ashrpt.sqlASH内存记录数据始终是有限的,为了保存历史数据,引入了自动负载信息库(Automatic Workload Repository ,AWR) 由后台进程MMON完成。
ASH信息同样被采集写出到AWR负载库中。
由于内存不是足够的,所以MMNL进程在ASH写满后会将信息写出到AWR负载库中。
ASH全部写出是不可接受的,所以一般只写入收集的10%的数据量,而且使用direct-path insert完成,尽量减少日志的生成,从而最小化数据库性能影响。
写出到AWR负载库的ASH信息记录在AWR的基础表wrh$active_session_hist中,wrh$active_session_hist是一个分区表,Oracle会自动进行数据清理。
AWR(Automatic Workload Repository)自动工作负载信息库AWR是Oracle 10g中的一个新特性,类似于10g以前的statspack。
不过在使用上要比statspack 简单,提供的性能指标要比statspack多很多,能更好的帮助DBA来发现数据库的性能瓶颈。
AWR是Oracle安装好后自动启动的,不需要特别的设置。
收集的统计信息存储在SYSAUX 表空间SYS模式下,以WRM$_*和WRH$_*的格式命名,默认会保留最近7天收集的统计信息。
每个小时将收集到的信息写到数据库中,这一系列操作是由一个叫MMON的进程来完成的。
Oracle自带性能分析工具-AWR介绍和分析华三通信技术1 Oracle 10g的AWR性能优化工具简介AWR (Automatic Workload Repository)既自动工作负载信息库是Oracle 10g新提供的收集数据库统计信息的置工具。
它比之前的statspack有显著的改进,收集的信息也更多、更全面,使用方法也更简单。
它主要采集与性能相关的统计数据,并从那些统计数据中导出性能量度,以跟踪潜在的问题,如包括AWR存区,历史数据存储文件和ASH等部件。
AWR报告的容繁多,官方文档也没有对所有参数给出说明。
AWR产生的报表包括以下几部分。
报表具体容参见如下插入的对象。
1、Report SummeryCache sizesLoad profileInstance Efficiency Percentages (Target 100%)Shared Pool StatisticsTop 5 Timed Events2、RAC StatisticsGlobal Cache Load ProfileGlobal Cache Efficiency Percentages (Target local+remote 100%)Global Cache and Enqueue Services - Workload CharacteristicsGlobal Cache and Enqueue Services - Messaging Statistics3、Wait Events StatisticsTime Model StatisticsWait ClassWait EventsBackground Wait EventsOperating System StatisticsService StatisticsService Wait Class Stats4、SQL StatisticsSQL ordered by Elapsed TimeSQL ordered by CPU TimeSQL ordered by GetsSQL ordered by ReadsSQL ordered by ExecutionsSQL ordered by Parse CallsSQL ordered by Sharable MemorySQL ordered by Version CountSQL ordered by Cluster Wait TimeComplete List of SQL Text5、Instance Activity StatisticsInstance Activity StatsInstance Activity Stats - Absolute Values Instance Activity Stats - Thread Activity 6、IO StatsTablespace IO StatsFile IO Stats7、Buffer Pool Statistics8、Advisory StatisticsInstance Recovery StatsBuffer Pool AdvisoryPGA Aggr SummaryPGA Aggr Target StatsPGA Aggr Target HistogramPGA Memory AdvisoryShared Pool AdvisorySGA Target AdvisoryStreams Pool AdvisoryJava Pool Advisory9、Wait StatisticsBuffer Wait StatisticsEnqueue Activity10、Undo StatisticsUndo Segment SummaryUndo Segment Stats11、Latch StatisticsLatch ActivityLatch Sleep BreakdownLatch Miss SourcesParent Latch StatisticsChild Latch Statistics12、Segment StatisticsSegments by Logical ReadsSegments by Physical ReadsSegments by Row Lock WaitsSegments by ITL WaitsSegments by Buffer Busy WaitsSegments by Global Cache Buffer BusySegments by CR Blocks ReceivedSegments by Current Blocks Received13、Dictionary Cache StatisticsDictionary Cache StatsDictionary Cache Stats (RAC)14、Library Cache StatisticsLibrary Cache ActivityLibrary Cache Activity (RAC)15、Memory StatisticsProcess Memory SummarySGA Memory SummarySGA breakdown difference16、Streams StatisticsStreams CPU/IO UsageStreams CaptureStreams ApplyBuffered QueuesBuffered SubscribersRule Set17、Resource Limit Stats18、init.ora Parameters19、Global Enqueue Statistics20、Global CR Served Stats21、Global CURRENT Served Stats22、Global Cache Transfer Stats2 AWR配置2.1 AWR统计数据的缺省配置AWR 实质上是一个Oracle 的置工具,它采集与性能相关的统计数据,并从那些统计数据中导出性能量度,以跟踪潜在的问题。
1.先看一张图片,描述awr和ash的一些基础信息1 SQL> conn /as sysdba2 Connected.3 SQL> @?/rdbms/admin/awrrpt.sql45 Current Instance 6~~~~~~~~~~~~~~~~ 7 8 DB Id DB Name Inst Num Instance 9 ----------- ------------ -------- ------------103918594034ORCL 1orcl1112 13 Specify the Report Type14~~~~~~~~~~~~~~~~~~~~~~~15 Would you like an HTML report, or a plain text report?16 Enter 'html'for an HTML report, or'text' for plain text17 Defaults to'html'18 Enter value for report_type: html1920 Type Specified: html212223 Instances in this Workload Repository schema24 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~2526 DB Id Inst Num DB Name Instance Host27------------ -------- ------------ ------------ ------------28 *39185940341 ORCL orcl DCMSBDM2930 Using 3918594034for database Id31 Using 1for instance number323334 Specify the number of days of snapshots to choose from35~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~36 Entering the number of days (n) will result in the most recent37 (n) days of snapshots being listed. Pressing <return>without38 specifying a number lists all completed snapshots.394041 Enter value for num_days: 24243Listing the last 2days of Completed Snapshots4445 Snap46 Instance DB Name Snap Id Snap Started Level47------------ ------------ --------------------------- -----48 kobra KOBRA 122720Aug 201200:00149122820Aug 201201:00150122920 Aug 201202:00151123020 Aug 201203:001521231 20Aug 201204:00153 ...54126321Aug 201212:00155126421Aug 201213:00 156126521 Aug 201214:00157126621 Aug 201215:001585960 Specify the Begin and End Snapshot Ids61~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~62 Enter value for begin_snap: 122763Begin Snapshot Id specified: 12276465 Enter value for end_snap: 126566End Snapshot Id specified: 1265676869 Specify the Report Name70~~~~~~~~~~~~~~~~~~~~~~~71 The default report file name is awrrpt_1_1227_1265.html. To use this name,72 press <return>to continue, otherwise enter an alternative.7374 Enter value for report_name:7576 Using the report name awrrpt_1_1227_1265.html7778<html><head><title>AWR Report for DB: KOBRA, Inst: kobra, Snaps: 1227-1265</title>7980 (8182)End of Report83</body></html>84 Report written to awrrpt_1_1227_1265.html85 86 SQL>exit2.AWR报告分析2.1CPU负载分析如果关注数据库的性能,那么当拿到一份AWR报告的时候,最想知道的第一件事情可能就是系统资源的利用情况了,而首当其冲的,就是CPU。
awr分析报告详解AWR分析报告(Automatic Workload Repository)是Oracle数据库提供的一个强大的性能分析工具,可以帮助用户深入了解数据库的性能瓶颈、资源利用情况和应用程序行为。
本文将对AWR分析报告的内容进行详解,帮助读者更好地理解和应用AWR分析报告。
一、概述AWR分析报告是由Oracle数据库自动收集和生成的,以图表和表格形式展示数据库性能数据的报告。
它主要分为以下几个部分:Snapshots Summary、Top 5 Timed Events、SQL Statistics、Wait Events 等。
1. Snapshots SummarySnapshots Summary部分展示了在指定时间范围内的数据库快照信息,包括快照的起始时间、终止时间、快照之间的时间间隔等。
通过该部分,我们可以了解快照的基本信息,为后续的分析提供基础。
2. Top 5 Timed EventsTop 5 Timed Events部分显示了数据库中花费时间最长的前五个事件。
这些事件可能包括CPU消耗、IO等待、锁等待等。
通过分析这些事件,可以找到数据库的性能瓶颈所在,并进行相应的优化。
3. SQL StatisticsSQL Statistics部分提供了数据库中执行时间最长的SQL语句信息。
它包括了每个SQL语句的执行次数、平均执行时间、逻辑读、物理读等指标。
通过分析这些指标,可以找出执行时间最长的SQL语句和索引缺失等问题,并进行性能优化。
4. Wait EventsWait Events部分展示了数据库中发生的等待事件。
它包括等待事件的类型、等待时间占比等指标。
通过分析等待事件,可以发现数据库中存在的资源争用和瓶颈,并进行适当的调整和优化。
二、AWR分析报告的应用方法AWR分析报告提供了丰富的数据库性能数据,但如何进行分析和应用是关键。
下面将介绍几种常用的分析方法:1. 性能瓶颈分析通过分析Top 5 Timed Events和Wait Events,可以找到数据库中的性能瓶颈所在。
OracleAWR报告详细分析Oracle AWR报告详细分析 (⽂档 ID 1523048.1)AWR 是 Oracle 10g 版本推出的新特性,全称叫Automatic Workload Repository-⾃动负载信息库AWR 是通过对⽐两次快照(snapshot)收集到的统计信息,来⽣成报表数据,⽣成的报表包括多个部分。
WORKLOAD REPOSITORY report forDB Name DB Id Instance Inst num Release RAC HostICCI1314098396ICCI1110.2.0.3.0YES HPGICCI1Snap Id Snap Time Sessions Cursors/SessionBegin Snap:267825-Dec-08 14:04:5024 1.5 End Snap:268025-Dec-08 15:23:3726 1.5 Elapsed:78.79 (mins)DB Time:11.05 (mins)DB Time不包括Oracle后台进程消耗的时间。
如果DB Time远远⼩于Elapsed时间,说明数据库⽐较空闲。
db time= cpu time + wait time(不包含空闲等待)(⾮后台进程)说⽩了就是db time就是记录的服务器花在数据库运算(⾮后台进程)和等待(⾮空闲等待)上的时间DB time = cpu time + all of nonidle wait event time在79分钟⾥(其间收集了3次快照数据),数据库耗时11分钟,RDA数据中显⽰系统有8个逻辑CPU(4个物理CPU),平均每个CPU耗时1.4分钟,CPU利⽤率只有⼤约2%(1.4/79)。
说明系统压⼒⾮常⼩。
列出下⾯这两个来做解释:Report A:Snap Id Snap Time Sessions Curs/Sess--------- ------------------- -------- ---------Begin Snap: 4610 24-Jul-08 22:00:54 68 19.1End Snap: 4612 24-Jul-08 23:00:25 17 1.7Elapsed: 59.51 (mins)DB Time: 466.37 (mins)Report B:Snap Id Snap Time Sessions Curs/Sess--------- ------------------- -------- ---------Begin Snap: 3098 13-Nov-07 21:00:37 39 13.6End Snap: 3102 13-Nov-07 22:00:15 40 16.4Elapsed: 59.63 (mins)DB Time: 19.49 (mins)服务器是AIX的系统,4个双核cpu,共8个核:/sbin> bindprocessor -qThe available processors are: 0 1 2 3 4 5 6 7先说Report A,在snapshot间隔中,总共约60分钟,cpu就共有60*8=480分钟,DB time为466.37分钟则:cpu花费了466.37分钟在处理Oralce⾮空闲等待和运算上(⽐⽅逻辑读)也就是说cpu有 466.37/480*100% 花费在处理Oracle的操作上,这还不包括后台进程看Report B,总共约60分钟,cpu有 19.49/480*100% 花费在处理Oracle的操作上很显然,Report B中服务器的平均负载很低。
OracleAWR与ASH性能报告深入解析Oracle AWR (Automatic Workload Repository) 与 ASH (Active Session History) 是两种常用的性能报告工具,可以帮助数据库管理员和开发人员深入了解数据库的工作负载和性能瓶颈。
本文将对这两个工具进行深入解析。
一、Oracle AWR 报告AWR报告是一种综合性能报告,它通过分析数据库的工作负载和性能指标,提供了一个全面的性能评估。
AWR报告主要包括以下几个方面的内容:1.性能指标:AWR报告提供了大量的性能指标,包括数据库的各种统计信息、等待事件和CPU的使用情况。
这些指标可以帮助用户了解数据库的负载情况、性能瓶颈和资源利用率。
2.时间段:AWR报告会统计一段时间内的性能数据,并将其分为多个时间段。
这样用户可以根据需要查看具体的时间段,从而更好地了解数据库的性能变化。
3.慢查询:AWR报告中还会列出数据库中的慢查询语句,并提供了相应的执行计划和优化建议。
这对于开发人员来说非常有帮助,可以帮助他们优化查询语句,提升数据库性能。
4.自动调整建议:AWR报告还会给出一些自动调整建议,帮助用户改进数据库的配置和调整参数。
这对于数据库管理员来说非常有帮助,可以提升数据库的性能和稳定性。
二、Oracle ASH 报告ASH报告是一种实时性能报告,它通过记录数据库的活跃会话,提供了一个实时的性能分析。
ASH报告主要包括以下几个方面的内容:1.会话活动:ASH报告可以跟踪记录数据库中的活跃会话,包括其等待事件、活动程序和SQL语句等。
这些信息可以帮助用户了解数据库的负载情况和性能瓶颈。
2.等待事件:ASH报告中还会列出数据库中的等待事件,并提供相应的统计信息。
通过分析等待事件,用户可以找到数据库性能瓶颈的原因,并进行相应的优化。
3.SQL语句:ASH报告中还会列出数据库中的高负载SQL语句,并提供相应的执行计划和性能指标。
Oracle自带性能分析工具-AWR介绍和分析华三通信技术1 Oracle 10g的AWR性能优化工具简介AWR (Automatic Workload Repository)既自动工作负载信息库是Oracle 10g新提供的收集数据库统计信息的置工具。
它比之前的statspack有显著的改良,收集的信息也更多、更全面,使用方法也更简单。
它主要采集与性能相关的统计数据,并从那些统计数据中导出性能量度,以跟踪潜在的问题,如包括AWR存区,历史数据存储文件和ASH等部件。
AWR报告的容繁多,官方文档也没有对所有参数给出说明。
AWR产生的报表包括以下几局部。
报表具体容参见如下插入的对象。
1、Report SummeryCache sizesLoad profileInstance Efficiency Percentages (Target 100%)Shared Pool StatisticsTop 5 Timed Events2、RAC StatisticsGlobal Cache Load ProfileGlobal Cache Efficiency Percentages (Target local+remote 100%) Global Cache and Enqueue Services - Workload Characteristics Global Cache and Enqueue Services - Messaging Statistics3、Wait Events StatisticsTime Model StatisticsWait ClassWait EventsBackground Wait EventsOperating System StatisticsService StatisticsService Wait Class Stats4、SQL StatisticsSQL ordered by Elapsed TimeSQL ordered by CPU TimeSQL ordered by GetsSQL ordered by ReadsSQL ordered by ExecutionsSQL ordered by Parse CallsSQL ordered by Sharable MemorySQL ordered by Version CountSQL ordered by Cluster Wait Timeplete List of SQL Text5、Instance Activity StatisticsInstance Activity StatsInstance Activity Stats - Absolute ValuesInstance Activity Stats - Thread Activity6、IO StatsTablespace IO StatsFile IO Stats7、Buffer Pool Statistics8、Advisory StatisticsInstance Recovery StatsBuffer Pool AdvisoryPGA Aggr SummaryPGA Aggr Target StatsPGA Aggr Target HistogramPGA Memory AdvisoryShared Pool AdvisorySGA Target AdvisoryStreams Pool AdvisoryJava Pool Advisory9、Wait StatisticsBuffer Wait StatisticsEnqueue Activity10、Undo StatisticsUndo Segment SummaryUndo Segment Stats11、Latch StatisticsLatch ActivityLatch Sleep BreakdownLatch Miss SourcesParent Latch StatisticsChild Latch Statistics12、Segment StatisticsSegments by Logical ReadsSegments by Physical ReadsSegments by Row Lock WaitsSegments by ITL WaitsSegments by Buffer Busy WaitsSegments by Global Cache Buffer Busy Segments by CR Blocks ReceivedSegments by Current Blocks Received 13、Dictionary Cache StatisticsDictionary Cache StatsDictionary Cache Stats (RAC)14、Library Cache StatisticsLibrary Cache ActivityLibrary Cache Activity (RAC)15、Memory StatisticsProcess Memory SummarySGA Memory SummarySGA breakdown difference16、Streams StatisticsStreams CPU/IO UsageStreams CaptureStreams ApplyBuffered QueuesBuffered SubscribersRule Set17、Resource Limit Stats18、init.ora Parameters19、Global Enqueue Statistics20、Global CR Served Stats21、Global CURRENT Served Stats22、Global Cache Transfer Stats2 AWR配置2.1 AWR统计数据的缺省配置AWR 实质上是一个 Oracle 的置工具,它采集与性能相关的统计数据,并从那些统计数据中导出性能量度,以跟踪潜在的问题。
ORACLE性能AWR报告的使用和分析Oracle性能AWR报告(Automatic Workload Repository)是Oracle 数据库提供的一个强大的性能诊断工具,可以帮助管理员识别和解决数据库性能问题。
AWR报告收集和保存数据库的性能指标和统计信息,以便在需要时进行分析和比较。
本文将介绍AWR报告的使用和分析过程,包括如何收集AWR报告、AWR报告的内容和结构、及如何分析AWR报告。
一、收集AWR报告AWR报告只能在Oracle数据库中收集,首先需要启用AWR功能。
在Oracle数据库中,AWR功能默认是开启的。
你可以使用以下命令查看AWR 功能是否已经开启:```SELECT name FROM v$statname WHERE name LIKE '%AWR%';```如果显示了AWR相关的统计项,则表示AWR功能已经启用。
要收集AWR报告,需要按照以下步骤操作:1. 连接到数据库,在SQLPlus或类似的工具中执行以下命令,以开启AWR快照:```EXECDBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT(;```2.执行一段时间(建议至少30分钟)的正常工作负载。
3.再次执行以下命令,以关闭AWR快照:```EXECDBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT(;```4.通过以下命令查看AWR报告的快照ID:```SELECT snap_id FROM dba_hist_snapshot ORDER BY snap_id;```5.选择要分析的快照ID,使用以下命令生成AWR报告:``````根据提示输入快照ID和报告类型(HTML或文本),即可生成AWR报告。
二、AWR报告的内容和结构AWR报告提供了丰富的性能指标和统计信息,以帮助诊断数据库性能瓶颈。
AWR报告通常包括以下几个部分:1.报告概述:包含报告生成的时间、数据库版本、报告周期等信息,并提供了一个整体的性能评估。
《Oracle AWR与ASH性能报告深入解析》一数据库版本LEO1@LEO1> select * from v$version;BANNER--------------------------------------------------------------------------------Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit ProductionPL/SQL Release 11.2.0.1.0 - ProductionCORE 11.2.0.1.0 ProductionTNS for Linux: Version 11.2.0.1.0 - ProductionNLSRTL Version 11.2.0.1.0 - Production二AWR性能诊断报告AWR:Automatic Workload Repository 自动工作负载信息库通常在诊断数据库性能的时候分三个阶段第一阶段:SQL语句级性能优化第二阶段:session级性能优化,这时我们可以用ASH来做分析第三阶段:DB级性能优化,AWR就是数据库层性能诊断报告,当我们无法判断数据库哪里性能出现问题时我们可以做一个全身体检报告来找到我们瓶颈所在。
AWR机制:通过对系统整体动态采样收集快照信息,存储在SYSAUX表空间,每小时采样一次,可以保存7天,MMON进程实施,快照分析后写入DBA_HIST_%开头的数据字典。
AWR信息来源:DBA_HIST_%开头的数据字典,请见下图LEO1@LEO1> select table_name from dictionary where table_name like 'DBA_HIST_%';TABLE_NAME------------------------------------------------DBA_HIST_ACTIVE_SESS_HISTORYDBA_HIST_ASH_SNAPSHOTDBA_HIST_BASELINEDBA_HIST_BASELINE_DETAILSDBA_HIST_BASELINE_METADATADBA_HIST_BASELINE_TEMPLATEDBA_HIST_BG_EVENT_SUMMARYDBA_HIST_BUFFERED_QUEUESDBA_HIST_BUFFERED_SUBSCRIBERSDBA_HIST_BUFFER_POOL_STA TDBA_HIST_CLUSTER_INTERCONDBA_HIST_COLORED_SQLDBA_HIST_COMP_IOSTATDBA_HIST_CR_BLOCK_SERVERDBA_HIST_CURRENT_BLOCK_SERVERDBA_HIST_DATABASE_INSTANCEDBA_HIST_DATAFILEDBA_HIST_DB_CACHE_ADVICE…………………………………………………109 rows selected.AWR信息就是来自上面这些数据字典表,它是把这些表中数据进行汇总统计后生成HTML or TXT格式LEO1@LEO1> select snap_id,name,value from DBA_HIST_SGA where snap_id>=173 and snap_id<=174;SNAP_ID NAME VALUE---------- ---------------------------------------------------------------------------------------------------------------------------------- 173 Database Buffers 117440512173 Fixed Size 2214856173 Redo Buffers 8052736173 Variable Size 385877048174 Database Buffers 117440512174 Fixed Size 2214856174 Redo Buffers 8052736174 Variable Size 385877048上面这个例子显示了173-174快照中SGA的信息OEM可以生成图形化性能分析图,UI版AWRAWR基线:我们可以在数据库平稳正常的状态下创建AWR基线(参照物),在实际生产中可以作为性能指标曲线的一个参照物,有了基线对比,我们就可以很方便的了解到系统的一个真实的性能趋势。
AWR创建:sqlplus / as system @下面的脚本就可以创建AWR报告了创建脚本目录:/u01/app/oracle/product/11.2.0/db_1/rdbms/admin/awrrpt.sqlAWR报告分析说明启动时间版本是RAC 主机名:emsta1 操作系统平台:Solaris 64位64颗CPU 32核内存:128GB由上述硬件判断这是2台小机组成的RAC模式数据库,上面的是实例1,下面的是实例2,名称后缀不同。
起始快照id:6023终止快照id:6026 快照与快照间隔1小时从14:00~17:00一共3小时采样信息起始快照与终止快照间隔时间:180分钟所有用户使用数据库时间总和(累加值):80分钟起始时间有1788个会话,每个会话使用2.8个游标结束时间有1793个会话,每个会话使用2.9个游标共享池6272Mredo log 缓冲区111.456M共享池6144Mredo log 缓冲区111.456M数据块大小8K2个实例的SGA有一点点的大小差异,但是差距不大。
3.Load profileInstance2:物理写较多,是以写为主OLAP:关注IO指标OLTP:关注内存CPU指标4.Top 5 Timed Foreground EventsInstance1:这是排名前五位的前台等待事件(用户SQL的等待事件)DB CPU:数据库消耗CPU时间(所有用户使用CPU的累加值)Waits:等待了多少次Times:等待了多少秒Avg wait(ms):平均等待一次多少毫秒%DB time:占整体数据库时间的百分比,我们看到CPU消耗占了82%,应该解析的SQL语句比较多Wait Class:等待类型Instance2:%DB time 54% 也是排名第一,说明解析和执行的SQL语句很多5.CPU&MEMORY 统计信息Instance1CPU %Idle:空闲率98% 看来CPU的使用率不高啊%Busy CPU:忙时CPU占用53.9%而且CPU等待时间占整体等待时间比例很小SGA+PGA使用率占物理内存的19%,内存空闲空间还很高,我们还可以增加SGA+PGA容量缓存更多的SQLInstance2 与Instance1还是很相近的6.RAC性能报告AWR信息太多,这里简要截图举例说明实例数从快照开始到快照结束都是2Instance1 每秒全局缓冲区接收块数6个每个事物接收块数3个DBRW Fusion write 0.2写的不是很多,大部分动作都在读Instance2 每秒全局缓冲区接收块数21个,这个要比Instance1的多每个事物接收块数2个,比Instance1的少7.按照消耗时间排名Instance1:SQL执行处理时间,消耗时间最多CPU使用时间排第二从这2点可以推断出,这是一个OLTP系统,主要消耗资源在CPU上而不是IO上Instance2:CPU使用时间最多8.Foreground Wait Class 前台进程等待事件(用户触发的)Instance1按等待类型分类:还是CPU消耗的时间最多Instance2:Network 资源等待时间较长,说明数据块在2个实例间交叉复制和传输较多9.Background Wait Events后台进程等待事件(数据库后台进程触发的)这里列举了数据库后台进程的等待事件排名,我们可以看这些来判断哪些资源使用的较多10.Instance Activity Stat 实例活跃度IO向量统计排名最多小结:我们从上面的各种指标参数来分析CPU资源消耗的较多,IO资源相对较少,根据不同业务类型关注指标类型不同判断这个RAC系统是一个OLTP系统。
(1).我们首先要了解系统的业务种类AWR报告才能定位准确。
(2).OLTP多关注CPU&MEMORY指标(软硬解析 cursor共享绑定变量 SGA命中率)OLAP多关注IO指标(物理/逻辑读写一致性数据块大小数据块吞吐量追踪SQL进行优化)(3).面->线->点:AWR -> TOP 5 -> 哪块资源有问题三产生一个ASH报告,并进行分析,给出最后的结论。
ASH:Active Session History 活动会话历史记录ASH是一个会话级别的性能诊断报告,可以提供更细粒度的时间区间,可以精确到分钟,ASH可以提供比AWR更详细的关于历史会话的信息,可以作为AWR的补充。
ASH信息来源“v$active_session_history”保存当前会话的采集信息(一秒钟一次快照),视图容量满后可以被覆盖,可以从下面的数据字典中寻找“dba_hist_active_sess_history”保持历史会话的采集信息生成ASH报告创建脚本目录:/u01/app/oracle/product/11.2.0/db_1/rdbms/admin/ashrpt.sqlASH创建:sqlplus leo1/leo1 @创建脚本[oracle@leonarding1 ~]$ sqlplus leo1/leo1@/u01/app/oracle/product/11.2.0/db_1/rdbms/admin/ashrpt.sqlCurrent Instance~~~~~~~~~~~~~~~~DB Id DB Name Inst Num Instance----------- ------------ -------- ------------1678393804 LEO1 1 LEO1数据库id 数据库名实例数量实例名Specify the Report Type~~~~~~~~~~~~~~~~~~~~~~~Enter 'html' for an HTML report, or 'text' for plain text 指定生成ASH报告类型HTML or TXT Defaults to 'html' 默认是HTMLEnter value for report_type: 我们直接回车生成HTML类型Specify the timeframe to generate the ASH report 指定ASH报告采集时间区间~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Enter begin time for report:-- Valid input formats:-- To specify absolute begin time:-- [MM/DD[/YY]] HH24:MI[:SS]-- Examples: 02/23/03 14:30:15 样例-- 02/23 14:30:15-- 14:30:15-- 14:30-- To specify relative begin time: (start with '-' sign)-- -[HH24:]MI-- Examples: -1:15 (SYSDATE - 1 Hr 15 Mins) 可以当前时间减去指定的分钟数-- -25 (SYSDATE - 25 Mins)Defaults to -15 mins 默认减去15分钟Enter value for begin_time: 03/11/13 00:00:00 我指定开始时间是2013年3月11日零点Report begin time specified: 03/11/13 00:00:00Enter duration in minutes starting from begin time:Defaults to SYSDATE - begin_time 默认是当前时间-03/11/13 00:00:00Press Enter to analyze till current timeEnter value for duration: 现在是03/11/13 00:35:00,我们按回车Specify the Report Name 指定ASH报告名称,可以加创建到哪的路径~~~~~~~~~~~~~~~~~~~~~~~The default report file name is ashrpt_1_0311_0035.html. To use this name, 默认名称press <return> to continue, otherwise enter an alternative.Enter value for report_name: /home/oracle/ashrpt_leo1_0000_0035.htmlReport written to /home/oracle/ashrpt_leo1_0000_0035.html 报告已经创建到指定目录LEO1@LEO1>我们打开ASH报告ashrpt_leo1_0000_0035.html1.数据库概括信息数据库名:LEO1数据库id:1678393804实例名:LEO1实例数:1版本:11.2.0.1.0RAC:NO主机名:CPUs:2核SGA Size:490M 其中data_buffer_cache 112M shared pool 184M ASH buffer size 4M ASH采样开始时间:2013-03-11 00:00:00 ASH信息来源“v$active_session_history”ASH采样结束时间:2013-03-11 00:35:00间隔时间:36分钟采样数:416平均活动会话:0.19每个CPU执行平均会话数:0.10这么一看跟AWR上来阐述系统概括信息差不多2.Top User Events 前5名等待事件事件名事件类型占整体百分比平均会话数CPU等待时间最长CPU 37.26 0.07这是我自己的实验环境,没有很多并发会话,所以活动会话数比较少这是等待事件的详细信息3.Top SQL 性能最差SQL排名按等待事件排名SQL按数据处理方式排名SQL4.Top Sessions 按会话信息排名一个会话由:sid+serial#来唯一定位的5.Top Objects & Files 按数据库对象和数据文件排名看第二行就是我们经常使用的LEO5表,object_id=74268因为我们刚刚做了AWR和ASH报告,用sysaux表空间较多,因此排第一位小结:ASH主要是针对会话级的一个体检报告,它可以追踪历史会话,从会话的角度分析数据库性能瓶颈,从而找到SQL,优化SQL语句。