分析利用Oracle AWR分析数据库性能(oracle awr结果)

Oracle AWR(Automatic Workload Repository)是一种能够运行在Oracle数据库中的性能分析工具。该工具可以从数据库中收集性能数据,并将这些数据存储在一个称为AWR的数据库中。随着时间的推移,AWR会累积大量的性能数据,通过这些数据,我们可以进行数据库性能调优。

下面介绍一些通过Oracle AWR对数据库性能进行分析的方法。

一、AWR报告

AWR报告是一种以HTML格式呈现的报告,其中包括了许多有关数据库的性能信息。AWR报告可以从数据库中收集大量的系统信息,并针对某些关键性能指标进行评估和建议。生成AWR报告的方法相当简单,在SQL Plus中输入:

$ sqlplus /nolog
SQL> connect / as sysdba
SQL> @?/rdbms/admin/awrrpt.sql

该命令将生成一个AWR报告,其中包括对数据库进行一些基本的性能评估,例如:

1、CPU利用率。

2、磁盘交换项。

3、网络延迟。

4、等待事件。

我们可以通过这些数据来了解数据库的总体性能,以及数据库中可能存在的瓶颈。

二、AWR快照

AWR快照是可以按照规定的时间间隔记录数据库的性能数据。我们可以通过这种方式来收集大量的数据库性能数据,以便进行更深入的分析。为了收集AWR快照,我们必须将数据库实例设置为自动快照模式,使用以下命令:

SQL> ALTER SYSTEM SET STATISTICS_LEVEL=ALL;
SQL> ALTER SYSTEM SET CONTROL_MANAGEMENT_PACK_ACCESS=DIAGNOSTIC;

这些命令将使数据库实例开始记录性能快照和基线数据,并将这些数据存储在AWR中。

三、AWR基线

AWR基线是一种可以帮助诊断数据库性能问题的工具。AWR基线通常是通过收集AWR快照的方式来形成的。AWR基线使用新收集的性能数据与先前创建的性能数据进行比较。通过这种方式,我们可以观察数据库性能是否出现大幅波动。如果出现大幅波动,那么我们可以通过AWR分析来确定问题所在,并进行相应的优化。

下面我们将通过一些SQL查询来了解如何使用AWR报告、快照和基线来进行数据库性能分析。

四、SQL查询

以下SQL查询是用来从AWR中提取信息的。

1、查找数据库中最慢的查询:

SELECT * FROM (SELECT SQL_TEXT, ELAPSED_TIME / 1000000 AS ET_SEC, TO_CHAR(SNAPSHOT_TIME, 'yyyy-mm-dd hh24:mi') AS SNAPSHOT_TIME
FROM DBA_HIST_SQLSTAT a, DBA_HIST_SNAPSHOT b, DBA_HIST_SQLTEXT c
WHERE a.SNAP_ID = b.SNAP_ID
AND a.SQL_ID = c.SQL_ID
ORDER BY ELAPSED_TIME DESC) WHERE ROWNUM

该查询使用DBA_HIST_SQLSTAT表和DBA_HIST_SQLTEXT表,来获取执行时间最长的前10条SQL语句,并显示它们的执行时间和快照时间。

2、查看特定时间范围内的数据库的平均负载:

SELECT TO_CHAR(SNAP_TIME, 'yyyy-mm-dd hh24:mi') AS SNAP_TIME, ROUND(VALUE/60, 1) AS "Load (Mins)", METRIC_NAME
FROM DBA_HIST_SYSMETRIC_SUMMARY a, DBA_HIST_SNAPSHOT b
WHERE a.snap_id = b.snap_id
AND GROUP_ID = 2
AND METRIC_NAME LIKE 'Host%'
AND SNAP_TIME BETWEEN TRUNC(SYSDATE)-7 AND TRUNC(SYSDATE)
ORDER BY SNAP_TIME ASC;

该查询使用DBA_HIST_SYSMETRIC_SUMMARY表和DBA_HIST_SNAPSHOT表,获取最近7天内的数据库平均负载。

3、查看等待事件比率:

SELECT EVENT_NAME, TOTAL_WTS, TIME_WTED_MICRO/1000000 AS TIME_WTED_SEC, ROUND(TIME_WTED_MICRO/TOTAL_WTS, 2) AS AVG_WT_TIME_MICRO, ROUND(TOTAL_WTS/1000, 2) AS THOUSAND_WTS
FROM DBA_HIST_SYSTEM_EVENT a, V$EVENT_NAME b, DBA_HIST_SNAPSHOT c
WHERE a.EVENT_ID = b.EVENT_ID
AND a.SNAP_ID = c.SNAP_ID
AND EVENT_NAME NOT LIKE '%CPU%'
AND EVENT_NAME NOT LIKE '%log%'
AND EVENT_NAME NOT LIKE '%pmon%'
AND TIME_WTED_MICRO > 0
AND SNAP_TIME >= SYSDATE - 7
ORDER BY TIME_WTED_MICRO DESC;

该查询使用了DBA_HIST_SYSTEM_EVENT表和V$EVENT_NAME表,展示了近7天内发生等待事件的信息。

以上就是通过Oracle AWR分析数据库性能的一些方法和SQL查询。借助这些工具和查询,我们可以更加深入地了解数据库性能,并针对性进行优化和调整。


数据运维技术 » 分析利用Oracle AWR分析数据库性能(oracle awr结果)