AWR数据库监控使用方法.docx_第1页
AWR数据库监控使用方法.docx_第2页
AWR数据库监控使用方法.docx_第3页
AWR数据库监控使用方法.docx_第4页
AWR数据库监控使用方法.docx_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Oracle Database 10g 提供了一个显著改进的工具:自动工作负载信息库 (AWR:Automatic Workload Repository)。Oracle 建议用户用这个取代 Statspack。AWR 实质上是一个 Oracle 的内置工具,它采集与性能相关的统计数据,并从那些统计数据中导出性能量度,以跟踪潜在的问题。与 Statspack 不同,快照由一个称为 MMON 的新的后台进程及其从进程自动地每小时采集一次。为了节省空间,采集的数据在 7 天后自动清除。快照频率和保留时间都可以由用户修改。它产生两种类型的输出:文本格式(类似于 Statspack 报表的文本格式但来自于 AWR 信息库)和默认的 HTML 格式(拥有到部分和子部分的所有超链接),从而提供了非常用户友好的报表。AWR 使用几个表来存储采集的统计数据,所有的表都存储在新的名称为 SYSAUX 的特定表空间中的 SYS 模式下,并且以 WRM$_* 和 WRH$_* 的格式命名。前一种类型存储元数据信息(如检查的数据库和采集的快照),后一种类型保存实际采集的统计数据。H 代表“历史数据 (historical)”而 M 代表“元数据 (metadata)”。在这些表上构建了几种带前缀 DBA_HIST_ 的视图,这些视图可以用来编写您自己的性能诊断工具。视图的名称直接与表相关;例如,视图 DBA_HIST_SYSMETRIC_SUMMARY 是在WRH$_SYSMETRIC_SUMMARY 表上构建的。注意:statistics_level 默认是typical,在10g中表监控是激活的,强烈建议在10g中此参数的值是typical。如果STATISTICS_LEVEL设置为basic,不仅不能监控表,而且将禁掉如下一些10g的新功能:ASH(Active Session History)ASSM(Automatic Shared Memory Management)AWR(Automatic Workload Repository)ADDM(Automatic Database Diagnostic Monitor)一. AWR使用 SQL?/rdbms/admin/awrrpt.sqlSpecify 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 的值: Type Specified: html 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. 输入 num_days 的值: 1 Listing the last days Completed Snapshots Snap Instance DB Name Snap Id Snap Started Level - - - - - orcl10g ORCL10G 142 03 7月 2009 08:11 1 143 03 7月 2009 09:00 1 144 03 7月 2009 10:00 1 145 03 7月 2009 11:00 1 146 03 7月 2009 12:01 1 Specify the Begin and End Snapshot Ids 输入 begin_snap 的值: 142 Begin Snapshot Id specified: 142 输入 end_snap 的值: 146 End Snapshot Id specified: 146 Specify the Report Name The default report file name is awrrpt_1_142_146.html. To use this name, press to continue, otherwise enter an alternative. 输入 report_name 的值: D:awrrpt_1_142_146.html Report written to D:awrrpt_1_142_146.html二 AWR 操作 1.查看当前的AWR保存策略 SQL col SNAP_INTERVAL format a20 SQL col RETENTION format a20 SQL select * from dba_hist_wr_control; DBID SNAP_INTERVAL RETENTION TOPNSQL - - - - 262089084 +00000 01:00:00.0 +00007 00:00:00.0 DEFAULT 以上结果表示,每小时产生一个SNAPSHOT,保留7天。 2.调整AWR配置 AWR配置都是通过dbms_workload_repository包进行配置。 2.1 调整AWR产生snapshot的频率和保留策略,如将收集间隔时间改为30 分钟一次。并且保留5天时间(单位都是分钟): SQL exec dbms_workload_repository.modify_snapshot_settings(interval=30, retention=5*24*60); 2.2 关闭AWR,把interval设为0则关闭自动捕捉快照 SQL exec dbms_workload_repository.modify_snapshot_settings(interval=0); 2.3 手工创建一个快照 SQL exec DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT(); 2.4 查看快照 SQL select * from sys.wrh$_active_session_history 2.5 手工删除指定范围的快照 SQL exec DBMS_WORKLOAD_REPOSITORY.DROP_SNAPSHOT_RANGE(low_snap_id = 973, high_snap_id = 999, dbid = 262089084); 2.6 创建baseline,保存这些数据用于将来分析和比较 SQL exec dbms_workload_repository.create_baseline(start_snap_id = 1003, end_snap_id = 1013, apply_interest_1); 2.7 删除baseline SQL exec DBMS_WORKLOAD_REPOSITORY.DROP_BASELINE(baseline_name = apply_interest_1, cascade = FALSE); 2.8 将AWR数据导出并迁移到其它数据库以便于以后分析 SQL exec DBMS_SWRF_INTERNAL.AWR_EXTRACT(dmpfile = awr_data.dmp, mpdir = DIR_BDUMP, bid = 1003, eid = 1013); 2.9 迁移AWR数据文件到其他数据库 SQL exec DBMS_SWRF_INTERNAL.AWR_LOAD(SCHNAME = AWR_TEST, dmpfile = awr_data.dmp, dmpdir = DIR_BDUMP); 把AWR数据转移到SYS模式中: SQL exec DBMS_SWRF_INTERNAL.MOVE_TO_AWR (SCHNAME = TEST);三. AWR 报告分析 3.1 SQL ordered by Elapsed Time 记录了执行总和时间的TOP SQL(请注意是监控范围内该SQL的执行时间总和,而不是单次SQL执行时间 Elapsed Time = CPU Time + Wait Time)。 Elapsed Time(S): SQL语句执行用总时长,此排序就是按照这个字段进行的。注意该时间不是单个SQL跑的时间,而是监控范围内SQL执行次数的总和时间。单位时间为秒。Elapsed Time = CPU Time + Wait Time CPU Time(s): 为SQL语句执行时CPU占用时间总时长,此时间会小于等于Elapsed Time时间。单位时间为秒。 Executions: SQL语句在监控范围内的执行次数总计。 Elap per Exec(s): 执行一次SQL的平均时间。单位时间为秒。 % Total DB Time: 为SQL的Elapsed Time时间占数据库总时间的百分比。 SQL ID: SQL语句的ID编号,点击之后就能导航到下边的SQL详细列表中,点击IE的返回可以回到当前SQL ID的地方。 SQL Module: 显示该SQL是用什么方式连接到数据库执行的,如果是用SQL*Plus或者PL/SQL链接上来的那基本上都是有人在调试程序。一般用前台应用链接过来执行的sql该位置为空。 SQL Text: 简单的sql提示,详细的需要点击SQL ID。 3.2 SQL ordered by CPU Time: 记录了执行占CPU时间总和时间最长的TOP SQL(请注意是监控范围内该SQL的执行占CPU时间总和,而不是单次SQL执行时间)。 3.3 SQL ordered by Gets: 记录了执行占总buffer gets(逻辑IO)的TOP SQL(请注意是监控范围内该SQL的执行占Gets总和,而不是单次SQL执行所占的Gets)。 3.4 SQL ordered by Reads: 记录了执行占总磁盘物理读(物理IO)的TOP SQL(请注意是监控范围内该SQL的执行占磁盘物理读总和,而不是单次SQL执行所占的磁盘物理读)。 3.5 SQL ordered by Executions: 记录了按照SQL的执行次数排序的TOP SQL。该排序可以看出监控范围内的SQL执行次数。 3.6 SQL ordered by Parse Calls: 记录了SQL的软解析次数的TOP SQL。说到软解析(soft prase)和硬解析(hard prase),就不能不说一下Oracle对sql的处理过程。 3.7 SQL ordered by Sharable Memory: 记录了SQL占用library cache的大小的TOP SQL。Sharable Mem (b):占用library cache的大小,单位是byte。 3.8 SQL ordered by Version Count: 记录了SQL的打开子游标的TOP SQL。 3.9 SQL ordered by Cluster Wait Time: *今天有同事抱怨有一台数据库连接慢,我帮忙连上服务器看看是什么原因。用到awr报告,之前没有总结,现在总结一下,省着以后再去翻资料。 一、安装 SQL conn / AS SYSDBA SQL var snap_id number SQL exec :snap_id:=dbms_workload_repository.create_snapshot SQL print snap_id SNAP_ID - 2626SQL /rdbms/admin/awrrpt.sql输入 report_type 的值: html 输入 num_days 的值: 1输入 begin_snap 的值: 2625输入 end_snap 的值: 2626输入 report_name 的值: mahanso Report written to mahanso.htmlSQL exit下载mahanso.html并打开查看。需要注意的是使用 AWR 需要有 Diagnostic Pack License。Oracle 后来推出了一个解决方案可以禁止掉该特性。在 Note.436386.1 有说明:SQL dbms_awr.plb然后执行:SQL dbms_awr.disable_awr();如果用 sys 之外的用户创建 AWR 报告,则需要进行合适的授权。否则会报告错误 PACKAGE 执行错误。SQL CONNECT / AS SYSDBA;SQL GRANT ADVISOR TO ;SQL GRANT SELECT_CATALOG_ROLE TO ;SQL GRANT EXECUTE ON sys.dbms_workload_repository TO ;要注意 Bug 4597354 在创建基线数据的时候,对性能有很大影响。在一个非常繁忙的系统上不要进行此操作。二、操作1.查看当前的AWR保存策略SQL col SNAP_INTERVAL format a20SQL col RETENTION format a20SQL select * from dba_hist_wr_control;DBID SNAP_INTERVAL RETENTION TOPNSQL- - - -以上结果表示,每小时产生一个SNAPSHOT,保留7天。2.调整AWR配置AWR配置都是通过dbms_workload_repository包进行配置。2.1 调整AWR产生snapshot的频率和保留策略,如将收集间隔时间改为30 分钟一次。并且保留5天时间(单位都是分钟):SQL exec dbms_workload_repository.modify_snapshot_settings(interval=30, retention=5*24*60);2.2 关闭AWR,把interval设为0则关闭自动捕捉快照SQL exec dbms_workload_repository.modify_snapshot_settings(interval=0);2.3 手工创建一个快照SQL exec DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT();2.4 查看快照SQL select * from sys.wrh$_active_session_history2.5 手工删除指定范围的快照SQL exec DBMS_WORKLOAD_REPOSITORY.DROP_SNAPSHOT_RANGE(low_snap_id = 973, high_snap_id = 999, dbid = 262089084);2.6 创建baseline,保存这些数据用于将来分析和比较SQL exec dbms_workload_repository.create_baseline(start_snap_id = 1003, end_snap_id = 1013, apply_interest_1);2.7 删除baselineSQL exec DBMS_WORKLOAD_REPOSITORY.DROP_BASELINE(baseline_name = apply_interest_1, cascade = FALSE);2.8 将AWR数据导出并迁移到其它数据库以便于以后分析SQL exec DBMS_SWRF_INTERNAL.AWR_EXTRACT(dmpfile = awr_data.dmp, mpdir = DIR_BDUMP, bid = 1003, eid = 1013);2.9 迁移AWR数据文件到其他数据库SQL exec DBMS_SWRF_INTERNAL.AWR_LOAD(SCHNAME = AWR_TEST, dmpfile = awr_data.dmp, dmpdir = DIR_BDUMP);把AWR数据转移到SYS模式中:SQL exec DBMS_SWRF_INTERNAL.MOVE_TO_AWR (SCHNAME = TEST);3、AWR报告日常分析3.1 SQL ordered by Elapsed Time记录了执行总和时间的TOP SQL(请注意是监控范围内该SQL的执行时间总和,而不是单次SQL执行时间 Elapsed Time = CPU Time Wait Time)。Elapsed Time(S): SQL语句执行用总时长,此排序就是按照这个字段进行的。注意该时间不是单个SQL跑的时间,而是监控范围内SQL执行次数的总和时间。单位时间为秒。Elapsed Time = CPU Time Wait TimeCPU Time(s): 为SQL语句执行时CPU占用时间总时长,此时间会小于等于Elapsed Time时间。单位时间为秒。Executions: SQL语句在监控范围内的执行次数总计。Elap per Exec(s): 执行一次SQL的平均时间。单位时间为秒。% Total DB Time: 为SQL的Elapsed Time时间占数据库总时间的百分比。SQL ID: SQL语句的ID编号,点击之后就能导航到下边的SQL详细列表中,点击IE的返回可以回到当前SQL ID的地方。SQL Module: 显示该SQL是用什么方式连接到数据库执行的,如果是用SQL*Plus或者PL/SQL链接上来的那基本上都是有人在调试程序。一般用前台应用链接过来执行的sql该位置为空。SQL Text: 简单的sql提示,详细的需要点击SQL ID。3.2 SQL ordered by CPU Time:记录了执行占CPU时间总和时间最长的TOP SQL(请注意是监控范围内该SQL的执行占CPU时间总和,而不是单次SQL执行时间)。3.3 SQL ordered by Gets:记录了执行占总buffer gets(逻辑IO)的TOP SQL(请注意是监控范围内该SQL的执行占Gets总和,而不是单次SQL执行所占的Gets)。3.4 SQL ordered by Reads:记录了执行占总磁盘物理读(物理IO)的TOP SQL(请注意是监控范围内该SQL的执行占磁盘物理读总和,而不是单次SQL执行所占的磁盘物理读)。3.5 SQL ordered by Executions:记录了按照SQL的执行次数排序的TOP SQL。该排序可以看出监控范围内的SQL执行次数。3.6 SQL ordered by Parse Calls:记录了SQL的软解析次数的TOP SQL。说到软解析(soft prase)和硬解析(hard prase),就不能不说一下Oracle对sql的处理过程。3.7 SQL ordered by Sharable Memory:记录了SQL占用library cache的大小的TOP SQL。Sharable Mem (b):占用library cache的大小,单位是byte。3.8 SQL ordered by Version Count:记录了SQL的打开子游标的TOP SQL。3.9 SQL ordered by Cluster Wait Time:*一、AWR启用:为了启用AWR,可以将STATISTICS_LEVEL初始参数设置为TYPICAL或ALL。如果设置STATISTICS_LEVEL为BASIC,则可以生成AWR数据的手动快照,但这些快照不像由AWR自动执行的快照那样全面。将STATISTICS_LEVEL设置为ALL可以将定时的OS统计信息和计划执行统计信息添加到用TYPICAL设置收集的那些信息中。二、管理快照为了生成手动的快照,可以使用DBMS_WORKLOAD_REPOSITORY程序包的CREATE_ SNAPSHOT过程:execute DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT ();为了改变快照设置,可以使用MODIFY_SNAPSHOT_SETTINGS过程。可以修改快照的保留时间(以分钟为单位)和间隔时间(以分钟为单位)。下面的示例将当前数据库的快照间隔时间改为30分钟:execute DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS( interval = 30);为了删除一定范围的快照,可以使用DROP_SNAPSHOT_RANGE过程,同时指定要删除的开始快照ID和结束快照ID:execute DBMS_WORKLOAD_REPOSITORY.DROP_SNAPSHOT_RANGE(low_snap_id = 1, high_snap_id = 10);三、管理基线可以指定一组快照作为系统性能的基线。这些基线数据将被保留,便于以后与快照进行比较。使用CREATE_BASELINE过程来指定基线的开始快照和结束快照:execute DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE(start_snap_id = 1, end_snap_id = 10,baseline_name = Monday baseline);创建基线时,Oracle将一个ID赋予基线,可以通过DBA_HIST_BASELINE视图查看过去的基线。作为基线开始和结束的快照将一直保留,直到删除基线。为了删除基线,可以使用DROP_BASELINE过程:execute DBMS_WORKLOAD_REPOSITORY.DROP_BASELINE(baseline_name = Monday baseline, cascade = FALSE);如果设置DROP_BASELINE过程的CASCADE参数为TRUE,则在删除基线时将删除相关的快照。可以通过OEM或通过本节前面提到的DBA_HIST_SNAPSHOT数据字典视图来查看AWR数据。支持AWR的额外视图包括V$ACTIVE_SESSION_HISTORY(每秒采样一次)、DBA_HIST_SQL_PLAN(执行计划)以及DBA_HIST_WR_CONTROL(用于AWR设置)。第二份文档:Oracle Database 10g 提供了一个显著改进的工具:自动工作负载信息库 (AWR:Automatic Workload Repository)。Oracle 建议用户用这个取代 Statspack。AWR 实质上是一个 Oracle 的内置工具,它采集与性能相关的统计数据,并从那些统计数据中导出性能量度,以跟踪潜在的问题。与 Statspack 不同,快照由一个称为 MMON 的新的后台进程及其从进程自动地每小时采集一次。为了节省空间,采集的数据在 7 天后自动清除。快照频率和保留时间都可以由用户修改。它产生两种类型的输出:文本格式(类似于 Statspack 报表的文本格式但来自于 AWR 信息库)和默认的 HTML 格式(拥有到部分和子部分的所有超链接),从而提供了非常用户友好的报表。AWR 使用几个表来存储采集的统计数据,所有的表都存储在新的名称为 SYSAUX 的特定表空间中的 SYS 模式下,并且以 WRM$_* 和 WRH$_* 的格式命名。前一种类型存储元数据信息(如检查的数据库和采集的快照),后一种类型保存实际采集的统计数据。H 代表“历史数据 (historical)”而 M 代表“元数据 (metadata)”。在这些表上构建了几种带前缀 DBA_HIST_ 的视图,这些视图可以用来编写您自己的性能诊断工具。视图的名称直接与表相关;例如,视图 DBA_HIST_SYSMETRIC_SUMMARY 是在WRH$_SYSMETRIC_SUMMARY 表上构建的。一. AWR使用SQL?/rdbms/admin/awrrpt.sqlSpecify the Report TypeWould you like an HTML report, or a plain text report?Enter html for an HTML report, or text for plain textDefaults to html输入 report_type 的值: Type Specified: htmlSpecify the number of days of snapshots to choose fromEntering the number of days (n) will result in the most recent(n) days of snapshots being listed. Pressing withoutspecifying a number lists all completed snapshots.输入 num_days 的值: 1Listing the last days Completed Snapshots SnapInstance DB Name Snap Id Snap Started Level- - - - -orcl10g ORCL10G 142 03 7月 2009 08:11 1 143 03 7月 2009 09:00 1 144 03 7月 2009 10:00 1 145 03 7月 2009 11:00 1 146 03 7月 2009 12:01 1Specify the Begin and End Snapshot Ids输入 begin_snap 的值: 142Begin Snapshot Id specified: 142输入 end_snap 的值: 146End Snapshot Id specified: 146Specify the Report NameThe default report file name is awrrpt_1_142_146.html. To use this name,press to continue, otherwise enter an alternative.输入 report_name 的值: D:awrrpt_1_142_146.htmlReport written to D:awrrpt_1_142_146.html二 AWR 操作1.查看当前的AWR保存策略SQL col SNAP_INTERVAL format a20SQL col RETENTION format a20SQL select * from dba_hist_wr_control; DBID SNAP_INTERVAL RETENTION TOPNSQL- - - -262089084 +00000 01:00:00.0 +00007 00:00:00.0 DEFAULT以上结果表示,每小时产生一个SNAPSHOT,保留7天。2.调整AWR配置AWR配置都是通过dbms_workload_repository包进行配置。2.1 调整AWR产生snapshot的频率和保留策略,如将收集间隔时间改为30 分钟一次。并且保留5天时间(单位都是分钟):SQL exec dbms_workload_repository.modify_snapshot_settings(interval=30, retention=5*24*60);2.2 关闭AWR,把interval设为0则关闭自动捕捉快照SQL exec dbms_workload_repository.modify_snapshot_settings(interval=0);2.3 手工创建一个快照SQL exec DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT();2.4 查看快照SQL select * from sys.wrh$_active_session_history2.5 手工删除指定范围的快照SQL exec DBMS_WORKLOAD_REPOSITORY.DROP_SNAPSHOT_RANGE(low_snap_id = 973, high_snap_id = 999, dbid = 262089084);2.6 创建baseline,保存这些数据用于将来分析和比较SQL exec dbms_workload_repository.create_baseline(start_snap_id = 1003, end_snap_id = 1013, apply_interest_1);2.7 删除baselineSQL exec DBMS_WORKLOAD_REPOSITORY.DROP_BASELINE(baseline_name = apply_interest_1, cascade = FALSE);2.8 将AWR数据导出并迁移到其它数据库以便于以后分析SQL exec DBMS_SWRF_INTERNAL.AWR_EXTRACT(dmpfile = awr_data.dmp, mpdir = DIR_BDUMP, bid = 1003, eid = 1013);2.9 迁移AWR数据文件到其他数据库SQL exec DBMS_SWRF_INTERNAL.AWR_LOAD(SCHNAME = AWR_TEST, dmpfile = awr_data.dmp, dmpdir = DIR_BDUMP);把AWR数据转移到SYS模式中:SQL exec DBMS_SWRF_INTERNAL.MOVE_TO_AWR (SCHNAME = TEST);三. AWR 报告分析3.1 SQL ordered by Elapsed Time记录了执行总和时间的TOP SQL(请注意是监控范围内该SQL的执行时间总和,而不是单次SQL执行时间 Elapsed Time = CPU Time + Wait Time)。Elapsed Time(S): SQL语句执行用总时长,此排序就是按照这个字段进行的。注意该时间不是单个SQL跑的时间,而是监控范围内SQL执行次数的总和时间。单位时间为秒。Elapsed Time = CPU Time + Wait TimeCPU Time(s): 为SQL语句执行时CPU占用时间总时长,此时间会小于等于Elapsed Time时间。单位时间为秒。Executions: SQL语句在监控范围内的执行次数总计。Elap per Exec(s): 执行一次SQL的平均时间。单位时间为秒。% Total DB Time: 为SQL的Elapsed Time时间占数据库总时间的百分比。SQL ID: SQL语句的ID编号,点击之后就能导航到下边的SQL详细列表中,点击IE的返回可以回到当前SQL ID的地方。SQL Module: 显示该SQL是用什么方式连接到数据库执行的,如果是用SQL*Plus或者PL/SQL链接上来的那基本上都是有人在调试程序。一般用前台应用链接过来执行的sql该位置为空。SQL Text: 简单的sql提示,详细的需要点击SQL ID。3.2 SQL ordered by CPU Time:记录了执行占CPU时间总和时间最长的TOP SQL(请注意是监控范围内该SQL的执行占CPU时间总和,而不是单次SQL执行时间)。3.3 SQL ordered by Gets:记录了执行占总buffer gets(逻辑IO)的TOP SQL(请注意是监控范围内该SQL的执行占Gets总和,而不是单次SQL执行所占的Gets)。3.4 SQL ordered by Reads:记录了执行占总磁盘物理读(物理IO)的TOP SQL(请注意是监控范围内该SQL的执行占磁盘物理读总和,而不是单次SQL执行所占的磁盘物理读)。3.5 SQL ordered by Executions:记录了按照SQL的执行次数排序的TOP SQL。该排序可以看出监控范围内的SQL执行次数。3.6 SQL ordered by Parse Calls:记录了SQL的软解析次数的TOP SQL。说到软解析(soft prase)和硬解析(hard prase),就不能不说一下Oracle对sql的处理过程。3.7 SQL ordered by Sharable Memory:记录了SQL占用library cache的大小的TOP SQL。Sharable Mem (b):占用library cache的大小,单位是byte。3.8 SQL ordered by Version Count:记录了SQL的打开子游标的TOP SQL。3.9 SQL ordered by Cluster Wait Time:记录了集群的等待时间的TOP SQL三、一、WHY为什么会出现ASH和AWR?1. 10g之前用户的连接将产生会话,当前会话记录保存在v$session中;处于等待状态的会话会被复制一份放在v$session_wait中。当该连接断开后,其原来的连接信息在v$session和v$session_wait中就会被删除。这是10g之前的状况。2. v$session_wait_history与ASH若是一个普通的会话(我是指没有大量地耗费资源),则对于性能调整来说无足轻重。但若该会话在活动时大量占用了资源(比如:CPU,内存,I/O等),该会话信息的丢失,将无法评测当时的系统瓶颈究竟是什么。令DBA高兴的是,oracle10g中保留下了v$session_wait中的这些信息。在10g中新出现了一个视图:v$session_wait_history。这个视图保存了每个活动session在v$session_wait中最近10次的等待事件。但这对于一段时期内的数据库性能状况的监测是远远不够的,为了解决这个问题,在10g中还新添加了一个视图:v$active_session_history。这就是ASH(active session history)。典型的情况下,为了诊断当前数据库的状态,需要最近的五到十分钟的详细信息。然而,由于记录session的活动信息是很费时间和空间的,ASH采用的策略是:保存处于等待状态的活动session的信息,每秒从v$session_wait中采样一次,并将采样信息保存在内存中。3. AWR注意,ASH的采样数据是保存在内存中。而分配给ASH的内存空间是有限的,当所分配空间占满后,旧的记录就会被覆盖掉;而且数据库重启后,所有的这些ASH信息都会消失。这样,对于长期检测oracle的性能是不可能的。在Oracle10g中,提供了永久保留ASH信息的方法,这就是AWR(auto workload repository)。由于全部保存ASH中的信息是非常耗费时间和空间的,AWR采用的策略是:每小时对v$active_session_history进行采样一次,并将信息保存到磁盘中,并且保留7天,7天后旧的记录才会被覆盖。这些采样信息被保存在视图wrh$_active_session_history中。而这个采样频率(1小时)和保留时间(7天)是可以根据实际情况进行调整的,这就给DBA们提供了更加有效的系统监测工具。AWR永久地保存系统的性能诊断信息,由SYS用户拥有。一段时间后,你可能想清除掉这些信息;有时候为了性能诊断,你可能需要自己定义采样频率来获取系统快照信息。Oracle 10g在包dbms_workload_repository中提供了很多过程,通过这些过程,你可以管理快照并设定基线(baselines)。4. 小结这样,我们就知道了ASH和AWR产生的原因和功能。ASH保存了系统最新的处于等待的会话记录,可以用来诊断数据库的当前状态;而AWR中的信息最长可能有1小时的延迟,所以其采样信息并不能用于诊断数据库的当前状态,但可以用来作为一段时期内数据库性能调整的参考。对于这些视图间的继承关系,eygle给出了一个关系图:图1 各个视图的层次其中视图dba_hist_active_sess_history是wrh$_active_session_history和其他几个视图的联合展现,通常通过这个视图进行历史数据的访问。二、WHAT什么是AWR?现在我们稍微详细地了解一下刚才所说内容。1. ash占用的内存大小ASH的采集信息保存在内存中,在旧的信息被采样到AWR中后,可被新采集的信息覆盖,重启oracle后该信息被清除。分配给ASH的内存大小可以查询到:SQL select pool, name, bytes/1024/1024 From v$sgastat where name like %ASH %;POOL NAME BYTES/1024/1024- - -shared pool ASH buffers 2 2. AWR更正为了便于描述和理解,在第一部分中

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论