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

概述

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

这个脚本执行下面几个方面的健康检查:

  • 与SQL语句相关的对象的统计信息
  • CBO参数
  • CBO系统统计信息
  • CBO数据字典统计信息
  • CBO动态性能视图统计信息

安装过程

从MOS(My Oracle Support )的Doc ID 1366133.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

运行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文件的样本:

相关推荐
计算机安禾1 小时前
【数据库系统原理】第19篇:计算机存储层次结构与数据库文件的物理组织
数据库·oracle
JAVA面经实录9172 小时前
操作系统面试题
java·服务器·数据库·计算机网络·面试
摇滚侠2 小时前
mariadb-libs 被 mysql-community-libs-5.7.28-1.el7.x86_64 取代
数据库·mysql·mariadb
DIY源码阁3 小时前
JavaSwing饮品管理系统 - MySQL版
java·数据库·mysql·eclipse
专注搞钱3 小时前
GPT-4o写设备Recipe:从3小时到10分钟
数据库·人工智能·gpt·半导体
东风破1374 小时前
达梦数据库实战:备份恢复与数据迁移全攻略(实例初始化、服务注册、路径迁移)
数据库·chrome
SelectDB技术团队4 小时前
2026 SelectDB AI 产品发布会:Agent Native 数据基础设施能力全景发布
数据库·人工智能·agent·apache doris·selectdb
爱吃羊的老虎4 小时前
【数据库】模块一:数据库基础与关系代数
数据库
dishugj5 小时前
iSCSI + Multipath + ASM:Oracle RAC 共享存储技术链详解
数据库·oracle
yoothey5 小时前
MySQL事务机制解析 - 面试高分知识点
数据库·mysql·面试