-
SQLT 概览
-
安全模式
-
安装
SQLT
-
卸载
SQLT
-
升级
SQLT
-
常见问题
-
上传SQLT文件给Oracle技术支持
|
|
主要方法
-
XTRACT
-
XECUTE
-
XTRXEC
-
XPLAIN
-
XTRSBY
-
XPREXT
-
XPREXC
|
|
特殊方法
-
COMPARE
-
TRCANLZR
-
TRCAXTR
-
TRCASPLIT
-
XTRSET
|
|
高级方法和模块
-
PROFILE
-
XGRAM
-
XPLORE
-
XHUME
|
SQLT
概览
SQLTXPLAIN
,也称为
SQLT
,是 Oracle Server Technologies Center of Expertise - ST CoE 提供的一款工具。
SQLT
主要方法 通过输入的一个 SQL 语句,可输出一组诊断文件。这些文件通常用于诊断性能不佳或者产生错误结果的 SQL 语句。
对于sql语句的调优,SQLT 需要您有一些专业的知识来进行分析。对于许多问题来说我们推荐首先使用SQL Health Check 来检查您的SQL,假如不能解决再尝试使用SQLT。SQLHC的详细介绍请看:
Document 1366133.1 SQL Tuning Health-Check Script (SQLHC)
一旦
安装,便可通过向
SQLT
传递一个包含 SQL 语句脚本(包括绑定变量)的文本文件或者其
SQL_ID
,对 SQL 语句进行分析。SQL_ID 可在 AWR 和 ASH 的报告中找到,HASH_VALUE 出现在 SQL_TRACE 的输出中(SQL 文本的上面以"hv="的标志来识别)。您也能在 V$SQL 视图中发现这些字段。请参照接下来的文档:
Document 1627387.1 How to Determine the SQL_ID for a SQL Statement
SQLT
主要方法 会连接到数据库,收集执行计划、基于成本的 Optimizer CBO 统计信息、Schema 对象元数据、性能统计信息、配置参数和会影响正在分析的 SQL 性能的其他元素。这些方法会对有问题的SQL_ID产生一揽子输出,包括一个html格式的"main"报表。关于如何使用"main"报表,您可以参考下面的文档:
Document 1922234.1 SQLT Main Report: Usage Suggestions
SQLT
可以使用 Oracle Diagnostic 和(或)Oracle Tuning Packs,前提是您的数据库需要具有这两个软件包的许可证。这两个软件包向
SQLT
工具提供了增强的功能。在
SQLT
安装期间,您可以指定是否其中一个软件包在您的数据库被授权使用。如果一个都没有,
SQLT
仍会提供一些基本信息,用于最开始的 SQL 性能诊断。
安全模式
SQLT
在
安装的过程中会创建两个用户和一个角色。这些用户和角色的名字都是固定的。
SQLT
repository 是由用户
SQLTXPLAIN
管理的。
SQLT
的使用者每次使用
SQLT
提供的
主要方法时都要提供
SQLTXPLAIN
的密码。
SQLTXPLAIN
用户被赋予了以下系统权限:
- CREATE SESSION
- CREATE TABLE
SQLT
包含的 PL/SQL 程序包以及视图都是由用户
SQLTXADMIN
管理的。
SQLTXADMIN
用户处于锁定状态并且由一个随机产生的密码保护。
SQLTXADMIN
用户被赋予了以下系统权限:
- ADMINISTER SQL MANAGEMENT OBJECT
- ADMINISTER SQL TUNING SET
- ADVISOR
- ALTER SESSION
- ANALYZE ANY
- SELECT ANY DICTIONARY
- SELECT_CATALOG_ROLE
所有
SQLT
的使用者在使用
SQLT
提供的
主要方法之前必须被赋予
SQLT_USER_ROLE
这个角色。
SQLT_USER_ROLE
角色被赋予了以下系统权限:
- ADVISOR
- SELECT_CATALOG_ROLE
12c 在缺省情况下 SYS 用户不能作为
SQLT
的用户,因为 PL/SQL 安全模型上改变的原因。
为了处理这个改变,
SQLTADMIN
需要在 SYS 上被授予
INHERIT PRIVILEGES
权限。
GRANT INHERIT PRIVILEGES ON USER SYS TO SQLTXADMIN
更多详细的内容请参见 Oracle? Database PL/SQL Language Reference 12c Release 1 (12.1) - Invoker's Rights and Definer's Rights (AUTHID Property) and in Oracle? Database Security Guide 12c Release 1 (12.1) - Managing Security for Definer's Rights and Invoker's Rights
安装
SQLT
SQLT
安装在其自己的 schema
SQLTXPLAIN
和
SQLTXADMIN
下。它不会将任何对象安装到应用程序 schema 中。您可以在 UNIX、Linux 或 Windows 平台,Oracle DB 10.2、11.1、11.2 及更高版本中安装此版本的 SQLT。对于所有“应用于:”的信息,请参照文档215187.1。
安装步骤:
-
卸载先前版(可选)。
该可选步骤将删除所有废弃的
SQLTXPLAIN/SQLTXADMIN
schema 对象,并为全新安装准备环境。如果要保留 SQLT Repository 的现有内容,请跳过此步骤(推荐)。
# cd sqlt/install
# sqlplus / as sysdba
SQL> START sqdrop.sql
- 以
SYS
身份连接数据库并执行安装脚本
sqlt/install/sqcreate.sql
。
# cd sqlt/install
# sqlplus / as sysdba
SQL> START sqcreate.sql
在安装期间,系统将要求您输入以下参数值:
- 可选连接标识符(当安装在一个可插拔数据库上时是必须的)
在一些受限访问的系统中,您可能需要指定连接标识符,例如
@PROD
。如果不需要连接标识符,则不要输入任何数据,只需单击回车键。什么也不键入是最常使用的安装方法。
当安装在一个可插拔数据库上时连接标识符是必须提供的。
-
SQLTXPLAIN
密码。
在大多数系统中区分大小写。
-
SQLTXPLAIN
默认表空间。
从可用的永久表空间列表中,选择
SQLT
Repository 的
SQLTXPLAIN
应使用的表空间。它必须具有 50MB 以上的可用空间。
-
SQLTXPLAIN
临时表空间。
从可用的临时表空间列表中,选择
SQLTXPLAIN
临时操作和临时对象应使用的表空间。
- 可选应用程序用户。
这是发出要分析 SQL 语句的用户。例如,在 EBS 系统上,指定为
APPS
;在 Siebel 上,应指定为 SIEBEL;在 People Soft 上,应指定为
SYSADM
。系统不会要求您输入此用户的密码。也可以在安装该工具后添加其他的
SQLT
用户,方法为:授予他们角色
SQLT_USER_ROLE
。
- 授权的 Oracle Pack。(T,D 或 N)
可以指定
T
表示 Oracle Tuning;
D
表示 Oracle Diagnostic,或
N
表示都没有。如果选择
T
或
D
,SQLT 可以在它生成的诊断文件中包含授权的内容。默认值为
T
。如果选择
N
,SQLT 将只安装限定的功能。
如果需要静默安装,可以使用下面三个选项来传递所有 6 个安装参数:
- 在文件中。
首先使用一个脚本进行值的预先定义,类似于示例脚本
sqlt/install/sqdefparams.sql
。然后使用
sqlt/install/sqcsilent.sql
,而不是
sqlt/install/sqcreate.sql
。
# cd sqlt/install
# sqlplus / as sysdba
SQL> START sqdefparams.sql
SQL> START sqcsilent.sql
- 命令行。
执行
sqlt/install/sqcsilent2.sql
,而不是
sqlt/install/sqcreate.sql
。前者以内嵌形式输入 6 个安装参数。
# cd sqlt/install
# sqlplus / as sysdba
SQL> START sqcsilent2.sql '' sqltxplain USERS TEMP '' T
- 在 Oracle 内部安装。
执行
sqlt/install/sqcinternal.sql
,而不是
sqlt/install/sqcreate.sql
。前者首先执行
sqlt/install/sqdefparams.sql
,然后是
sqlt/install/sqcsilent.sql
。
# cd sqlt/install
# sqlplus / as sysdba
SQL> START sqcinternal.sql
假如您需要更多关于安装问题的帮助,您能从下面的论坛得到帮助:
SQLTXPLAIN: SQLT Installation Issues
卸载
SQLT
卸载
SQLT
会同时移除
SQLT
Repository 以及所有
SQLTXPLAIN/SQLTXADMIN
schema 对象。另外还会删除
SQLTXPLAIN
和
SQLTXADMIN
用户。要卸载
SQLT
,只需以 SYS 身份连接,执行
sqlt/install/sqdrop.sql
。
# cd sqlt/install
# sqlplus / as sysdba
SQL> START sqdrop.sql
升级
SQLT
如果在系统中已安装先前版本的
SQLT
,则可以将
SQLT
升级到其最新版本,同时部分保留现有
SQLT
Repository 的一些对象。然后可以使用新迁移的
SQLT
Repository 来恢复 CBO 统计信息,或者在
SQLT
的新旧执行程序之间执行
COMPARE。
要升级
SQLT
,只需执行
安装,而不用执行可选
卸载步骤。
如果升级失败,可能是先前的
SQLT
版本太旧而无法升级。在这种情况下,请先继续
卸载
SQLT
,然后执行全新
安装。