Oracle 优化篇+STS+输入源(2/5)AWR

说明:本文为STS(SQL Tuning Set)使用参考手册
用途:本文仅供初学者熟悉了解SQL Tuning Set或优化参考
标签:SQL Tuning Set、STS、STS使用方法、Oracle优化、SQL调优、STS架构图
温馨提示:如果您发现本文哪里写的有问题或者有更好的写法请留言或私信我进行修改优化
高级内容:由于篇幅原因,部分高级内容和详情没有在此展现,如有需要可以留言或私信

★ 相关文章(※ STS的5种输入源)
    ①Cursor Cache
    ②AWR(Automatic Workload Repository)
    ③SQL Trace
    ④SQLPA(SQL Performance Analyzer Task)
    ⑤STS(SQL Tuning Set)​​​​​​​


★ 知识点
※ 名词解释:SQL调优集(STS)是一个数据库对象,可以用作调优工具的输入。
※ STS包括以下组件:
    ①一组SQL语句
    ②关联的执行上下文,例如用户架构,应用程序模块名称和操作,绑定值列表以及游标的 SQL编译环境
    ③相关的基本执行统计信息,例如经过时间,CPU时间,缓冲区获取,磁盘读取,已处理的行,游标提取,执行次数,完整执行次数,优化器成本和命令类型
    ④每个SQL语句的关联执行计划和行源统计信息(可选)


★ STS架构图

Oracle 优化篇+STS+输入源(2/5)AWR_第1张图片



★ 输入源B【Automatic Workload Repository】 → dbms_sqltune.select_workload_repository
※ 温馨提示以下所有操作均在scott用户下执行(请临时给scott授予DBA角色)
※ 温馨提示:STS以AWR为输入源时有2种重载方式
    ①【重载】【AWR基线】【略】
    ②【重载】【AWR快照】【常用】

--创建AWR快照A(需要在CDB中执行)
EXEC DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT;


--模拟交易
--如果AWR中没有记录的话多执行几次即可
sqlplus scott/tiger
select /*+ monitor */ * from scott.emp;
select /*+ monitor */ * from scott.dept;
select /*+ monitor */ * from scott.salgrade;


--创建AWR快照B(需要在CDB中执行)
EXEC DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT;


--删除STS
BEGIN
  DBMS_SQLTUNE.DROP_SQLSET( sqlset_name => 'ZZT_SQL_TUNING_SET',
    sqlset_owner => 'SCOTT' );
END;
/


--创建STS
BEGIN
  DBMS_SQLTUNE.CREATE_SQLSET(
    sqlset_name => 'ZZT_SQL_TUNING_SET', 
    sqlset_owner => 'SCOTT',
    description  => 'test');
END;
/


--查看STS
select * from dba_sqlset;


--查看AWR快照
select to_char(s.end_interval_time,'YYYY-MM-DD hh24:mi:ss') sj,s.* from DBA_HIST_SNAPSHOT s order by s.end_interval_time;


--加载符合条件的SQL到STS
--从18C开始STS系统包发生了变化DBMS_SQLTUNE→DBMS_SQLSET
DECLARE
  zzt_cur_sqlarea DBMS_SQLTUNE.SQLSET_CURSOR; --定义游标参数
  --zzt_cur_sqlarea sys_refcursor;    --也可以直接使用系统游标
BEGIN
  OPEN zzt_cur_sqlarea FOR --将符合条件的SQL加载到游标中,然后放入STS
    SELECT VALUE(p)
      FROM TABLE(DBMS_SQLTUNE.SELECT_WORKLOAD_REPOSITORY(begin_snap        => 92,
                                                         end_snap          => 93,
                                                         basic_filter      => 'parsing_schema_name = ''SCOTT''',
                                                         object_filter     => NULL,
                                                         ranking_measure1  => 'elapsed_time',
                                                         ranking_measure2  => 'cpu_time',
                                                         result_percentage => 1,
                                                         result_limit      => 10,
                                                         attribute_list    => 'ALL'
                )) p;
  -- load the tuning set
  DBMS_SQLTUNE.LOAD_SQLSET(sqlset_name       => 'ZZT_SQL_TUNING_SET',
                           populate_cursor   => zzt_cur_sqlarea,
                           sqlset_owner      => 'SCOTT',
                           load_option       => 'INSERT',
                           update_option     => 'REPLACE',
                           update_condition  => 'new.executions >= old.executions',
                           update_attributes => 'ALL',
                           ignore_null       => TRUE,
                           commit_rows       => NULL);
END;
/

--读取最新的STS详情
--COLUMN SQL_TEXT FORMAT a30   
--COLUMN SCH FORMAT a3
--COLUMN ELAPSED FORMAT 999999999
SELECT *
  FROM TABLE(DBMS_SQLTUNE.SELECT_SQLSET(sqlset_name  => 'ZZT_SQL_TUNING_SET',
                                        sqlset_owner => 'SCOTT'))
 where lower(SQL_TEXT) like 'select /*+ monitor */ * from scott.%'
 order by FORCE_MATCHING_SIGNATURE;


--输出样例

SQL_ID        FORCE_MATCHING_SIGNATURE SQL_TEXT                                                                         OBJECT_LIST BIND_DATA                                                                        PARSING_SCHEMA_NAME                                                              MODULE                                                           ACTION                                                           ELAPSED_TIME   CPU_TIME BUFFER_GETS DISK_READS DIRECT_WRITES ROWS_PROCESSED    FETCHES EXECUTIONS END_OF_FETCH_COUNT OPTIMIZER_COST OPTIMIZER_ENV                                                                      PRIORITY COMMAND_TYPE FIRST_LOAD_TIME     STAT_PERIOD ACTIVE_STAT_PERIOD OTHER                                                                            PLAN_HASH_VALUE SQL_PLAN BIND_LIST   CON_DBID LAST_EXEC_START_TIME
------------- ------------------------ -------------------------------------------------------------------------------- ----------- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- ---------------------------------------------------------------- ---------------------------------------------------------------- ------------ ---------- ----------- ---------- ------------- -------------- ---------- ---------- ------------------ -------------- -------------------------------------------------------------------------------- ---------- ------------ ------------------- ----------- ------------------ -------------------------------------------------------------------------------- --------------- -------- --------- ---------- --------------------
49651cfuu8pch      5.76444384455313E18 select /*+ monitor */ * from scott.dept                                                                                                                               SCOTT                                                                            SQL*Plus                                                                                                                                 33164      46875         955          0             0            436        218        109                109              3 E289FB892169B7002D021000AEF9C3E2CFEA33105641455551952110554555154554555859155544                       3                                                                                                                                          3383998547    1400682370 
23pq0hhp07nnb      7.75465971212176E18 select /*+ monitor */ * from scott.emp                                                                                                                                SCOTT                                                                            SQL*Plus                                                                                                                                 41659      31250        1091          0             0           1526        218        109                109              3 E289FB892169B7002D021000AEF9C3E2CFEA33105641455551952110554555154554555859155544                       3                                                                                                                                          3956160932    1400682370 
b4209s4z8cq7a      8.08923910175349E18 select /*+ monitor */ * from scott.salgrade                                                                                                                           SCOTT                                                                            SQL*Plus                                                                                                                                 33645      15625         930          0             0            545        218        109                109              3 E289FB892169B7002D021000AEF9C3E2CFEA33105641455551952110554555154554555859155544                       3                                                                                                                                          2489195056    1400682370  
  

※ 如果您觉得文章写的还不错, 别忘了在文末给作者点个赞哦 ~

over

你可能感兴趣的:(数据库+Oracle,SQL,Tuning,Set,STS,SQL调优,STS架构图)