Amazon Relational Database Service
用户指南 (API Version 2014-10-31)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

Oracle SQLT

Amazon RDS 通过使用 SQLT 选项来支持 Oracle SQLTXPLAIN (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 和访问使用说明,请登录到您的 My Oracle Support 账户,并打开以下文档:

您可对下列任一 Oracle 数据库版本使用 SQLT:

  • Oracle 12c,12.1.0.2

  • Oracle 11g,11.2.0.4

Amazon RDS 不支持以下 SQLT 方法:

  • XPLORE

  • XHUME

SQLT 的先决条件

以下是使用 SQLT 的先决条件:

  • 您必须删除 SQLT 所需的用户和角色 (如果存在)。

    SQLT 选项将在数据库实例上创建以下用户和角色:

    • SQLTXPLAIN 用户

    • SQLTXADMIN 用户

    • SQLT_USER_ROLE 角色

    如果您的数据库实例具有这些用户或角色中的任意一个,请使用 SQL 客户端登录到数据库实例,并使用以下语句将其删除:

    Copy
    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

TDN

T

要使用 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 相关的数据。

添加 SQLT 选项

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

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

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

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

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

将 SQLT 选项添加到数据库实例

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

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

    2. 对于 Major Engine Version,请选择 11.212.1

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

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

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

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

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

      有关使用 SQL 客户端连接到 Oracle 数据库实例的信息,请参阅与运行 Oracle 数据库引擎的数据库实例连接

    2. 运行以下查询:

      Copy
      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 用户的密码:

      Copy
      ALTER USER SQLTXADMIN IDENTIFIED BY new_password ACCOUNT UNLOCK;
    3. 运行以下 SQL 语句更改 SQLTXPLAIN 用户的密码:

      Copy
      ALTER USER SQLTXPLAIN IDENTIFIED BY new_password ACCOUNT UNLOCK;

注意

升级 SQLT 需要卸载 SQLT 的旧版本然后安装新版本。因此,在升级 SQLT 时,所有 SQLT 元数据都可能会丢失。数据库的主要版本升级也会卸载并重新安装 SQLT。主要版本升级的示例是从 Oracle 11g 升级到 Oracle 12c。

使用 SQLT

SQLT 可与 Oracle SQL*Plus 实用工具一起使用。

使用 SQLT

  1. 从 My Oracle Support 网站上的文档 215187.1 下载 SQLT .zip 文件。

  2. 解压缩 SQLT .zip 文件。

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

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

    有关使用 SQL*Plus 连接到数据库实例的信息,请参阅 与运行 Oracle 数据库引擎的数据库实例连接

  5. 获取 SQL 语句的 SQL ID:

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

    命令输出类似于以下内容:

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

    Copy
    START sqltxtract.sql sql_id sqltxplain_user_password

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

    Copy
    START sqltxtract.sql chvsmttqjzjkn sqltxplain_user_password

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

  7. (可选) 要允许应用程序用户使用 SQLT 诊断 SQL 语句,请使用以下语句向每个应用程序用户授予 SQLT_USER_ROLE

    Copy
    GRANT ROLE SQLT_USER_ROLE TO application_user_name;

    注意

    Oracle 不建议对 SYS 用户或具有 DBA 角色的用户运行 SQLT。最佳实践是通过向应用程序用户授予 SQLT_USER_ROLE,使用应用程序用户账户运行 SQLT 诊断。

修改 SQLT 设置

启用 SQLT 后,可以修改该选项的 LICENSE_PACK 设置。

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

删除 SQLT 选项

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

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

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

     

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

相关主题