什么是Oracle的SQLT工具和SQLHC工具

0    89    1

Tags:

👉 本文共约1850个字,系统预计阅读时间或需7分钟。

SQLT简介

SQLT(SQLTXPLAIN)是Oracle Server Technologies Center of Expertise-ST CoE提供的一款工具,Mos文档1677588.1和1526574.1有非常详细的介绍。SQLT可以通过输入一个SQL语句然后输出一组诊断文件。这些文件通常用于诊断性能不佳或者产生错误结果的SQL语句。对于SQL语句的调优,SQLT需要DBA有一些专业的知识来分析诊断文件。对于许多问题来说推荐首先使用SQLHC(SQL Health Check,SQL性能健康检查脚本)来检查SQL,假如SQLHC不能解决再尝试使用SQLT。SQLT工具本身是免费的,不需要任何许可证(License)。

SQLT主要方法是连接到数据库,收集执行计划、CBO统计信息、Schema对象元数据、性能统计信息、配置参数和会影响正在分析的SQL性能的其它因素。这些方法会对有问题的SQL_ID产生一系列输出,包括一个HTML格式的“main”报表。

SQLT可以安装在UNIX、Linux或Windows平台,数据库版本支持Oracle 10.2及更高版本。详细安装过程可参考我的博客( http://blog.itpub.net/26736162/viewspace-2141558/ )。SQLT在安装的过程中会创建两个用户(SQLTXPLAIN和SQLTXADMIN)和一个角色(SQLT_USER_ROLE)。在使用SQLT提供的主要方法之前,须确保SQLT已经被正确安装,并且使用SQLT的用户被赋予了SQLT_USER_ROLE角色。如果在安装SQLT的过程中绕过了SQL*Net(即没有在安装期间没有指定连接符),那么在从远程客户端执行任何SQLT主要方法前,需要手动设置连接符参数。例如,连接使用“sqlplus lhr/lhr@orclasm”,那么在执行SQLT脚本之前就需要执行:“EXEC sqltxadmin.sqlt$a.set_sess_param('connect_identifier','@orclasm');”。

对于一个SQL语句,SQLT工具提供了7种主要方法来生成诊断详细信息:XTRACT,XECUTE,XTRXEC,XTRSBY,XPLAIN,XPREXT和XPREXC。其中,除了XPLAIN之外,其它方法都会处理绑定变量,并且会做Bind Peeking(绑定变量窥探),但是XPLAIN不会。这是因为XPLAIN是基于EXPLAIN PLAN FOR命令执行的,该命令不做Bind Peeking。因此,如果SQL语句含有绑定变量,那么请避免使用XPLAIN。除了XPLAIN的Bind Peeking限制外,所有的这7种主要方法都可以提供足够的诊断详细信息,对性能较差或产生错误结果集的SQL进行初步评估。如果该SQL仍位于内存中或者AWR(Automatic Workload Repository)中,那么推荐使用XTRACT或XTRXEC,其它情况请使用XECUTE。对于DG(Data Guard)或备用只读数据库,请使用XTRSBY。仅当其它方法都不可行时,再考虑使用XPLAIN。XPREXT和XPREXC是类似于XTRACT和XECUTE,但为了提高SQLT的性能它们禁了一些SQLT的特性。

XTRACT方法的使用如下所示:

其它方法类似,具体使用过程请参考我的博客。

SQLHC简介

对于SQLHC(SQL Health Check,SQL性能健康检查脚本)工具,Mos文档1626277.1有非常详细的介绍。SQLHC是Oracle Server Technologies Center of Expertise开发的一个工具。SQLHC用于检查单条SQL语句运行的环境,包括基于成本的优化器(CBO)的统计数据,用户对象的元数据定义,配置参数和其它可能影响到目标SQL性能的因素。SQLHC和SQLT工具一样,本身都是免费的,不需要任何许可证(License)。当对某一个SQL_ID运行SQLHC后,该脚本会生成一系列针对该SQL语句健康检查的一份HTML报告。

SQLHC会检查的内容包括:

① 待分析的单条SQL涉及的用户对象的CBO统计信息;

② CBO参数;

③ CBO系统统计信息;

④ CBO数据字典统计信息;

⑤ CBO固定对象(Fixed-Objects)统计信息。

本人提供Oracle、MySQL、PG等数据库的培训和考证业务,私聊QQ646634621或微信db_bao,谢谢!

SQLHC运行时不会在数据库中创建任何对象(“数据库中不留足迹”),它只是对已有的对象提供报告和建议,可以确保它在所有系统上运行。SQLHC的脚本需要以SYS、DBA或者能访问数据字典视图的用户通过SQL*Plus连接运行。SQLHC一共包含3个脚本,分别为sqlhc.sql、sqldx.sql和sqlhcxec.sql,其中sqlhc.sql里边会调用sqldx.sql脚本。sqlhcxec.sql是单独执行的,不过该脚本需要输入一个脚本文件作为入参,而且该脚本文件可以包含绑定变量,但是必须要有“/* ^^unique_id */”注释,可以包含其它的Hint。sqlhc.sql脚本的使用如下所示:

报告文件位置

SQLT和SQLHC脚本生成的报告文件都在进入SQL*Plus之前的OS的当前目录下。

参考

有关SQLT和SQLHC的更多内容可以参考我的BLOG:

http://blog.itpub.net/26736162/viewspace-2141558/

http://blog.itpub.net/26736162/viewspace-2141559/

https://mp.weixin.qq.com/s/2nfUvF8zGMQ3IK7nkXAaiQ

标签:

头像

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

2 − 1 =

 

嘿,我是小麦,需要帮助随时找我哦
  • 18509239930
  • 个人微信

  • 麦老师QQ聊天
  • 个人邮箱
  • 点击加入QQ群
  • 个人微店

  • 回到顶部
返回顶部