版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xxzhaobb/article/details/88712213
原文地址:
-- sql tune advisor的步骤
1 create tuning task
2 execute tuning task
3 report tuning task
4 implement recommendations
-- 创建SQL Tuning task ,其中SQL来源是写好的SQL
SYS@test>conn hr/hr
Connected.
HR@test>DECLARE
my_task_name VARCHAR2(30);
my_sqltext CLOB;
BEGIN
my_sqltext := 'SELECT /*+ ORDERED */ * ' ||
'FROM employees e, locations l, departments d ' ||
'WHERE e.department_id = d.department_id AND ' ||
'l.location_id = d.location_id AND ' ||
'e.employee_id < :bnd';
my_task_name := DBMS_SQLTUNE.CREATE_TUNING_TASK (
sql_text => my_sqltext
, bind_list => sql_binds(anydata.ConvertNumber(100))
, user_name => 'HR'
, scope => 'COMPREHENSIVE'
, time_limit => 60
, task_name => 'STA_SPECIFIC_EMP_TASK'
, description => 'Task to tune a query on a specified employee'
);
END;
/ 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
PL/SQL procedure successfully completed.
HR@test>
-- 查看TASK的状态
COL TASK_ID FORMAT 999999
COL TASK_NAME FORMAT a25
COL STATUS_MESSAGE FORMAT a33
SELECT TASK_ID, TASK_NAME, STATUS, STATUS_MESSAGE FROM USER_ADVISOR_LOG;
HR@test>SELECT TASK_ID, TASK_NAME, STATUS, STATUS_MESSAGE FROM USER_ADVISOR_LOG;
TASK_ID TASK_NAME STATUS STATUS_MESSAGE
------- ------------------------- ----------- ---------------------------------
3659 STA_SPECIFIC_EMP_TASK INITIAL
HR@test>
-- 也可以对task进行修改,并查看修改后的参数
BEGIN
DBMS_SQLTUNE.SET_TUNING_TASK_PARAMETER (
task_name => 'STA_SPECIFIC_EMP_TASK'
, parameter => 'TIME_LIMIT'
, value => 300
);
END;
/
HR@test>COL PARAMETER_NAME FORMAT a25
COL VALUE FORMAT a15
SELECT PARAMETER_NAME, PARAMETER_VALUE AS "VALUE"
FROM USER_ADVISOR_PARAMETERS
WHERE TASK_NAME = 'STA_SPECIFIC_EMP_TASK'
AND PARAMETER_VALUE != 'UNUSED'
ORDER BY PARAMETER_NAME;HR@test>HR@test> 2 3 4 5
PARAMETER_NAME VALUE
------------------------- ---------------
DAYS_TO_EXPIRE 30
DEFAULT_EXECUTION_TYPE TUNE SQL
EXECUTION_DAYS_TO_EXPIRE UNLIMITED
JOURNALING INFORMATION
MODE COMPREHENSIVE
SQL_LIMIT -1
SQL_PERCENTAGE 1
TARGET_OBJECTS 1
TEST_EXECUTE AUTO
TIME_LIMIT 300
10 rows selected.
HR@test>
-- 执行 task
HR@test>exec DBMS_SQLTUNE.EXECUTE_TUNING_TASK(task_name=>'STA_SPECIFIC_EMP_TASK');DBMS_SQLTUNE.EXECUTE_TUNING_TASK(task_name=>'STA_SPECIFIC_EMP_TASK');
PL/SQL procedure successfully completed.
HR@test>
HR@test>SELECT TASK_ID, TASK_NAME, STATUS, STATUS_MESSAGE
FROM USER_ADVISOR_LOG; 2
TASK_ID TASK_NAME STATUS STATUS_MESSAGE
------- ------------------------- ----------- ---------------------------------
3659 STA_SPECIFIC_EMP_TASK COMPLETED
HR@test>
-- 监控task的运行进度
HR@test>SELECT STATUS
FROM USER_ADVISOR_TASKS
WHERE TASK_NAME = 'STA_SPECIFIC_EMP_TASK'; 2 3
STATUS
-----------
COMPLETED
HR@test>
VARIABLE my_tid NUMBER;
EXEC :my_tid := 3659
COL ADVISOR_NAME FORMAT a20
COL SOFAR FORMAT 999
COL TOTALWORK FORMAT 999
SELECT TASK_ID, ADVISOR_NAME, SOFAR, TOTALWORK,
ROUND(SOFAR/TOTALWORK*100,2) "%_COMPLETE"
FROM V$ADVISOR_PROGRESS
WHERE TASK_ID = :my_tid;
HR@test>VARIABLE my_tid NUMBER;
EXEC :my_tid := 3659
COL ADVISOR_NAME FORMAT a20
COL SOFAR FORMAT 999
COL TOTALWORK FORMAT 999
SELECT TASK_ID, ADVISOR_NAME, SOFAR, TOTALWORK,
ROUND(SOFAR/TOTALWORK*100,2) "%_COMPLETE"
FROM V$ADVISOR_PROGRESS
WHERE TASK_ID = :my_tid;HR@test>
PL/SQL procedure successfully completed.
HR@test>HR@test>HR@test>HR@test> 2 3 4
TASK_ID ADVISOR_NAME SOFAR TOTALWORK %_COMPLETE
------- -------------------- ----- --------- ----------
3659 SQL Tuning Advisor 1 1 100
3659 SQL Tuning Advisor 1 1 100
HR@test>
-- 显示SQL Tuning task 的结果
SET LONG 1000 -- 加大到99999 可以显示全
SET LONGCHUNKSIZE 1000
SET LINESIZE 100
SELECT DBMS_SQLTUNE.REPORT_TUNING_TASK( 'STA_SPECIFIC_EMP_TASK' )
FROM DUAL;
GENERAL INFORMATION SECTION
-------------------------------------------------------------------------------
Tuning Task Name : STA_SPECIFIC_EMP_TASK
Tuning Task Owner : HR
Workload Type : Single SQL Statement
Execution Count : 2
Current Execution : EXEC_3712
Execution Type : TUNE SQL
Scope : COMPREHENSIVE
Time Limit(seconds): 300
Completion Status : COMPLETED
Started at : 03/21/2019 10:28:58
Completed at : 03/21/2019 10:28:59
-------------------------------------------------------------------------------
Schema Name: HR
SQL ID : dg7nfaj0bdcvk
SQL Text : SELECT /*+ ORDERED */ * FROM employees e, locations l,
departments d WHERE e.department_id = d.department_id AND
l.location_id = d.location_id AND e.employee_id < :bnd
Bind Variables :
1 - (NUMBER):100
-------------------------------------------------------------------------------
FINDINGS SECTION (1 finding)
-------------------------------------------------------------------------------
1- Restructure SQL finding (see plan 1 in explain plans section)
----------------------------------------------------------------
在执行计划的行 ID 2 处发现开销很大的笛卡尔积操作。
Recommendation
--------------
- 考虑移去 "ORDERED" 提示。
-------------------------------------------------------------------------------
EXPLAIN PLANS SECTION
-------------------------------------------------------------------------------
1- Original
-----------
Plan hash value: 4162796140
-------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
-------------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 122 | 9 (0)| 00:00:01 |
|* 1 | HASH JOIN | | 1 | 122 | 9 (0)| 00:00:01 |
| 2 | MERGE JOIN CARTESIAN | | 23 | 2323 | 6 (0)| 00:00:01 |
| 3 | TABLE ACCESS BY INDEX ROWID BATCHED| EMPLOYEES | 1 | 52 | 3 (0)| 00:00:01 |
|* 4 | INDEX RANGE SCAN | EMP_EMP_ID_PK | 1 | | 2 (0)| 00:00:01 |
| 5 | BUFFER SORT | | 23 | 1127 | 3 (0)| 00:00:01 |
| 6 | TABLE ACCESS FULL | LOCATIONS | 23 | 1127 | 3 (0)| 00:00:01 |
| 7 | TABLE ACCESS FULL | DEPARTMENTS | 27 | 567 | 3 (0)| 00:00:01 |
-------------------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
1 - access("E"."DEPARTMENT_ID"="D"."DEPARTMENT_ID" AND "L"."LOCATION_ID"="D"."LOCATION_ID")
4 - access("E"."EMPLOYEE_ID"<:BND)
-------------------------------------------------------------------------------
-- 再次tuning 昨天的sts ,SQLT_WKLD_STS
-- 创建task ,通过sts
DECLARE my_task_name VARCHAR2(30);
BEGIN
my_task_name := DBMS_SQLTUNE.CREATE_TUNING_TASK (
sqlset_name => 'SQLT_WKLD_STS'
, scope => 'COMPREHENSIVE'
, time_limit => 60
, task_name => 'STA_MY_STS'
, description => 'Task to tune use a STS'
);
END;
SH@test>DECLARE my_task_name VARCHAR2(30);
BEGIN
my_task_name := DBMS_SQLTUNE.CREATE_TUNING_TASK (
sqlset_name => 'SQLT_WKLD_STS'
, scope => 'COMPREHENSIVE'
, time_limit => 60
, task_name => 'STA_MY_STS'
, description => 'Task to tune use a STS'
);
END; 2 3 4 5 6 7 8 9 10
11 /
PL/SQL procedure successfully completed.
SH@test>
-- 查看task的状态
SELECT TASK_ID, TASK_NAME, STATUS, STATUS_MESSAGE FROM USER_ADVISOR_LOG;
TASK_ID TASK_NAME STATUS STATUS_MESSAGE
------- ------------------------- ----------- ---------------------------------
3662 STA_MY_STS INITIAL
-- 执行task
exec DBMS_SQLTUNE.EXECUTE_TUNING_TASK(task_name=>'STA_MY_STS');
SELECT TASK_ID, TASK_NAME, STATUS, STATUS_MESSAGE FROM USER_ADVISOR_LOG;
SH@test>exec DBMS_SQLTUNE.EXECUTE_TUNING_TASK(task_name=>'STA_MY_STS');
PL/SQL procedure successfully completed.
SH@test>
SH@test>SELECT TASK_ID, TASK_NAME, STATUS, STATUS_MESSAGE FROM USER_ADVISOR_LOG;
TASK_ID TASK_NAME STATUS STATUS_MESSAGE
------- ------------------------- ----------- ---------------------------------
3662 STA_MY_STS COMPLETED
SH@test>
--显示sql tuning 的结果
SET LONG 1000
SET LONGCHUNKSIZE 1000
SET LINESIZE 100
SELECT DBMS_SQLTUNE.REPORT_TUNING_TASK( 'STA_MY_STS' ) FROM DUAL; -- 在sqlplus中显示不全
select dbms_sqltune.report_tuning_task(task_name => 'STA_MY_STS',owner_name => 'SH') from dual -- 在plsql developer中查询出来
GENERAL INFORMATION SECTION
-------------------------------------------------------------------------------
Tuning Task Name : STA_MY_STS
Tuning Task Owner : SH
Workload Type : SQL Tuning Set
Scope : COMPREHENSIVE
Time Limit(seconds) : 60
Completion Status : COMPLETED
Started at : 03/21/2019 11:08:14
Completed at : 03/21/2019 11:08:30
SQL Tuning Set (STS) Name : SQLT_WKLD_STS
SQL Tuning Set Owner : SH
Number of Statements in the STS : 10
-------------------------------------------------------------------------------
SUMMARY SECTION
-------------------------------------------------------------------------------
Global SQL Tuning Result Statistics
-------------------------------------------------------------------------------
Number of SQLs Analyzed : 10
Number of SQLs in the Report : 5
Number of SQLs with Findings : 5
Number of SQLs with SQL profiles recommended : 1
Number of SQLs with Index Findings : 2
Number of SQLs with SQL Restructure Findings : 1
-------------------------------------------------------------------------------
SQLs with Findings Ordered by Maximum (Profile/Index) Benefit, Object ID
-------------------------------------------------------------------------------
object ID SQL ID statistics profile(benefit) index(benefit) restructure
---------- ------------- ---------- ---------------- -------------- -----------
5 37rpuv6jc0wbh 99.81% 99.11%
7 bzmnj0nbvmz8t 98.85%
2 9fhs269dd284z 1
-------------------------------------------------------------------------------
Tables with New Potential Indices (ordered by schema, number of times, table)
-------------------------------------------------------------------------------
Schema Name Table Name Index Name Nb Time
--------------------------- --------------------------- -------------- --------
SH PRODUCTS IDX$$_0E4E0004 1
SALES IDX$$_0E4E0006 1
SALES IDX$$_0E4E0005 1
-------------------------------------------------------------------------------
DETAILS SECTION
-------------------------------------------------------------------------------
Statements with Results Ordered by Maximum (Profile/Index) Benefit, Object ID
-------------------------------------------------------------------------------
Object ID : 5
Schema Name: SH
SQL ID : 37rpuv6jc0wbh
SQL Text : select sum(quantity_sold) from sales s, products p
where s.prod_id = p.prod_id
and s.amount_sold > 20000 and p.prod_name= 'Linen Big Shirt'
-------------------------------------------------------------------------------
FINDINGS SECTION (2 findings)
-------------------------------------------------------------------------------
1- SQL Profile Finding (see explain plans section below)
--------------------------------------------------------
为此语句找到了性能更好的执行计划。
Recommendation (estimated benefit: 99.81%)
------------------------------------------
- 考虑接受推荐的 SQL 概要文件。
execute dbms_sqltune.accept_sql_profile(task_name => 'STA_MY_STS',
object_id => 5, task_owner => 'SH', replace => TRUE);
Validation results
------------------
已对 SQL profile 进行测试, 方法为执行其计划和原始计划并测量与计划相对应的执行统计信息。如果其中一个计划运行在很短的时间内就完成,
则另一计划可能只执行了一部分。
Original Plan With SQL Profile % Improved
------------- ---------------- ----------
Completion Status: COMPLETE COMPLETE
Elapsed Time (s): .069412 .000046 99.93 %
CPU Time (s): .05263 .000046 99.91 %
User I/O Time (s): .013194 0 100 %
Buffer Gets: 1635 3 99.81 %
Physical Read Requests: 5 0 100 %
Physical Write Requests: 0 0
Physical Read Bytes: 59801 0 100 %
Physical Write Bytes: 0 0
Rows Processed: 1 1
Fetches: 1 1
Executions: 1 1
Notes
-----
1. the original plan 的统计信息是 10 执行的平均值。
2. the SQL profile plan 的统计信息是 10 执行的平均值。
2- Index Finding (see explain plans section below)
--------------------------------------------------
通过创建一个或多个索引可以改进此语句的执行计划。
Recommendation (estimated benefit: 99.11%)
------------------------------------------
- 考虑运行可以改进物理方案设计的访问指导或者创建推荐的索引。
create index SH.IDX$$_0E4E0004 on SH.PRODUCTS("PROD_NAME","PROD_ID");
- 考虑运行可以改进物理方案设计的访问指导或者创建推荐的索引。
create index SH.IDX$$_0E4E0005 on SH.SALES("AMOUNT_SOLD","PROD_ID");
Rationale
---------
创建推荐的索引可以显著地改进此语句的执行计划。但是, 使用典型的 SQL 工作量运行 "访问指导"
可能比单个语句更可取。通过这种方法可以获得全面的索引建议案, 包括计算索引维护的开销和附加的空间消耗。
-------------------------------------------------------------------------------
EXPLAIN PLANS SECTION
-------------------------------------------------------------------------------
1- Original With Adjusted Cost
------------------------------
Plan hash value: 3590829658
-------------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | Pstart| Pstop |
-------------------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 42 | 527 (2)| 00:00:01 | | |
| 1 | SORT AGGREGATE | | 1 | 42 | | | | |
| 2 | NESTED LOOPS | | 1 | 42 | 527 (2)| 00:00:01 | | |
| 3 | NESTED LOOPS | | 1 | 42 | 527 (2)| 00:00:01 | | |
| 4 | PARTITION RANGE ALL | | 1 | 12 | 526 (2)| 00:00:01 | 1 | 28 |
|* 5 | TABLE ACCESS FULL | SALES | 1 | 12 | 526 (2)| 00:00:01 | 1 | 28 |
|* 6 | INDEX UNIQUE SCAN | PRODUCTS_PK | 1 | | 0 (0)| 00:00:01 | | |
|* 7 | TABLE ACCESS BY INDEX ROWID| PRODUCTS | 1 | 30 | 1 (0)| 00:00:01 | | |
-------------------------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
5 - filter("S"."AMOUNT_SOLD">20000)
6 - access("S"."PROD_ID"="P"."PROD_ID")
7 - filter("P"."PROD_NAME"='Linen Big Shirt')
2- Using SQL Profile
--------------------
Plan hash value: 4243845115
---------------------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | Pstart| Pstop |
---------------------------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 42 | 452 (1)| 00:00:06 | | |
| 1 | SORT AGGREGATE | | 1 | 42 | | | | |
|* 2 | TABLE ACCESS BY LOCAL INDEX ROWID| SALES | 4 | 48 | 452 (1)| 00:00:06 | | |
| 3 | NESTED LOOPS | | 4 | 168 | 452 (1)| 00:00:06 | | |
|* 4 | TABLE ACCESS FULL | PRODUCTS | 1 | 30 | 3 (0)| 00:00:01 | | |
| 5 | PARTITION RANGE ALL | | | | | | 1 | 28 |
| 6 | BITMAP CONVERSION TO ROWIDS | | | | | | | |
|* 7 | BITMAP INDEX SINGLE VALUE | SALES_PROD_BIX | | | | | 1 | 28 |
---------------------------------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
2 - filter("S"."AMOUNT_SOLD">20000)
4 - filter("P"."PROD_NAME"='Linen Big Shirt')
7 - access("S"."PROD_ID"="P"."PROD_ID")
3- Using New Indices
--------------------
Plan hash value: 3310752130
----------------------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | Pstart| Pstop |
----------------------------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 42 | 4 (0)| 00:00:01 | | |
| 1 | SORT AGGREGATE | | 1 | 42 | | | | |
| 2 | TABLE ACCESS BY GLOBAL INDEX ROWID| SALES | 4 | 48 | 3 (0)| 00:00:01 | ROWID | ROWID |
| 3 | NESTED LOOPS | | 4 | 168 | 4 (0)| 00:00:01 | | |
|* 4 | INDEX RANGE SCAN | IDX$$_0E4E0004 | 1 | 30 | 1 (0)| 00:00:01 | | |
|* 5 | INDEX RANGE SCAN | IDX$$_0E4E0005 | 4 | | 2 (0)| 00:00:01 | | |
----------------------------------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
4 - access("P"."PROD_NAME"='Linen Big Shirt')
5 - access("S"."AMOUNT_SOLD">20000 AND "S"."PROD_ID"="P"."PROD_ID")
filter("S"."PROD_ID"="P"."PROD_ID")
-------------------------------------------------------------------------------
Object ID : 7
Schema Name: SH
SQL ID : bzmnj0nbvmz8t
SQL Text : select * from sales where amount_sold = 4
-------------------------------------------------------------------------------
FINDINGS SECTION (1 finding)
-------------------------------------------------------------------------------
1- Index Finding (see explain plans section below)
--------------------------------------------------
通过创建一个或多个索引可以改进此语句的执行计划。
Recommendation (estimated benefit: 98.85%)
------------------------------------------
- 考虑运行可以改进物理方案设计的访问指导或者创建推荐的索引。
create index SH.IDX$$_0E4E0006 on SH.SALES("AMOUNT_SOLD");
Rationale
---------
创建推荐的索引可以显著地改进此语句的执行计划。但是, 使用典型的 SQL 工作量运行 "访问指导"
可能比单个语句更可取。通过这种方法可以获得全面的索引建议案, 包括计算索引维护的开销和附加的空间消耗。
-------------------------------------------------------------------------------
EXPLAIN PLANS SECTION
-------------------------------------------------------------------------------
1- Original
-----------
Plan hash value: 1550251865
---------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | Pstart| Pstop |
---------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 256 | 7424 | 526 (2)| 00:00:01 | | |
| 1 | PARTITION RANGE ALL| | 256 | 7424 | 526 (2)| 00:00:01 | 1 | 28 |
|* 2 | TABLE ACCESS FULL | SALES | 256 | 7424 | 526 (2)| 00:00:01 | 1 | 28 |
---------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
2 - filter("AMOUNT_SOLD"=4)
2- Using New Indices
--------------------
Plan hash value: 2399532300
-----------------------------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | Pstart| Pstop |
-----------------------------------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 256 | 7424 | 6 (0)| 00:00:01 | | |
| 1 | TABLE ACCESS BY GLOBAL INDEX ROWID BATCHED| SALES | 256 | 7424 | 6 (0)| 00:00:01 | ROWID | ROWID |
|* 2 | INDEX RANGE SCAN | IDX$$_0E4E0006 | 256 | | 3 (0)| 00:00:01 | | |
-----------------------------------------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
2 - access("AMOUNT_SOLD"=4)
-------------------------------------------------------------------------------
Object ID : 2
Schema Name: SH
SQL ID : 9fhs269dd284z
SQL Text : select * from sales where quantity_sold < 5
union select * from sales where quantity_sold> 500
-------------------------------------------------------------------------------
FINDINGS SECTION (1 finding)
-------------------------------------------------------------------------------
1- Restructure SQL finding (see plan 1 in explain plans section)
----------------------------------------------------------------
在执行计划的行 ID 1 处发现开销很大的 "UNION" 操作。
Recommendation
--------------
- 如果允许重复或可以保证唯一性, 则考虑用 "UNION ALL" 代替 "UNION"。
-------------------------------------------------------------------------------
EXPLAIN PLANS SECTION
-------------------------------------------------------------------------------
1- Original
-----------
Plan hash value: 4060794605
-------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes |TempSpc| Cost (%CPU)| Time | Pstart| Pstop |
-------------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 918K| 25M| | 8365 (1)| 00:00:02 | | |
| 1 | SORT UNIQUE | | 918K| 25M| 42M| 8365 (1)| 00:00:02 | | |
| 2 | UNION-ALL | | | | | | | | |
| 3 | PARTITION RANGE ALL| | 918K| 25M| | 526 (2)| 00:00:01 | 1 | 28 |
|* 4 | TABLE ACCESS FULL | SALES | 918K| 25M| | 526 (2)| 00:00:01 | 1 | 28 |
| 5 | PARTITION RANGE ALL| | 1 | 29 | | 526 (2)| 00:00:01 | 1 | 28 |
|* 6 | TABLE ACCESS FULL | SALES | 1 | 29 | | 526 (2)| 00:00:01 | 1 | 28 |
-------------------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
4 - filter("QUANTITY_SOLD"<5)
6 - filter("QUANTITY_SOLD">500)
-------------------------------------------------------------------------------
Object ID : 4
Schema Name: SH
SQL ID : 35whmj2v6jq1z
SQL Text : DECLARE
c_sqlarea_cursor DBMS_SQLTUNE.SQLSET_CURSOR;
BEGIN
OPEN c_sqlarea_cursor FOR
SELECT VALUE(p)
FROM TABLE(
DBMS_SQLTUNE.SELECT_CURSOR_CACHE(
'AND parsing_schema_name = ''SH'' ')
) p;
-- load the tuning set
DBMS_SQLTUNE.LOAD_SQLSET (
sqlset_name => 'SQLT_WKLD_STS'
, populate_cursor => c_sqlarea_cursor
);
END;
-------------------------------------------------------------------------------
ADDITIONAL INFORMATION SECTION
-------------------------------------------------------------------------------
- 不支持的 SQL 语句类型。
-------------------------------------------------------------------------------
Object ID : 10
Schema Name: SH
SQL ID : gc81btz8wjs7s
SQL Text : BEGIN
DBMS_SQLTUNE.CREATE_SQLSET (
sqlset_name => 'SQLT_WKLD_STS'
, description => 'STS to store SQL from the private SQL area'
);
END
;
-------------------------------------------------------------------------------
ADDITIONAL INFORMATION SECTION
-------------------------------------------------------------------------------
- 不支持的 SQL 语句类型。
-------------------------------------------------------------------------------
END