淘先锋技术网

首页 1 2 3 4 5 6 7

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 还提供了丰富多样的性能分析工具,用户可以根据自己的需求选择合适的工具进行使用。