Oracle SQLT
Amazon RDS supports Oracle SQLTXPLAIN (SQLT) through the use of the SQLT option. You can use SQLT with any edition of Oracle Database 19c and higher.
The Oracle EXPLAIN PLAN statement can determine the execution plan of a SQL
statement. It can verify whether the Oracle optimizer chooses a certain execution plan, such
as a nested loops join. It also helps you understand the optimizer's decisions, such as why
it chose a nested loops join over a hash join. So EXPLAIN PLAN helps you
understand the statement's performance.
SQLT is an Oracle utility that produces a report. The report includes object statistics, object metadata, optimizer-related initialization parameters, and other information that a database administrator can use to tune a SQL statement for optimal performance. SQLT produces an HTML report with hyperlinks to all of the sections in the report.
Unlike Automatic Workload Repository or Statspack reports, SQLT works on individual SQL statements. SQLT is a collection of SQL, PL/SQL, and SQL*Plus files that collect, store, and display performance data.
Following are the supported Oracle versions for each SQLT version.
| SQLT version | Oracle Database 21c | Oracle Database 19c |
|---|---|---|
|
2018-07-25.v1 |
Supported |
Supported |
|
2018-03-31.v1 |
Not supported |
Not supported |
|
2016-04-29.v1 |
Not supported |
Not supported |
To download SQLT and access instructions for using it:
Amazon RDS doesn't support the following SQLT methods:
-
XPLORE -
XHUME
Prerequisites for SQLT
The following are prerequisites for using SQLT:
-
You must remove users and roles that are required by SQLT, if they exist.
The SQLT option creates the following users and roles on a DB instance:
SQLTXPLAINuserSQLTXADMINuserSQLT_USER_ROLErole
If your DB instance has any of these users or roles, log in to the DB instance using a SQL client, and drop them using the following statements:
DROP USER SQLTXPLAIN CASCADE; DROP USER SQLTXADMIN CASCADE; DROP ROLE SQLT_USER_ROLE CASCADE; -
You must remove tablespaces that are required by SQLT, if they exist.
The SQLT option creates the following tablespaces on a DB instance:
RDS_SQLT_TSRDS_TEMP_SQLT_TS
If your DB instance has these tablespaces, log in to the DB instance using a SQL client, and drop them.
SQLT option settings
SQLT can work with licensed features that are provided by the Oracle Tuning Pack and the Oracle Diagnostics Pack. The Oracle Tuning Pack includes the SQL Tuning Advisor, and the Oracle Diagnostics Pack includes the Automatic Workload Repository. The SQLT settings enable or disable access to these features from SQLT.
Amazon RDS supports the following settings for the SQLT option.
| Option setting | Valid values | Default value | Description |
|---|---|---|---|
|
|
|
|
The Oracle Management Packs that you want to access with SQLT. Enter one of the following values:
NoteAmazon RDS does not provide licenses for these Oracle Management Packs. If you indicate that
you want to use a pack that is not included in your DB instance, you can use SQLT with
the DB instance. However, SQLT can't access the pack, and the SQLT report doesn't include
the data for the pack. For example, if you specify |
|
|
|
|
The version of SQLT that you want to install. NoteFor Oracle Database 19c and 21c, the only supported version is
|
Adding the SQLT option
The following is the general process for adding the SQLT option to a DB instance:
Create a new option group, or copy or modify an existing option group.
Add the SQLT option to the option group.
Associate the option group with the DB instance.
After you add the SQLT option, as soon as the option group is active, SQLT is active.
To add the SQLT option to a DB instance
-
Determine the option group that you want to use. You can create a new option group or use an existing option group. If you want to use an existing option group, skip to the next step. Otherwise, create a custom DB option group with the following settings:
-
For Engine, choose the Oracle edition that you want to use. The SQLT option is supported on all editions.
-
For Major engine version, choose the version of your DB instance.
For more information, see Creating an option group.
-
-
Add the SQLT option to the option group. For more information about adding options, see Adding an option to an option group.
-
Apply the option group to a new or existing DB instance:
-
For a new DB instance, you apply the option group when you launch the instance. For more information, see Creating an Amazon RDS DB instance.
-
For an existing DB instance, you apply the option group by modifying the instance and attaching the new option group. For more information, see Modifying an Amazon RDS DB instance.
-
-
(Optional) Verify the SQLT installation on each DB instance with the SQLT option.
Use a SQL client to connect to the DB instance as the master user.
For information about connecting to an Oracle DB instance using a SQL client, see Connecting to your Oracle DB instance.
Run the following query:
SELECT sqltxplain.sqlt$a.get_param('tool_version') sqlt_version FROM DUAL;The query returns the current version of the SQLT option on Amazon RDS.
12.1.160429is an example of a version of SQLT that is available on Amazon RDS.
Change the passwords of the users that are created by the SQLT option.
Use a SQL client to connect to the DB instance as the master user.
Run the following SQL statement to change the password for the
SQLTXADMINuser:ALTER USER SQLTXADMIN IDENTIFIED BYnew_passwordACCOUNT UNLOCK;Note
Specify a password other than the prompt shown here as a security best practice.
Run the following SQL statement to change the password for the
SQLTXPLAINuser:ALTER USER SQLTXPLAIN IDENTIFIED BYnew_passwordACCOUNT UNLOCK;Note
Specify a password other than the prompt shown here as a security best practice.
Note
Upgrading SQLT requires uninstalling an older version of SQLT and then installing the new version. So, all SQLT metadata can be lost when you upgrade SQLT. A major version upgrade of a database also uninstalls and re-installs SQLT. An example of a major version upgrade is an upgrade from Oracle Database 19c to Oracle Database 21c.
Modifying SQLT settings
After you enable SQLT, you can modify the LICENSE_PACK and VERSION settings for the
option.
For more information about how to modify option settings, see Modifying an option setting. For more information about each setting, see SQLT option settings.
Removing the SQLT option
You can remove SQLT from a DB instance.
To remove SQLT from a DB instance, do one of the following:
-
To remove SQLT from multiple DB instances, remove the SQLT option from the option group to which the DB instances belong. This change affects all DB instances that use the option group. For more information, see Removing an option from an option group.
-
To remove SQLT from a single DB instance, modify the DB instance and specify a different option group that doesn't include the SQLT option. You can specify the default (empty) option group or a different custom option group. For more information, see Modifying an Amazon RDS DB instance.