最佳实践:主动避免数据库和查询相关的性能问题 (文档 ID 1549184.1)

最佳实践:主动避免数据库和查询相关的性能问题 (文档 ID 1549184.1)

转到底部转到底部

文档内容


用途
  提出问题、获取帮助并分享您的经验

问题和答案
  简介
  关于主动避免的建议
  管理变更
  收集和维护基线
  升级
  建议的设置
  补丁
  收集 optimizer 统计信息
  准备收集诊断信息
  了解如何与 Support 有效地互动
  监控潜在问题
  使用 ADDM 检查结果作为调查的开始
  利用实时 SQL 监控功能
  有用参考
  故障排除指南
  有关性能的网上研讨会
  “性能和可扩展性”白皮书及文档
  社区:数据库优化与 SQL 调优

参考


适用于:

Oracle Database - Personal Edition - 版本 7.1.4.0 和更高版本
Oracle Database - Standard Edition - 版本 7.0.16.0 和更高版本
Enterprise Manager for Oracle Database - 版本 8.1.7.4 和更高版本
Oracle Database - Enterprise Edition - 版本 6.0.0.0 和更高版本
本文档所含信息适用于所有平台

用途

本文档提供了有关如何尽可能主动避免性能问题的信息。

提出问题、获取帮助并分享您的经验

您想要与其他 Oracle 客户、Oracle 员工及业内专家深入探讨吗?

单击此处,访问 My Oracle Support Community,在这里您可以提出问题、获取他人的帮助并分享您的经验。

问题和答案

简介

在大多数情况下,Oracle 数据库在安装后会运行良好,基本不需要用户干预。万一出现问题,您可以采取一些措施来做好相应准备,以减轻这些问题的影响。

本文档概述了一些可用于减轻任何此类问题影响的技巧。

请注意,本文档中的“建议”是指导您如何应用“最佳实践”。因此,一些建议的功能可能需要购买额外的许可证才能启用。一些更为常见的功能已包含在标准的数据库许可证中。文档中会注明需要许可证的部分。

关于主动避免的建议

管理变更

收集和维护基线

关于主动避免问题,您应该收集 2 种不同类型的“基线”。

  1. 记录系统正常运行时资源使用情况的系统 “性能”AWR 基线

    如果您的系统运行良好,则可以记录当前信息以形成基线,以便在将来出现任何问题时进行比较。通过Automatic Workload Repository(AWR),您可以捕获基线数据,且可以指定并保存一对或一系列快照作为基线。基线中包含的快照不会被自动 AWR 清除进程清理,并将被无限期保留。然后,可以从这些基线中创建报告,将其与当前的情况进行比较,从而确定差异。有关创建基线的详细信息,请参阅:

    Oracle Database Online Documentation 12c Release 1 (12.1)
    Database Administration
    Database 2 Day + Performance Tuning Guide
    Chapter 9 Resolving Performance Degradation Over Time
    http://docs.oracle.com/database/121/TDPPT/tdppt_degrade.htm#TDPPT089
     
    除了可以为您提供与以前情况的比较外,基线还具有许多其他优势, 请参阅下面的 监控潜在问题 部分。关于您可能希望收集的潜在基线,以下文章提供了更多建议:

    Document 1477599.1 Best Practices: Proactive Data Collection for Performance Issues
     
    使用 Automatic Workload Repository 需要 Diagnostics Pack 许可证。请参阅:

    Document 1490798.1 AWR Reporting - Licensing Requirements Clarification
     
  2. SQL Plan Baselines 旨在维护执行计划的稳定性,并允许在发生变化时恢复已记录的执行计划

    当系统发生任何变化时,您希望能够快速且轻松地恢复以前的性能。确保稳定性的最好办法是使用 SQL Plan Management(SPM),来确保关键操作使用已知良好的执行计划并在变化前后保持相同的性能。对于具有及使用相对静态数据和配置文件的系统而言,我们建议您记录关键应用程序查询的 SQL Plan Baselines,以便固定访问路径,从而避免发生意外变化。如果数据量和使用配置文件变化不定,则此类基线可用于提供稳定的退路,但是您可能需要 optimizer 来更改执行计划,以反映变化的数据分布。有关详细信息,请参阅:

    Document 1359841.1 Plan Stability Features (Including SPM) Start Point

    https://blogs.oracle.com/optimizer/entry/sql_plan_management_part_1_of_4_creating_sql_plan_baselines

    Oracle Database Online Documentation 12c Release 1 (12.1)
    Database Administration
    Database SQL Tuning Guide
    Chapter 23 Managing SQL Plan Baselines
    http://docs.oracle.com/database/121/TGSQL/tgsql_spm.htm#TGSQL94621

    请注意,对于统计信息变化,数据库会自动保留最近 30 天的统计信息,从而可以在发生巨大变化时进行恢复。请参阅:
    Document 452011.1 Restoring table statistics in 10G onwards

    另请注意,SPM 是作为 Oracle Database 企业版 11g 的一部分提供的,因此使用 SQL Plan Management (SPM) 或 DBMS_SPM 包中的任何程序时无需其他许可证。请参阅:
升级

升级会引起软件和硬件使用方面的重大变化。在进行任何升级之前,建议做好性能基线的准备工作,从而使系统性能至少不会差于先前的水平。此外,我们建议使用 Real Application Testing RAT 来启用对实际工作负载的“试验”测试,以确保系统按预期运行。这些领域的关键文档参见:

Document 1904820.1 Things to Consider Before Upgrading to Avoid Poor Performance, Wrong Results or SQL Plan Management (SPM) Issues (11.2.0.X and above)
Document1905086.1 Oracle Upgrade Companions

Document 562899.1 Using SQL Performance Analyzer to Test SQL Performance Impact of an Upgrade
Document 445116.1 Using Workload Capture and Replay
Document 456518.1 How to Use SQL Plan Management (SPM) - Plan Stability Worked Example

下面的 Oracle Open World 演示提供了此工具套件的功能示例,名为“Load Testing”,其中提供了捕获/重现的案例研究。下列手册中有进一步的说明:

Oracle Database Online Documentation 12c Release 1 (12.1)
Database Administration
Database Testing Guide
Chapter 1 Introduction to Oracle Database Testing
http://docs.oracle.com/database/121/RATUG/rat_intro.htm#RATUG101

Chapter 7 Testing a Database Upgrade
http://docs.oracle.com/database/121/RATUG/spa_upgrade.htm#RATUG210

此外,在 Oracle Open World 演示的末尾,提供了关于 RAT 使用的示例,名为“Tuning Toolkit for Advanced DBAs”。注意:Real Application Testing 是一种需要许可证的功能。请参阅:

Document 1361401.1 Where to Find Information About Performance Related Features
Document 1464274.1 Master Note for Real Application Testing Option

还可根据下列文档中的概述,通过手动步骤来尝试减少对查询的影响:

Document 167086.1 Tips for Avoiding Upgrade Related Query Problems

另请参阅下列文档中的升级计划部分:

Document 402983.1 Master Note: Database Performance Overview

请注意Real Application Testing选项需要相应的license. 参考:

Oracle Database Online Documentation 12c Release 1 (12.1)
Database Licensing Information
Chapter 2 Options and Packs
Oracle Real Application Testing
http://docs.oracle.com/database/121/DBLIC/options.htm#DBLIC139

建议的设置

一定要尽量使用建议的系统设置。您的应用程序提供商可能在这方面有特定的要求。请参阅特定的文档,了解相关建议。

补丁

Oracle Support 建议使用最新的版本和补丁集,以确保已知问题都得到解决。与性能相关的特定建议,请参阅:

Document 1904820.1 Things to Consider Before Upgrading to Avoid Poor Performance, Wrong Results or SQL Plan Management (SPM) Issues (11.2.0.X and above)
收集 optimizer 统计信息

SQL 性能良好与否取决正在被查询对象的统计信息是否准确及可用。默认情况下(自 Oracle 10g 起),Oracle 会自动收集系统大部分范围内的统计信息。我们 也会根据需要提供增强统计信息的建议。请参阅:

Document 1226841.1 How To: Gather Statistics for the Cost Based Optimizer
准备收集诊断信息

在问题发生后再收集有关该问题的信息可能是没用的。默认情况下,Oracle 会收集一些信息,但这些信息不一定足以解决所有问题。关于如何收集诊断时需要的信息,请参阅:

Document 1477599.1 Best Practices: Proactive Data Collection for Performance Issues
了解如何与 Support 有效地互动

如果您遇到无法处理的问题或者需要请求支持协助,请参阅下面文档,了解如何充分利用与 Performance Support 的互动:

Document 210014.1 How to Log a Good Performance Service Request
Document 166650.1 Working Effectively With Global Customer Support
Document 1198303.1 Support Policy for Generic SQL Performance Issues

监控潜在问题

使用 ADDM 检查结果作为调查的开始

默认情况下,数据库会收集各种性能信息,以用于确定性能问题的原因和解决方案。诊断包和优化包的引入带来了一种内置的诊断和建议引擎(Automatic Database Diagnostics Monitor,ADDM),提供了自动优化功能(SQL Tuning Advisor),并有助于在生产实施前验证性能变化 (SQL Performance Analyzer)。通过创建基线和使用这些工具,您可以将当前性能与已知的良好性能进行比较。

例如,运行 ADDM 报告可以提供有关潜在问题的信息,以及处理问题的建议。此外,Enterprise Manager Cloud Control 12c 的数据库主页还提供了 ADDM 检查结果的摘要,您可以按照这些结果执行相应的操作,以避免发生严重的情况。以下图片说明了该信息的位置:

EM Database Home Page showing ADDM Findings

下面的 Oracle Open World 演示提供了此工具套件的功能示例,名为“Tuning Toolkit for Advanced DBAs”,其中提供了 SQL 性能分析器的使用和案例研究。有关 SQL 性能分析器的进一步说明,请参阅下列手册:

Oracle Database Online Documentation 12c Release 1 (12.1)
Database Administration
Database Testing Guide
Chapter 2 Introduction to SQL Performance Analyzer
http://docs.oracle.com/database/121/RATUG/spa_intro.htm#RATUG166

请注意,使用这些功能需要 Diagnostics Pack、Tuning Pack 和 Real Application Pack 许可证。有关更多详细信息,请参阅:

Document 1361401.1 Where to Find Information About Performance Related Features
利用实时 SQL 监控功能

实时 SQL 监控功能使您能够监控 SQL 语句在执行时的性能,默认情况下,当 SQL 语句并行运行时,或者该语句在单次执行中消耗了至少 5 秒钟的 CPU 或 I/O 时间时,该功能会自动启动。Enterprise Manager 可以显示最近一小时监控的结果,这个可以用来检查是否有 SQL 突变或者找到消耗资源高的语句并加以改善。

Real Time SQL Monitor Example

有关更多信息,请参阅:

Oracle Database Online Documentation 12c Release 1 (12.1)
Database Administration
Database SQL Tuning Guide
Chapter 1 Introduction to SQL Tuning
Section 1.4.2.2.2 Real-Time SQL Monitoring and Real-Time Database Operations
http://docs.oracle.com/database/121/TGSQL/tgsql_intro.htm#TGSQL127

请注意,SQL 监控是 Oracle Database Tuning Pack 的一项功能。请参阅:

Oracle Database Online Documentation 12c Release 1 (12.1)
Database Licensing Information
Chapter 2 Options and Packs
Oracle Diagnostics Pack
http://docs.oracle.com/database/121/DBLIC/options.htm#DBLIC165
Oracle Tuning Pack
http://docs.oracle.com/database/121/DBLIC/options.htm#DBLIC170

或者,您可以使用之前创建的基线进行手动分析,并设置阈值等,从而根据此基线位置的变化来提醒自己可能要发生的潜在问题。请参阅:

Oracle Database Online Documentation 12c Release 1 (12.1)
Database Administration
Database 2 Day + Performance Tuning Guide
Chapter 9 Resolving Performance Degradation Over Time
Comparing Current System Performance to a Baseline Period
http://docs.oracle.com/database/121/TDPPT/tdppt_degrade.htm#TDPPT525

 

有用参考

一旦确定了潜在问题,就可以使用相应的可用资源来阻止并解决问题。以下部分将介绍一些这类资源。有关数据库性能常见问题 (FAQ)、与性能相关的功能的信息或涉及单个 SQL 语句的问题,请参阅:

Document 1360119.1 FAQ: Database Performance Frequently Asked Questions
Document 1361401.1 Where to Find Information About Performance Related Features

Document 199083.1 Master Document SQL Query Performance Overview
Document 402983.1 Master Note: Database Performance Overview
Document 398838.1 FAQ: SQL Query Performance - Frequently Asked Questions

故障排除指南

有许多故障排除指南可帮助解决各种问题:

Document 1543445.2 Troubleshooting Assistant: Troubleshooting Performance Issues
Document 1542678.2 Troubleshooting Assistant: SQL Performance Issues

Document 1528847.1 Troubleshooting: Avoiding and Resolving Database Performance Related Issues After Upgrade
Document 60.1 Troubleshooting Assistant: Oracle Database ORA-00060 Errors on Single Instance (Non-RAC) Diagnosing Using Deadlock Graphs in ORA-00060 Trace Files

有关性能的网上研讨会

与“性能”相关的一系列网上研讨会,包括 SQLHC、SQLTXPLAIN 和 OSWBB 之类的主题,请参阅:

Document 1597373.1 Archive of Database Performance Related Webcasts

“性能和可扩展性”白皮书及文档

“性能和可扩展性”白皮书及文档:

包含有用案例研究的 Oracle Open World 演示:

Document 1380043.1 Selected Performance Related Seminars from Oracle Openworld

“优化和性能”主要文档的链接

Document 1195363.1 Database Performance and SQL Tuning Documentation on OTN

社区:数据库优化与 SQL 调优

已经为 My Oracle Support (MOS) 用户建立了一些由 Oracle 管理的社区。这些社区的目的是提供一个供用户交换数据库调优和 SQL 调优的知识和概念的平台。可通过以下文章找到社区:

Document 1383594.1 Collaborate With MOS Database Tuning Community Members
Document 1551797.1 Collaborate With MOS SQL Performance Community Members

参考

NOTE:1477599.1 - Best Practices: Proactive Data Collection for Performance Issues
NOTE:250655.1 - How to use the Automatic Database Diagnostic Monitor
NOTE:210014.1 - How to Log a Good Performance Service Request
NOTE:166650.1 - Working Effectively With Oracle Support - Best Practices
NOTE:1195363.1 - Database Performance and SQL Tuning Documentation on OTN
NOTE:1383594.1 - Collaborate with MOS Database Tuning Community Members
NOTE:167086.1 - Avoiding Upgrade Related Query Issues
NOTE:1464274.1 - Master Note for Real Application Testing Option
NOTE:1226841.1 - How To: Gather Statistics for the Cost Based Optimizer
NOTE:1490798.1 - AWR Reporting - Licensing Requirements Clarification
NOTE:1361401.1 - Where to Find Information About Performance Related Features
NOTE:1456176.1 - Oracle Database Advisor Webcast Schedule and Archive recordings
NOTE:1377446.1 - * Troubleshooting Performance Issues
NOTE:1360119.1 - * FAQ: Database Performance Frequently Asked Questions
NOTE:1380043.1 - Selected Performance Related Seminars from Oracle Openworld (OOW)
NOTE:402983.1 - * Master Note: Database Performance Overview
NOTE:1392633.1 - Things to Consider Before Upgrading to 11.2.0.3 to Avoid Poor Performance or Wrong Results
NOTE:1359841.1 - Master Note: Plan Stability Features (Including SQL Plan Management (SPM))
NOTE:398838.1 - FAQ: SQL Query Performance - Frequently Asked Questions
NOTE:1320966.1 - Things to Consider Before Upgrading to 11.2.0.2 to Avoid Poor Performance or Wrong Results
请使用浏览器的分享功能分享到微信等