文档内容
适用于:
Oracle Database - Personal Edition - 版本 10.1.0.2 和更高版本
Oracle Database - Enterprise Edition - 版本 10.1.0.2 和更高版本
Oracle Database - Standard Edition - 版本 10.1.0.2 和更高版本
本文档所含信息适用于所有平台
用途
本文档介绍了一种最佳实践方法,用于确保在第一次发生问题时主动收集到足够的性能数据,从而能够有效地确定根本原因。您可以将本文档与下列文档结合使用,帮助避免问题发生,或者在问题无法避免时收集进行快速诊断所需的信息:
Document 1482811.1 Best Practices: Proactively Avoiding Database and Query Performance issues
注意:这些建议均为最佳实践,适用于技术人员所遇到的大多数情况。每个问题各不相同,并且在某些情况下,要完全实现根本原因诊断,可能需要进行其他特定诊断。预先收集每个问题的针对性信息并不一定可行,因为解决某个问题的特定诊断可能不适用于所有情况。本文档的目的是给读者提供一个坚实的起点,帮助他们收集到足够多的信息来解决大多数问题,同时针对进一步的跟踪提供及时的建议。
单击此处,可以找到一个和本文档描述内容 相关的40分钟的视频.
提出问题、获取帮助并分享您的经验
您想要与其他 Oracle 客户、Oracle 员工及业内专家深入探讨吗?
单击此处,访问 My Oracle Support Community(中文),在这里您可以提出问题、获取他人的帮助并分享您的经验。
适用范围
本文档旨在为数据库用户提供关于诊断性能数据收集的主动型最佳实践的建议。
详细信息
实施总结
众所周知,要收集足够多的数据来解决复杂的性能问题是非常困难的。过去,用户在遇到问题后联系 Oracle Support
时,有可能只是被告知未收到足够多的数据,或者由于是第一次出现该问题,因而没有任何数据能够帮助他们解决问题。然后,技术支持人员会建议用户收集某些数据(随后是反复收集更多数据的过程),但在用户将这些数据发送给他们后,可能又被告知未收集到足够的数据,需要在下次问题发生时收集更多。
本文档介绍的方法,可以消除或减少不必要的数据收集以减少花费的时间和精力,从而及时解决问题。本文档中介绍的方法对数据库本身性能的影响微乎其微,有些方法(例如与
Automatic Workload Repository(AWR)相关联的方法 )甚至已经集成到数据库中。
方法
我们的最佳实践方法包括:
-
自上而下的数据收集方法
-
建立多条基线
-
在问题发生前安装并运行正确的工具
-
针对不稳定的环境部署专用工具
自上而下的方法:
操作系统 (OS) 级的数据收集。
只有当 Oracle 所在的服务器以最佳状态运行时,Oracle 才能以最佳状态运行。因此,当您开始在服务器级别进行数据收集时,最好使用 OSWatcher 来捕获操作系统指标,从而可以监视并调整服务器性能。
-
OSWatcher
OSWatcher(OSW) 包含一个内置的分析器,通过该分析器,可以对已收集的数据进行自动分析,进而主动查找 CPU、内存、IO 和网络问题。建议所有用户安装并运行 OSWbb,因为对于查找 OS 问题,OSWbb 的作用非常大,且几乎没有开销。
在默认情况下,一旦安装并运行
OSWatcher,它将提供对最近 48 个小时的 OS 数据进行“回看”功能。因此,如果在凌晨 2 点发生了节点驱逐,Oracle
Support 将能够从 OSWatcher 日志中看到当时在 OS 上发生的情况。在 OSWatcher Black Box
之前,您没有办法回看在失去服务或出现严重性能问题的时候 OS 上可能发生的事情,Oracle 也无法了解 OS 上的情况。
有关 OSWatcher 的下载、用户指南和使用视频等信息,请参阅以下文档。
数据库级的数据收集
几个可用于收集进行性能分析所需综合数据的工具:
Automatic Workload Repository (AWR) 和 Active Session History (ASH)
报告是 Oracle Diagnostics Pack
的两个独立组件,且必须作为单独选项获得使用许可。最佳实践建议是获取并使用该许可,从而可以访问该数据。请参阅:
否则,您必须使用 statspack 工具。
建立多条基线:
应根据您的业务特征,获取并存储不同时段的基线。建议的基线收集包括:
-
正常活动
-
非繁忙时间
-
一天中最忙的时间
-
月末或业务周期处理
-
批处理作业
拥有上述多条基线时,您将会清楚地了解系统是如何正常运行的。当发生问题时,与这些基线进行比较将有助于解决问题。如果未建立基线,要理解性能问题的本质将更加困难。如果用户在系统性能不佳时仅提供
AWR,则将更加难以分析数据库的性能;在没有比较的情况下,数据库性能好坏与否可能就会变成“主观臆测”。作为最佳实践,Oracle
Support 建议创建 O/S (OSWbb) 和数据库 (AWR) 的基线。
做好准备!:在问题发生前安装并运行正确的工具
除了安装并运行 OSW 以及在指定的时间间隔收集 AWR 外,Oracle Support 还提供了一些专用工具,您应该在服务器上安装这些工具,一旦发生问题,可确保能立即派上用场。
注意:这些工具无需一直运行,但是如果事先安装好,您就可以在发生问题时快速收集信息,而不是眼见错失机会,需要等待问题重新出现
-
HangFG
HangFG 可以自动收集挂起诊断,用户无需知道要生成的 trace 的类型和级别。如果 HangFG 已安装,并且数据库发生了挂起,此时用户可以使用一个简单的 unix shell 命令行界面,他们可以根据自己的需要选择不同数据量的数据收集。
请参阅下列文档,获取有关 Hangfg 的下载和用户指南。
当前有 3 个级别可供用户选择,以启动挂起诊断信息的自动生成。这为用户提供了一定的灵活性,用户可以确保在进行挂起诊断的时候尽可能不干扰数据库(如果数据库仍处于正常运行状态)。
-
对系统产生轻度影响。此选项收集 2 个 hanganalyze 级别 3 的 trace
文件,然后确定是否还可以在对系统产生最小影响的情况下收集 1 个 hanganalyze 级别 4 的 trace 文件。如果可以,它将收集
hanganalyze 级别 4 的 trace 文件。如果不可以,它将不收集其他 trace 文件。
-
对系统产生中度影响(默认值)。此选项收集 1 个 hanganalyze 级别 3 的 trace
文件,然后确定是否还可以在对系统产生最小影响的情况下收集 2 个 hanganalyze 级别 4 的 trace 文件。如果可以,它将收集 2
个其他的 hanganalyze 级别 4 的 trace 文件。如果不可以,它将收集 1 个其他的 hanganalyze 级别 3 的
trace 文件。此选项还收集 1 个 systemstate 级别 266 的 trace 文件。
-
对系统产生重度影响。此选项收集 2 个 hanganalyze 级别 4 的 trace 文件和 2 个 systemstate 级别 266 的 trace 文件。
-
SQLHC
SQL Tuning Health-Check Script 是 Oracle Server Technologies Center of
Expertise 开发的一款工具。该工具,又称为 SQLHC,用于检查单个 SQL 语句运行的环境,并检查基于成本的 optimizer
(CBO) 统计信息、schema 对象元数据、配置参数和可能会影响正在分析的 SQL 性能的其他元素。
有关此工具的更多详细信息,请参阅:
SQLHC 旨在允许用户确保单个 SQL 运行的环境是健康的,并尽量避免能够避免的 SQL
性能问题。运行时,它“不会在数据库上留下任何痕迹”,从而确保可以在所有系统上运行。针对一个 SQL_ID 执行时,该脚本会生成一个 HTML
报告,其中包括有关所提供的那个 SQL 语句的一组健康检查结果。
-
SQLTXPLAIN (SQLT)
这是一款更加复杂的工具,用于解决 SQL 性能问题(但会在数据库上留下痕迹)。SQLTXPLAIN,又称为 SQLT,是由 Oracle
Support 提供的一款工具,输入一个 SQL 语句后,它会输出一组诊断文件。这些文件通常用于诊断性能不佳的 SQL 语句。SQLT
会连接到数据库,并收集执行计划、基于成本的 optimizer CBO 统计信息、schema
对象元数据、性能统计信息、配置参数和会影响正在分析的 SQL 性能的其他因素。
有关 SQLT 的更多详细信息,请参阅以下文档。
Document 215187.1 SQLT (SQLTXPLAIN) - Tool that helps to diagnose a SQL statement performing poorly
针对不稳定的环境部署专用工具:
大部分用户的环境是稳定的,没有任何性能问题。对于拥有不稳定环境且正遇到无法通过上述传统数据收集方法解决的挂起或遇到瞬间性能问题的用户,Oracle Support 提供了一些专用工具,以协助调试此类问题。
-
LTOM
LTOM 是一款可安装在客户 unix/linux
平台上的非常特别的工具。对于那些很少发生,或者发生时间很短以至于无法手工收集信息的问题,此工具可以用来自动收集需要的信息。例如,LTOM
可以监控瞬间发生的问题,并在发生问题时自动收集诊断,然后通过电子邮件通知用户,同时生成解决问题所必需的诊断 trace
文件。如果您的数据库在凌晨 2 点挂起,周围没有工作人员,LTOM 会自动检测并获取诊断,因此在您记录 SR 时 Oracle Support
就可以获取所必需的诊断 trace 文件。
有关下载和用户指南,请参阅以下文章。
-
Procwatcher
Procwatcher 工具用于按时间间隔检查和监控 Oracle 数据库和/或集群进程。该工具会使用 Oracle 工具(如 oradebug
short_stack)和/或 OS 调试程序(如 pstack、gdb、dbx 或 ladebug)收集堆栈 trace
文件,如果指定的话还会收集 SQL 数据。
有关详细信息,请参阅以下文章:
Document 459694.1 Procwatcher: Script to Monitor and Examine Oracle DB and Clusterware Processes
升级前要收集的信息
升级可以视为一种您知道某些东西将要发生变化的特殊情况,特别是数据库的版本变化。由于版本变化可能会包含新的功能以及可能会改变某些查询性能的缺陷修正,因此有必要在升级前收集基线信息,从而能够在升级后进行比较。为进行此操作,我们建议建立以下基线:
AWR baselines
与前面建议的标准基线类似,获取关键基线性能操作的 AWR 快照,从而可以在发生问题时将其与升级后的情况进行比较。建议的基线收集包括:
-
正常活动
-
一天中最忙的时间
-
月末或业务周期处理
-
批处理作业
SQL Plan management Baselines
SQL Plan Management 可用于跨版本保持SQL 性能。如果您希望保持升级前后的 SQL 性能,请对有此需求的 SQL 语句创建基线。我们建议您至少对应用程序中的 关键SQL 语句执行该操作。将这些基线传输到新系统中并启用它们。
主动型最佳实践的核对表
______ 将 OSWatcher 安装在安装了 Oracle Database 的每个节点上,然后运行它。
每天运行 OSWatcher Analyzer 以查看服务器上的性能问题。
______ 获取 Diagnostics Pack 许可
______ 配置 AWR 快照时间间隔并验证 AWR 快照是否按预期时间间隔进行
______ 建立 O/S(使用 OSW)和数据库(使用 AWR)的多条基线。
______ 下载 Hangfg 并准备好在数据库挂起时运行
______ 安装 SQLHC 并按预期时间间隔运行
______ 下载 SQLT 并准备好在需要时安装到数据库上
______ 如果运行环境不稳定,且问题无法使用上述工具解决,请考虑下载并安装 LTOM
创建服务请求
如果需要 SR,请参阅以下文档,了解有关 SR 内容的详细信息:
如果未进行主动型收集,怎么办
在出现问题之前没有采取主动型步骤来收集信息的情况是存在的。针对这些情况,我们有大量的文章概述了如何处理每种特定的情况,并给出了关于收集相关数据的最佳实践建议。请参阅:
请注意,在这些情况下,为了能够收集信息,可能需要重现问题,因为无法以回顾性方式收集所有情况下的诊断信息。
关于性能问题服务请求诊断信息收集的文档(SRDC)
服务请求诊断信息收集(SRDC) 文档是一个提供给用户对于各种性能问题来如何逐步收集诊断信息的文档.
参考
NOTE:250655.1 - How to use the Automatic Database Diagnostic Monitor
NOTE:301137.1 - OSWatcher (Includes: [Video])
NOTE:459694.1 - Procwatcher: Script to Monitor and Examine Oracle DB and Clusterware Processes
NOTE:243132.1 - Analysis of Active Session History (Ash) Online and Offline
NOTE:362094.1 - HANGFG User Guide
NOTE:1366133.1 - SQL Tuning Health-Check Script (SQLHC)
NOTE:215187.1 - SQLT Diagnostic Tool
NOTE:1377446.1 - * Troubleshooting Performance Issues
NOTE:1482811.1 - Best Practices: Proactively Avoiding Database and Query Performance Issues
NOTE:210014.1 - How to Log a Good Performance Service Request
NOTE:352363.1 - LTOM - The On-Board Monitor User Guide
NOTE:1363422.1 - Automatic Workload Repository (AWR) Reports - Main Information Sources