技术开发 频道

李轶楠细数数据库性能诊断兵器谱

    武器四:孔雀翎 — 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报告的对比值,能够快速发现性能差异,从而定位问题 

    性能调优工具关联图示:






 

2
相关文章