武器四:孔雀翎 — ash、awr、addm、addr
是一种暗器,但又不是暗器。悄然,自动,不动声色间,一切皆在握。Oracle在10g开始,推出了一系列自动化、智能化的工具,虽然这些工具在以前或多或少都有相似的影子,但功能的增强、理念的增强,造就了这些以前所不具备的新工具。
Active Session History(ASH)-活动会话历史,每秒钟自动从内存中抓取样例的活动会话信息,比如,通过以下语句:
select a.sql_text from v$sql a
where sql_id in (select sql_id from v$active_session_history where session_id=157);
• 信息直接从内存结构中获取,并不保存,仅在系统运行中有效
• 可以得到
• SID
• SQL ID
• Program
• Wait event#
• Object, File, Block
• actual wait time (if captured while waiting)
通过ashrpt.sql可以产生ash分析报告,发现某个时段的TOP (Top Events/ Top SQL/ Top Sessions/ Top Objects/Files/Latches)
通过活动会话历史信息,可以追溯到性能问题的根源,找出什么资源在竞争?向下追溯到哪个程序带来了竞争?以及哪个SQL带来了竞争?
用户可以找出活动会话信息中的TOP,如通过TOP SQL可以进一步发现问题。
Automatic Workload Repository-自动负载信息库 (AWR)
• 10g的数据库中内置了工作负载信息库
• AWR是Oracle10g数据库自动化管理的基础架构
• 自动捕获工作负载数据
• 默认情况下,每隔 60 分钟保存一次,或者手动保存 7 天的数据
• 存储在新SYSAUX 表空间内
• 服务器自动管理空间要求
• 自动清除旧数据
• 存储不同类别的数据:
• 基本统计,例如物理读取
• SQL 统计,例如磁盘读取(每个 sql 语句)
• 量度,例如,物理读取数量/秒
• 通过awrrpt.sql可以产生与statspack类似的性能差异报告
Automatic Database Diagnostic Monitor -自动数据库诊断监控(ADDM) :
• AWR收集完信息后自动调用,为数据库提供性能诊断分析报告
• 分析依赖于AWR收集的性能信息快照,对比两次收集快照的性能差异,提供分析建议
• 由Oracle自动调用,也可以手动调用
• 可以分析当前的,最近一次收集的,也可以分析之前还存在的AWR快照
• 对RAC 架构同样适用
• 分析结果在数据库的相应字典表中存储,可以通过dbms_advisor包的get_task_report过程来获取已经分析的结果,也可以通过addmrpt.sql脚本对特定的快照进行分析。
Automatic Database difference Report - AWR数据对比报告(ADDR):
• 对AWR报告的一种补充
• 基于基线的理念,对比比单纯的报告更能够说明问题
• 比基线更灵活,产生报告时随意选择对比基线
• 通过awrddrpt.sql可以获取性能异常时间与正常时间段AWR报告的对比值,能够快速发现性能差异,从而定位问题
性能调优工具关联图示: