Oracle SQLT - Amazon Relational Database Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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 并了解它的使用说明:

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 选项的以下设置。

选项设置 有效值 默认值 描述

LICENSE_PACK

T, D, N

N

要使用 SQLT 访问的 Oracle 管理包。输入以下值之一:

  • T 指示您拥有 Oracle Tuning Pack 和 Oracle Diagnostics Pack 的许可,并且希望从 SQLT 访问 SQL Tuning Advisor 和 Automatic Workload Repository。

  • D 指示您拥有 Oracle Diagnostics Pack 的许可,并且希望从 SQLT 访问 Automatic Workload Repository。

  • N 指示您没有 Oracle Tuning Pack 和 Oracle Diagnostics Pack 的许可,或者您拥有其中一项或两项的许可,但不希望 SQLT 访问它们。

注意

Amazon RDS 不提供这些 Oracle 管理包的许可。如果您指示要使用未包含在数据库实例中的包,则可以对数据库实例使用 SQLT。不过,SQLT 无法访问该包,并且 SQLT 报告不包括该包的数据。例如,如果您指定 T,但数据库实例不包括 Oracle Tuning Pack,则 SQLT 可用于数据库实例,但其生成的报告不包含与 Oracle Tuning Pack 相关的数据。

VERSION

2016-04-29.v1

2018-03-31.v1

2018-07-25.v1

2016-04-29.v1

要安装的 SQLT 版本。

注意

对于 Oracle Database 19c 和 21c,唯一受支持的版本是 2018-07-25.v1。此版本是这些发布的默认版本。

添加 SQLT 选项

下面是将 SQLT 选项添加到数据库实例的一般过程:

  1. 创建新的选项组,或者复制或修改现有选项组。

  2. 向选项组添加 SQLT 选项。

  3. 将选项组与数据库实例相关联。

在添加 SQLT 选项后,一旦激活该选项组,就会激活 SQLT。

将 SQLT 选项添加到数据库实例
  1. 确定您要使用的选项组。您可以创建新的选项组,或使用现有选项组。如果您想使用现有选项组,请跳到下一步。或者,通过以下设置创建自定义数据库选项组:

    1. 对于 Engine,请选择要使用的 Oracle 版本。所有版本均支持 SQLT 选项。

    2. 对于主引擎版本,选择数据库实例的版本。

    有关更多信息,请参阅“创建选项组”。

  2. SQLT 选项添加到该选项组。有关添加选项的更多信息,请参阅 将选项添加到选项组

  3. 将选项组应用到新的或现有的数据库实例:

  4. (可选) 使用 SQLT 选项验证每个数据库实例上的 SQLT 安装。

    1. 使用 SQL 客户端以主用户身份连接到数据库实例。

      有关使用 SQL 客户端连接到 Oracle 数据库实例的信息,请参阅连接到 RDS for Oracle 数据库实例

    2. 运行以下查询:

      SELECT sqltxplain.sqlt$a.get_param('tool_version') sqlt_version FROM DUAL;

      查询返回 Amazon RDS 上的 SQLT 选项的当前版本。12.1.160429 是 Amazon RDS 上可用的 SQLT 版本的一个例子。

  5. 更改由 SQLT 选项创建的用户的密码。

    1. 使用 SQL 客户端以主用户身份连接到数据库实例。

    2. 运行以下 SQL 语句更改 SQLTXADMIN 用户的密码:

      ALTER USER SQLTXADMIN IDENTIFIED BY new_password ACCOUNT UNLOCK;
      注意

      作为安全最佳实践,请指定除此处所示提示以外的密码。

    3. 运行以下 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
  1. 从 My Oracle Support 网站上的文档 215187.1 下载 SQLT .zip 文件。

    注意

    您无法从 My Oracle Support 网站中下载 SQLT 12.1.160429。Oracle 已弃用该旧版本。

  2. 解压缩 SQLT .zip 文件。

  3. 从命令提示符处,转到文件系统上的 sqlt/run 目录。

  4. 从命令提示符处,打开 SQL*Plus,并以主用户身份连接到数据库实例。

    有关使用 SQL*Plus 连接到数据库实例的信息,请参阅 连接到 RDS for Oracle 数据库实例

  5. 获取 SQL 语句的 SQL ID:

    SELECT SQL_ID FROM V$SQL WHERE SQL_TEXT='sql_statement';

    输出类似于以下内容:

    SQL_ID ------------- chvsmttqjzjkn
  6. 使用 SQLT 分析 SQL 语句:

    START sqltxtract.sql sql_id sqltxplain_user_password

    例如,对于 SQL ID chvsmttqjzjkn,输入以下内容:

    START sqltxtract.sql chvsmttqjzjkn sqltxplain_user_password

    SQLT 在运行 SQLT 命令的目录中生成 HTML 报告和相关资源作为 .zip 文件。

  7. (可选) 要允许应用程序用户使用 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_PACKVERSION 设置。

有关如何修改选项设置的更多信息,请参阅 修改选项设置。有关各项设置的更多信息,请参阅SQLT 选项设置

删除 SQLT 选项

您可以从数据库实例中删除 SQLT。

要从数据库实例中删除 SQLT,请执行下列操作之一:

  • 要从多个数据库实例中删除 SQLT,请从数据库实例所属的选项组中删除 SQLT 选项。此更改会影响使用该选项组的所有数据库实例。有关更多信息,请参阅“从选项组中删除选项”。

  • 要从单个数据库实例中删除 SQLT,请修改该数据库实例,并指定另一个不包含 SQLT 选项的选项组。您可以指定默认(空)选项组,或指定其他自定义选项组。有关更多信息,请参阅 修改 Amazon RDS 数据库实例