暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

主动避免数据库和查询相关的性能问题

原创 xiangjingtao 2020-12-25
556

在大多数情况下,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

  1. 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 包中的任何程序时无需其他许可证。请参阅:
https://blogs.oracle.com/optimizer/entry/does_the_use_of_sql
升级
升级会引起软件和硬件使用方面的重大变化。在进行任何升级之前,建议做好性能基线的准备工作,从而使系统性能至少不会差于先前的水平。此外,我们建议使用 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 检查结果的摘要,您可以按照这些结果执行相应的操作,以避免发生严重的情况。以下图片说明了该信息的位置:

下面的 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 突变或者找到消耗资源高的语句并加以改善。

有关更多信息,请参阅:
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

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论