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

Oracle的SQL调化健康检查脚本介绍

DBA巫师 2024-03-25
488

Oracle的SQL Health-Check (SQLHC) 脚本是一个非常有用的工具,它可以帮助数据库管理员(DBAs)分析和优化SQL查询的性能。以下是SQLHC脚本执行的主要健康检查方面的概述:

  1. 与SQL语句相关的对象的统计信息:

    • 这部分检查与SQL语句直接相关的数据库对象(例如表和索引)的统计信息。

    • 检查对象的统计信息是否最新,因为过时的统计信息可能导致优化器选择非最佳的执行计划。

  2. CBO参数:

    • CBO (Cost-Based Optimizer) 参数对优化器选择执行计划有很大影响。

    • SQLHC会检查与优化器行为相关的初始化参数,例如optimizer_mode
      optimizer_index_cost_adj
      optimizer_index_caching
      等,以确定它们是否设置得当。

  3. CBO系统统计信息:

    • 系统统计信息提供了系统的运行时环境信息,诸如CPU速度和IO性能。

    • 这些信息帮助CBO更准确地估算操作代价。

  4. CBO数据字典统计信息:

    • 数据字典统计信息是关于数据库本身结构的元数据统计信息。

    • 检查这些统计信息可以帮助了解数据字典对象的分布和使用情况,这对SQL执行计划可能有影响。

  5. CBO动态性能视图统计信息:

    • 动态性能视图(如V$视图)提供实时的系统性能信息。

    • SQLHC检查这些视图中的统计信息,来分析当前数据库活动和历史性能数据。

当你运行SQLHC脚本时,它会收集这些方面的信息,并生成一个报告。报告通常包含以下内容:

  • 执行计划分析

  • SQL语句的执行历史

  • 相关初始化参数设置

  • 对象统计信息

  • 系统和会话级别的性能信息

  • 等待事件和瓶颈分析

使用SQLHC的好处在于它不需要在目标数据库中安装额外的工具或代码。你只需要提供需要分析的SQL语句的标识符(比如SQL_ID),然后脚本会执行必要的查询和检查,并生成报告。这使得SQLHC成为在生产环境中快速诊断和分析性能问题的有力工具。

对于更深入的分析,SQLT(SQLTXPLAIN)是一个更全面的工具,它不仅包含了SQLHC的所有功能,还增加了更多的数据收集和分析功能。但不同于SQLHC,SQLT需要在数据库中安装附加的代码。在使用SQLT之前,通常建议先运行SQLHC以获得初步的性能分析。

安装与使用

从MOS(My Oracle Support)的Doc ID 1366133.1中下载“sqlhc.zip”文件到数据库服务器,也可以通过关注公众号并加作者微信来寻求安装文件。

运行该脚本请按照以下步骤操作:

  • 使用SYS账户或具有访问数据字典视图权限的用户连接到SQL*Plus。

  • 登录到相应的容器,否则将无法访问对象。

  • 运行“sqlhc.sql”脚本。在此过程中,需要输入两个必需的参数:

    • Oracle Pack许可证(调优、诊断或无)[T|D|N]。虽然SQLHC无需许可证且免费,但如果已经安装了诊断包或调优包,SQLHC可以使用AWR报告中的信息。因此,它会询问您的服务器是否已经获得了诊断包或调优包的授权。如果有,则输入“T”。

    • 要分析的SQL的有效SQL_ID。请勿输入PL/SQL包的SQL_ID,因为虽然这样不会触发错误,但也不会产生有用的结果。例如:

SQL>@sqlhc/sqlhc.sql T 5mz8u3b34u9gw

该脚本执行完毕后,会在执行的同一目录中生成一个ZIP文件。


文章转载自DBA巫师,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论