介绍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文件的样本:

相关推荐
小云数据库服务专线18 分钟前
GaussDB数据库架构师修炼(十六) 如何选择磁盘
数据库·数据库架构·gaussdb
码出财富1 小时前
SQL语法大全指南
数据库·mysql·oracle
异世界贤狼转生码农3 小时前
MongoDB Windows 系统实战手册:从配置到数据处理入门
数据库·mongodb
QuZhengRong3 小时前
【数据库】Navicat 导入 Excel 数据乱码问题的解决方法
android·数据库·excel
码农阿豪3 小时前
Windows从零到一安装KingbaseES数据库及使用ksql工具连接全指南
数据库·windows
时序数据说9 小时前
时序数据库市场前景分析
大数据·数据库·物联网·开源·时序数据库
听雪楼主.12 小时前
Oracle Undo Tablespace 使用率暴涨案例分析
数据库·oracle·架构
我科绝伦(Huanhuan Zhou)12 小时前
KINGBASE集群日常维护管理命令总结
数据库·database
妖灵翎幺13 小时前
Java应届生求职八股(2)---Mysql篇
数据库·mysql
HMBBLOVEPDX13 小时前
MySQL的事务日志:
数据库·mysql