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

2024年 3月 15日 107.0k 0

01

概述

Oracle提供了一个SQL调优健康检查脚本(SQLHC),用于检查需要优化的SQL的运行环境,生成报告以便帮助DBA找到SQL性能不佳的原因。SQLHC是SQLT的一个子集(我后续的文章会介绍SQLT),但SQLHC与SQLT不同,SQLHC不需要在数据库中安装任何代码即可完成收集信息的工作。这个脚本执行下面几个方面的健康检查:

  • 与SQL语句相关的对象的统计信息

  • CBO参数

  • CBO系统统计信息

  • CBO数据字典统计信息

  • CBO动态性能视图统计信息

关于号主,姚远:

  • Oracle ACE(Oracle和MySQL数据库方向)

  • 华为云最有价值专家

  • 《MySQL 8.0运维与优化》的作者

  • 拥有 Oracle 10g、12c和19c OCM等数十项数据库认证

  • 曾任IBM公司数据库部门经理

  • 20+年DBA经验,服务2万+客户

  • 精通C和Java,发明两项计算机专利

02

安装过程

从MOS(My Oracle Support )的Doc ID 11366133.1中下载“sqlhc.zip”文件到数据库服务器(如果下载不了,找我要,微信在文章后面),然后将内容解压缩到适当的目录中:

    $ unzip sqlhc.zip
    Archive: sqlhc.zip
    creating: sqlhc/
    inflating: sqlhc/sqldx.sql
    inflating: sqlhc/sqlhc.sql
    inflating: sqlhc/sqlhc_pxhcdr.sql
    inflating: sqlhc/sqlhc_pxhcdr_null.sql
    inflating: sqlhc/sqlhc_sta.sql
    inflating: sqlhc/sqlhc_tcb.sql
    inflating: sqlhc/util_planx.sql
    creating: sqlhc/utl/
    inflating: sqlhc/utl/bde_chk_cbo.sql
    inflating: sqlhc/utl/coe_gen_sql_patch.sql
    inflating: sqlhc/utl/coe_gen_sql_profile.sql
    inflating: sqlhc/utl/coe_load_sql_baseline.sql
    inflating: sqlhc/utl/coe_load_sql_profile.sql
    inflating: sqlhc/utl/coe_xfr_sql_profile.sql
    inflating: sqlhc/utl/coe_xfr_sql_profile_remote.sql
    inflating: sqlhc/utl/flush_cursor.sql
    creating: sqlhc/utl/mon/
    inflating: sqlhc/utl/mon/0_mon_readme.txt
    inflating: sqlhc/utl/mon/1_mon_repository.sql
    inflating: sqlhc/utl/mon/2_mon_capture.sql
    inflating: sqlhc/utl/mon/3_mon_reports.sql
    inflating: sqlhc/utl/mvhcdr.sql
    inflating: sqlhc/utl/planx.sql
    inflating: sqlhc/utl/profiler.sql
    inflating: sqlhc/utl/pxhcdr.sql
    inflating: sqlhc/utl/readme.txt
    creating: sqlhc/utl/spm/
    inflating: sqlhc/utl/spm/alter_spb.sql
    inflating: sqlhc/utl/spm/coe_load_sql_baseline.sql
    inflating: sqlhc/utl/spm/create_spb_from_awr.sql
    inflating: sqlhc/utl/spm/create_spb_from_cur.sql
    inflating: sqlhc/utl/spm/create_spb_from_sts.sql
    inflating: sqlhc/utl/spm/create_sts_from_awr.sql
    inflating: sqlhc/utl/spm/create_sts_from_cur.sql
    inflating: sqlhc/utl/spm/display_awr.sql
    inflating: sqlhc/utl/spm/display_cur.sql
    inflating: sqlhc/utl/spm/display_spb.sql
    inflating: sqlhc/utl/spm/display_sts.sql
    inflating: sqlhc/utl/spm/drop_cur.sql
    inflating: sqlhc/utl/spm/drop_spb.sql
    inflating: sqlhc/utl/spm/drop_sts.sql
    inflating: sqlhc/utl/spm/evolve_spb.sql
    inflating: sqlhc/utl/spm/imp_and_unpack_spb.sql
    inflating: sqlhc/utl/spm/imp_and_unpack_sts.sql
    inflating: sqlhc/utl/spm/pack_and_exp_spb.sql
    inflating: sqlhc/utl/spm/pack_and_exp_sts.sql
    inflating: sqlhc/utl/spm/readme.txt

    03

    运行SQLHC脚本

    要运行该脚本,请执行以下步骤:

    • 使用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文件。

        $ ll
        total 208
        -rw-r--r--. 1 oracle oinstall 212247 Mar 12 17:52 sqlhc_20240312_1751_5mz8u3b34u9gw.zip
        $ unzip sqlhc_20240312_1751_5mz8u3b34u9gw.zip
        Archive: sqlhc_20240312_1751_5mz8u3b34u9gw.zip
        inflating: sqlhc_20240312_1751_5mz8u3b34u9gw_1_health_check.html
        inflating: sqlhc_20240312_1751_5mz8u3b34u9gw_2_diagnostics.html
        inflating: sqlhc_20240312_1751_5mz8u3b34u9gw_3_execution_plans.html
        inflating: sqlhc_20240312_1751_5mz8u3b34u9gw_4_sql_detail.html
        extracting: sqlhc_20240312_1751_5mz8u3b34u9gw_9_log.zip
        inflating: sqlhc_20240312_1751_5mz8u3b34u9gw_10_sql_tuning_advisor.out
        inflating: sqlhc_20240312_1751_5mz8u3b34u9gw_6_10053_trace_from_cursor.trc
        extracting: sqlhc_20240312_1751_5mz8u3b34u9gw_11_tcb.zip
        extracting: sqlhc_20240312_1751_5mz8u3b34u9gw_8_sqldx.zip


        下面是生成的HTML文件的样本:

        欢迎关注我的公众号,一起学习数据库技术👇

        欢迎加我的微信,拉你进数据库微信群👇

        推荐文章👇

        从国内外IT人的差异谈如何破除35岁魔咒

        试看号主的拙作《MySQL 8.0运维与优化》(清华大学出版社)

        托业890分的Oracle ACE为您翻译国际大佬的雄文(合集)

        晒一下号主的19个Oracle认证(OCP+OCM),欢迎PK

        相关文章

        Oracle如何使用授予和撤销权限的语法和示例
        Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
        下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
        社区版oceanbase安装
        Oracle 导出CSV工具-sqluldr2
        ETL数据集成丨快速将MySQL数据迁移至Doris数据库

        发布评论