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

简介: 什么是Oracle的SQLT工具和SQLHC工具

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方法的使用如下所示:

sqlplus lhr/lhr@orclasm

EXEC sqltxadmin.sqlt$a.set_sess_param('connect_identifier','@orclasm');

START sqltxtract.sql SQL_ID sqltxplain_password

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

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)统计信息。

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脚本的使用如下所示:

sqlplus / as sysdba
START sqlhc.sql T SQL_ID

报告文件位置

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

目录
相关文章
|
6月前
|
SQL Oracle 关系型数据库
关系型数据库Oracle备份工具
【7月更文挑战第19天】
100 4
|
6月前
|
Oracle 关系型数据库 Java
Oracle数据库导入工具IMP详解与用法
Oracle数据库导入工具IMP详解与用法
|
7月前
|
SQL Oracle 关系型数据库
探索 Linux 命令 `db_archive`:Oracle 数据库归档日志的工具
探索 Linux 中的 `db_archive`,实际与 Oracle 数据库归档日志管理相关。在 Oracle 中,归档日志用于恢复,当在线重做日志满时自动归档。管理员可使用 SQL*Plus 查看归档模式,通过 `RMAN` 进行备份和恢复操作。管理归档日志需谨慎,避免数据丢失。了解归档管理对 Oracle 管理员至关重要,确保故障时能快速恢复数据库。
|
7月前
|
Oracle 关系型数据库 Java
Oracle数据库导入工具IMP详解与用法
Oracle数据库导入工具IMP详解与用法
|
8月前
|
Oracle 关系型数据库
Oracle 管理诊断数据工具ADRCI
Oracle 管理诊断数据工具ADRCI
80 2
|
SQL Oracle 关系型数据库
Oracle常用工具
Oracle常用工具
|
Oracle 关系型数据库
Oracle自带adrci工具清理告警日志
Oracle自带adrci工具清理告警日志
676 0
Oracle自带adrci工具清理告警日志
|
Oracle 关系型数据库 数据库连接
Windows系统安装配置Oracle数据库连接工具PLSQL
Windows系统安装配置Oracle数据库连接工具PLSQL
155 0
|
SQL Oracle 关系型数据库
Oracle连接工具PLSQL登录时提示初始化失败,无法锁定OCI.dll错误解决
Oracle连接工具PLSQL登录时提示初始化失败,无法锁定OCI.dll错误解决
634 0
|
SQL Oracle 关系型数据库
Oracle数据库连接工具PLSQL/Navicat安装与连接环境配置
Oracle数据库连接工具PLSQL/Navicat安装与连接环境配置
121 0