Oracle AWR (Automatic Workload Repository) 是 Oracle 数据库提供的一种自动化工具,可以通过收集系统性能指标、事件和 SQL 语句等信息,来完成性能诊断和优化。其中一个重要的计算指标就是 AWR 计算。
AWR 计算是 Oracle 数据库中非常重要的一个指标,也是 Oracle 诊断工具中的重要组成部分。它可以用于评估系统的性能表现、确定瓶颈并识别最影响系统性能的 SQL 语句。AWR 计算主要通过 Oracle 数据库中的时间模型收集性能信息,然后计算出每个时间段内各种资源的使用情况、等待事件的数量和持续时间以及执行慢 SQL 的原因等重要性能指标。
在 Oracle 数据库中进行 AWR 计算的方式有两种,即使用数据字典视图或在 Oracle Enterprise Manager 中使用图形化界面。
AWR 中的计算数据是持久性的,这意味着通过 AWR 计算所获得的信息能够在数据库关闭后和之后重新打开时保留下来。AWR 计算数据存储在表中,它们包括:
· DBA_HIST_ACTIVE_SESS_HISTORY · DBA_HIST_SQLSTAT · DBA_HIST_SEG_STAT · DBA_HIST_SYSSTAT
以下是一些使用 AWR 计算的例子:
-- 查询平均 I/O 效率 SELECT ROUND((disk_reads+direct_writes)/(DB_BLOCK_GETS+CONSISTENT_GETS), 2) "I/O_efficiency" FROM dba_hist_sysstat WHERE stat_name = 'physical reads'; -- 查询 SQL 语句执行最慢的 top 10 SELECT sql_id,elapsed_time/1000000 FROM dba_hist_sqlstat ORDER BY elapsed_time DESC FETCH FIRST 10 ROWS ONLY; -- 查询内存使用 SELECT ROUND((SUM(value)/(1024*1024)), 2) "SGA大小 (MB)" FROM dba_hist_sgastat WHERE pool = 'shared pool' AND NAME = 'free memory' AND TRUNC(begin_interval_time) = TRUNC(SYSDATE) - 1; -- 查询主机 CPU 内存使用 SELECT host_name, ROUND(AVG(VALUE)) "CPU使用率 (%)", ROUND(MAX(VALUE)/1024/1024,2) "内存总量 (MB)", ROUND(AVG(VALUE)/1024/1024,2) "平均内存使用 (MB)" FROM dba_hist_osstat h WHERE TRUNC(begin_interval_time) = TRUNC(SYSDATE-1) GROUP BY host_name;
通过 AWR 计算,可以轻松地监控自己的数据库运行状态,发现性能问题并及时调整。除了使用以上列举的例子来获取系统的性能指标,Oracle 还提供了丰富多样的性能分析工具,用户可以根据自己的需求选择合适的工具进行使用。