Oracle SQLT
Amazon RDS 通过使用 SQLT 选项来支持 Oracle SQLTXPLAIN (SQLT)。您可对任一版本的 Oracle Database 19c 及更高版本使用 SQLT。
Oracle EXPLAIN PLAN
语句可以确定 SQL 语句的执行计划。它可以验证 Oracle 优化程序是否选择某个执行计划,例如嵌套循环联接。它还可以帮助您了解优化程序的决定,例如为什么选择嵌套循环联接而不是哈希联接。所以 EXPLAIN PLAN
可帮助您了解该语句的效果。
SQLT 是一个生成报告的 Oracle 实用程序。报告包括对象统计信息、对象元数据、与优化程序相关的初始化参数,以及数据库管理员可用于调整 SQL 语句以获得最佳性能的其他信息。SQLT 会生成一个 HTML 报告,其中包含报表中所有部分的超链接。
与 Automatic Workload Repository 或 Statspack 报告不同,SQLT 适用于单个 SQL 语句。SQLT 是收集、存储和显示性能数据的 SQL、PL/SQL 和 SQL*Plus 文件的集合。
下面是每个 SQLT 版本支持的 Oracle 版本。
SQLT 版本 | Oracle Database 21c | Oracle Database 19c |
---|---|---|
2018-07-25.v1 |
支持 |
支持 |
2018-03-31.v1 |
不支持 |
不支持 |
2016-04-29.v1 |
不支持 |
不支持 |
下载 SQLT 并了解它的使用说明:
登录到 My Oracle Support 账户,然后打开以下文档:
下载 SQLT:文档 215187.1
SQLT 使用说明:文档 1614107.1
有关 SQLT 的常见问题:文档 1454160.1
有关读取 SQLT 输出的信息:文档 1456176.1
主报告解释:文档 1922234.1
Amazon RDS 不支持以下 SQLT 方法:
-
XPLORE
-
XHUME
SQLT 的先决条件
以下是使用 SQLT 的先决条件:
-
您必须删除 SQLT 所需的用户和角色 (如果存在)。
SQLT 选项将在数据库实例上创建以下用户和角色:
SQLTXPLAIN
用户SQLTXADMIN
用户SQLT_USER_ROLE
角色
如果数据库实例具有这些用户或角色中的任意一个,请使用 SQL 客户端登录到数据库实例,并使用以下语句将其删除:
DROP USER SQLTXPLAIN CASCADE; DROP USER SQLTXADMIN CASCADE; DROP ROLE SQLT_USER_ROLE CASCADE;
-
您必须删除 SQLT 所需的表空间 (如果存在)。
SQLT 选项将在数据库实例上创建以下表空间:
RDS_SQLT_TS
RDS_TEMP_SQLT_TS
如果数据库实例有这些表空间,请使用 SQL 客户端登录数据库实例,并将其删除。
SQLT 选项设置
SQLT 可以使用由 Oracle Tuning Pack 和 Oracle Diagnostics Pack 提供的许可功能。Oracle Tuning Pack 包括 SQL Tuning Advisor,Oracle Diagnostics Pack 包括 Automatic Workload Repository。SQLT 设置可允许或禁止从 SQLT 访问这些功能。
Amazon RDS 支持 SQLT 选项的以下设置。
选项设置 | 有效值 | 默认值 | 描述 |
---|---|---|---|
|
|
|
要使用 SQLT 访问的 Oracle 管理包。输入以下值之一:
注意Amazon RDS 不提供这些 Oracle 管理包的许可。如果您指示要使用未包含在数据库实例中的包,则可以对数据库实例使用 SQLT。不过,SQLT 无法访问该包,并且 SQLT 报告不包括该包的数据。例如,如果您指定 |
|
|
|
要安装的 SQLT 版本。 注意对于 Oracle Database 19c 和 21c,唯一受支持的版本是 |
添加 SQLT 选项
下面是将 SQLT 选项添加到数据库实例的一般过程:
创建新的选项组,或者复制或修改现有选项组。
向选项组添加 SQLT 选项。
将选项组与数据库实例相关联。
在添加 SQLT 选项后,一旦激活该选项组,就会激活 SQLT。
将 SQLT 选项添加到数据库实例
-
确定您要使用的选项组。您可以创建新的选项组,或使用现有选项组。如果您想使用现有选项组,请跳到下一步。或者,通过以下设置创建自定义数据库选项组:
-
对于 Engine,请选择要使用的 Oracle 版本。所有版本均支持 SQLT 选项。
-
对于主引擎版本,选择数据库实例的版本。
有关更多信息,请参阅“创建选项组”。
-
-
将 SQLT 选项添加到该选项组。有关添加选项的更多信息,请参阅 将选项添加到选项组。
-
将选项组应用到新的或现有的数据库实例:
-
对于新数据库实例,您可以在启动实例时应用选项组。有关更多信息,请参阅“创建 Amazon RDS 数据库实例”。
-
对于现有数据库实例,您可以通过修改实例并附加新的选项组来应用选项组。有关更多信息,请参阅“修改 Amazon RDS 数据库实例”。
-
-
(可选) 使用 SQLT 选项验证每个数据库实例上的 SQLT 安装。
使用 SQL 客户端以主用户身份连接到数据库实例。
有关使用 SQL 客户端连接到 Oracle 数据库实例的信息,请参阅连接到 RDS for Oracle 数据库实例。
运行以下查询:
SELECT sqltxplain.sqlt$a.get_param('tool_version') sqlt_version FROM DUAL;
查询返回 Amazon RDS 上的 SQLT 选项的当前版本。
12.1.160429
是 Amazon RDS 上可用的 SQLT 版本的一个例子。
更改由 SQLT 选项创建的用户的密码。
使用 SQL 客户端以主用户身份连接到数据库实例。
运行以下 SQL 语句更改
SQLTXADMIN
用户的密码:ALTER USER SQLTXADMIN IDENTIFIED BY
new_password
ACCOUNT UNLOCK;注意
作为安全最佳实践,请指定除此处所示提示以外的密码。
运行以下 SQL 语句更改
SQLTXPLAIN
用户的密码:ALTER USER SQLTXPLAIN IDENTIFIED BY
new_password
ACCOUNT UNLOCK;注意
作为安全最佳实践,请指定除此处所示提示以外的密码。
注意
升级 SQLT 需要卸载 SQLT 的旧版本然后安装新版本。因此,在升级 SQLT 时,所有 SQLT 元数据都可能会丢失。数据库的主要版本升级也会卸载并重新安装 SQLT。主版本升级的示例是从 Oracle Database 19c 升级到 Oracle Database 21c。
使用 SQLT
SQLT 可与 Oracle SQL*Plus 实用程序一起使用。
使用 SQLT
从 My Oracle Support 网站上的文档 215187.1
下载 SQLT .zip 文件。 注意
您无法从 My Oracle Support 网站中下载 SQLT 12.1.160429。Oracle 已弃用该旧版本。
解压缩 SQLT .zip 文件。
从命令提示符处,转到文件系统上的
sqlt/run
目录。从命令提示符处,打开 SQL*Plus,并以主用户身份连接到数据库实例。
有关使用 SQL*Plus 连接到数据库实例的信息,请参阅 连接到 RDS for Oracle 数据库实例。
获取 SQL 语句的 SQL ID:
SELECT SQL_ID FROM V$SQL WHERE SQL_TEXT='
sql_statement
';输出类似于以下内容:
SQL_ID ------------- chvsmttqjzjkn
使用 SQLT 分析 SQL 语句:
START sqltxtract.sql
sql_id
sqltxplain_user_password
例如,对于 SQL ID
chvsmttqjzjkn
,输入以下内容:START sqltxtract.sql chvsmttqjzjkn
sqltxplain_user_password
SQLT 在运行 SQLT 命令的目录中生成 HTML 报告和相关资源作为 .zip 文件。
(可选) 要允许应用程序用户使用 SQLT 诊断 SQL 语句,请使用以下语句向每个应用程序用户授予
SQLT_USER_ROLE
:GRANT SQLT_USER_ROLE TO
application_user_name
;注意
Oracle 不建议对
SYS
用户或具有DBA
角色的用户运行 SQLT。最佳实践是通过向应用程序用户授予SQLT_USER_ROLE
,使用应用程序用户账户运行 SQLT 诊断。
升级 SQLT 选项
对于 Amazon RDS for Oracle,您可以将 SQLT 选项从现有版本升级到更高版本。要升级 SQLT 选项,请完成使用 SQLT中的步骤 1–3 以升级到新的 SQLT 版本。此外,如果您在本节的步骤 7 中为以前版本的 SQLT 授予了权限,请再次为新的 SQLT 版本授予权限。
升级 SQLT 选项将导致旧 SQLT 版本的元数据丢失。删除旧 SQLT 版本的架构和相关对象,并安装新版本的 SQLT。有关 SQLT 最新版本中的更改的更多信息,请参阅 My Oracle Support 网站上的文档 1614201.1
注意
不支持版本降级。
修改 SQLT 设置
在启用 SQLT 后,您可以修改该选项的 LICENSE_PACK
和 VERSION
设置。
有关如何修改选项设置的更多信息,请参阅 修改选项设置。有关各项设置的更多信息,请参阅SQLT 选项设置。
删除 SQLT 选项
您可以从数据库实例中删除 SQLT。
要从数据库实例中删除 SQLT,请执行下列操作之一:
-
要从多个数据库实例中删除 SQLT,请从数据库实例所属的选项组中删除 SQLT 选项。此更改会影响使用该选项组的所有数据库实例。有关更多信息,请参阅“从选项组中删除选项”。
-
要从单个数据库实例中删除 SQLT,请修改该数据库实例,并指定另一个不包含 SQLT 选项的选项组。您可以指定默认(空)选项组,或指定其他自定义选项组。有关更多信息,请参阅 修改 Amazon RDS 数据库实例。