Oracle性能调整的三把利剑
--ASH,AWR,ADDM
ASH (Active Session History)
ASH以V$SESSION为基础,每秒采样一次,记录活动会话等待的事件。不活动的会话不会采样,采样工作由新引入的后台进程MMNL来完成。
ASH buffers 的最小值为1MB,最大值不超过30MB。内存中记录数据。期望值是记录一小时的内容。
生成ASH报告:
SQLPLUS>@?/rdbms/ashrpt.sql
ASH内存记录数据始终是有限的,为了保存历史数据,引入了自动负载信息库(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的进程来完成的。
AWR存储的数据分类:
WRM$表存储AWR的元数据(awrinfo.sql脚本)
WRH$表存储采样快照的历史数据(awrrpt.sql脚本)
WRI$表存储同数据库建议功能相关的数据(ADDM相关数据)
一.生成AWR报告:
SQL>@?/rdbms/admin/awrrpt
根据向导来完成AWR报告的生成。需要注意的是,在选择时间范围的时候,中间不能有停机(如果显示的时间中间有空白行,表示有停机情况)。在选择报告类型的时候一般使用默认的HTML,方便查看。