设为首页收藏本站

Botang唐波's Oracle Station

查看: 209|回复: 0

课程第8次(2018-07-06星期五)

[复制链接]

740

主题

1112

帖子

8057

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
8057
发表于 2018-7-6 20:13:25 | 显示全部楼层 |阅读模式
删除和进化基线:
  1. select  * from dba_sql_plan_baselines  spb
  2.   where spb.sql_text like '%/*LOAD_AUTO*/%';
  3.   
  4.   
  5.   
  6.   declare
  7.     v1  clob;
  8. begin
  9.     v1 := dbms_spm.evolve_sql_plan_baseline(sql_handle => 'SYS_SQL_6fe28d438dfc352f',
  10.     plan_name => 'SQL_PLAN_6zsnd8f6zsd9g11df68d0');
  11.   end;
  12.   
  13.   declare
  14.     v1  varchar2(100);
  15.   begin
  16.     v1 :=  dbms_spm.drop_sql_plan_baseline(sql_handle => 'SYS_SQL_6fe28d438dfc352f',
  17.     plan_name => 'SQL_PLAN_6zsnd8f6zsd9g54bc8843');
  18.   end;
  19.   
  20.    
复制代码


auto trace 看有没有用基线:
  1. SQL> @query1
  2. SQL> set echo on
  3. SQL>
  4. SQL> select /*LOAD_AUTO*/ * from sh.sales where quantity_sold > 40 order by prod_id;

  5. no rows selected

  6. SQL>
  7. SQL> show parameter optimizer

  8. NAME                                     TYPE         VALUE
  9. ------------------------------------ ----------- ------------------------------
  10. optimizer_capture_sql_plan_baselines boolean         TRUE
  11. optimizer_dynamic_sampling             integer         2
  12. optimizer_features_enable             string         11.2.0.1
  13. optimizer_index_caching              integer         0
  14. optimizer_index_cost_adj             integer         100
  15. optimizer_mode                             string         ALL_ROWS
  16. optimizer_secure_view_merging             boolean         TRUE
  17. optimizer_use_invisible_indexes      boolean         FALSE
  18. optimizer_use_pending_statistics     boolean         FALSE
  19. optimizer_use_sql_plan_baselines     boolean         TRUE
  20. SQL> alter session set optimizer_mode=first_rows;

  21. Session altered.

  22. SQL> @query1
  23. SQL> set echo on
  24. SQL>
  25. SQL> select /*LOAD_AUTO*/ * from sh.sales where quantity_sold > 40 order by prod_id;

  26. no rows selected

  27. SQL>
  28. SQL> alter system set optimizer_mode=first_rows;

  29. System altered.

  30. SQL> set autot on
  31. SQL> @query1
  32. SQL> set echo on
  33. SQL>
  34. SQL> select /*LOAD_AUTO*/ * from sh.sales where quantity_sold > 40 order by prod_id;


  35. no rows selected


  36. Execution Plan
  37. ----------------------------------------------------------
  38. Plan hash value: 899219946

  39. --------------------------------------------------------------------------------
  40. ---------------------------------------

  41. | Id  | Operation                            | Name              | Rows  | Bytes |
  42. Cost (%CPU)| Time     | Pstart| Pstop |

  43. --------------------------------------------------------------------------------
  44. ---------------------------------------

  45. |   0 | SELECT STATEMENT                    |                      |     1 |    29 |
  46. 2883        (1)| 00:00:35 |       |       |

  47. |   1 |  SORT ORDER BY                            |                      |     1 |    29 |
  48. 2883        (1)| 00:00:35 |       |       |

  49. |   2 |   PARTITION RANGE ALL                    |                      |     1 |    29 |
  50. 2882        (1)| 00:00:35 |     1 |    28 |

  51. |*  3 |    TABLE ACCESS BY LOCAL INDEX ROWID| SALES              |     1 |    29 |
  52. 2882        (1)| 00:00:35 |     1 |    28 |

  53. |   4 |     BITMAP CONVERSION TO ROWIDS     |                      |       |       |
  54.            |              |       |       |

  55. |   5 |      BITMAP INDEX FULL SCAN            | SALES_PROMO_BIX |       |       |
  56.            |              |     1 |    28 |

  57. --------------------------------------------------------------------------------
  58. ---------------------------------------


  59. Predicate Information (identified by operation id):
  60. ---------------------------------------------------

  61.    3 - filter("QUANTITY_SOLD">40)


  62. Statistics
  63. ----------------------------------------------------------
  64.           1  recursive calls
  65.           0  db block gets
  66.        2030  consistent gets
  67.           0  physical reads
  68.           0  redo size
  69.         667  bytes sent via SQL*Net to client
  70.         404  bytes received via SQL*Net from client
  71.           1  SQL*Net roundtrips to/from client
  72.           1  sorts (memory)
  73.           0  sorts (disk)
  74.           0  rows processed

  75. SQL>
  76. SQL> SQL> set linesize 10000
  77. SQL> @query1
  78. SQL> set echo on
  79. SQL>
  80. SQL> select /*LOAD_AUTO*/ * from sh.sales where quantity_sold > 40 order by prod_id;

  81. no rows selected


  82. Execution Plan
  83. ----------------------------------------------------------
  84. Plan hash value: 899219946

  85. -----------------------------------------------------------------------------------------------------------------------
  86. | Id  | Operation                            | Name              | Rows  | Bytes | Cost (%CPU)| Time     | Pstart| Pstop |
  87. -----------------------------------------------------------------------------------------------------------------------
  88. |   0 | SELECT STATEMENT                    |                      |     1 |    29 |  2883        (1)| 00:00:35 |       |       |
  89. |   1 |  SORT ORDER BY                            |                      |     1 |    29 |  2883        (1)| 00:00:35 |       |       |
  90. |   2 |   PARTITION RANGE ALL                    |                      |     1 |    29 |  2882        (1)| 00:00:35 |     1 |    28 |
  91. |*  3 |    TABLE ACCESS BY LOCAL INDEX ROWID| SALES              |     1 |    29 |  2882        (1)| 00:00:35 |     1 |    28 |
  92. |   4 |     BITMAP CONVERSION TO ROWIDS     |                      |       |       |            |              |       |       |
  93. |   5 |      BITMAP INDEX FULL SCAN            | SALES_PROMO_BIX |       |       |            |              |     1 |    28 |
  94. -----------------------------------------------------------------------------------------------------------------------

  95. Predicate Information (identified by operation id):
  96. ---------------------------------------------------

  97.    3 - filter("QUANTITY_SOLD">40)


  98. Statistics
  99. ----------------------------------------------------------
  100.           0  recursive calls
  101.           0  db block gets
  102.        2030  consistent gets
  103.           0  physical reads
  104.           0  redo size
  105.         667  bytes sent via SQL*Net to client
  106.         404  bytes received via SQL*Net from client
  107.           1  SQL*Net roundtrips to/from client
  108.           1  sorts (memory)
  109.           0  sorts (disk)
  110.           0  rows processed

  111. SQL>
  112. SQL> @query1
  113. SQL> set echo on
  114. SQL>
  115. SQL> select /*LOAD_AUTO*/ * from sh.sales where quantity_sold > 40 order by prod_id;

  116. no rows selected


  117. Execution Plan
  118. ----------------------------------------------------------
  119. Plan hash value: 899219946

  120. -----------------------------------------------------------------------------------------------------------------------
  121. | Id  | Operation                            | Name              | Rows  | Bytes | Cost (%CPU)| Time     | Pstart| Pstop |
  122. -----------------------------------------------------------------------------------------------------------------------
  123. |   0 | SELECT STATEMENT                    |                      |     1 |    29 |  2883        (1)| 00:00:35 |       |       |
  124. |   1 |  SORT ORDER BY                            |                      |     1 |    29 |  2883        (1)| 00:00:35 |       |       |
  125. |   2 |   PARTITION RANGE ALL                    |                      |     1 |    29 |  2882        (1)| 00:00:35 |     1 |    28 |
  126. |*  3 |    TABLE ACCESS BY LOCAL INDEX ROWID| SALES              |     1 |    29 |  2882        (1)| 00:00:35 |     1 |    28 |
  127. |   4 |     BITMAP CONVERSION TO ROWIDS     |                      |       |       |            |              |       |       |
  128. |   5 |      BITMAP INDEX FULL SCAN            | SALES_PROMO_BIX |       |       |            |              |     1 |    28 |
  129. -----------------------------------------------------------------------------------------------------------------------

  130. Predicate Information (identified by operation id):
  131. ---------------------------------------------------

  132.    3 - filter("QUANTITY_SOLD">40)

  133. Note
  134. -----
  135.    - SQL plan baseline "SQL_PLAN_6zsnd8f6zsd9g11df68d0" used for this statement


  136. Statistics
  137. ----------------------------------------------------------
  138.          15  recursive calls
  139.          13  db block gets
  140.        2037  consistent gets
  141.           0  physical reads
  142.        3040  redo size
  143.         667  bytes sent via SQL*Net to client
  144.         404  bytes received via SQL*Net from client
  145.           1  SQL*Net roundtrips to/from client
  146.           1  sorts (memory)
  147.           0  sorts (disk)
  148.           0  rows processed

  149. SQL>
  150. SQL>
复制代码

固定基线,固定执行计划:
  1. select  * from dba_sql_plan_baselines  spb where spb.sql_text
  2. like '%/*LOAD_STS*/%';

  3. ---------------------------

  4. declare  
  5.   v1 number;
  6.   begin
  7.      v1 := dbms_spm.alter_sql_plan_baseline(plan_name => 'SQL_PLAN_ahstbv1bu98ky11df68d0',
  8.      attribute_name => 'FIXED',attribute_value => 'YES');
  9.   end;
  10.      
复制代码
  1. SQL> show parameter optimizer

  2. NAME                                     TYPE         VALUE
  3. ------------------------------------ ----------- ------------------------------
  4. optimizer_capture_sql_plan_baselines boolean         FALSE
  5. optimizer_dynamic_sampling             integer         2
  6. optimizer_features_enable             string         11.2.0.1
  7. optimizer_index_caching              integer         0
  8. optimizer_index_cost_adj             integer         100
  9. optimizer_mode                             string         ALL_ROWS
  10. optimizer_secure_view_merging             boolean         TRUE
  11. optimizer_use_invisible_indexes      boolean         FALSE
  12. optimizer_use_pending_statistics     boolean         FALSE
  13. optimizer_use_sql_plan_baselines     boolean         TRUE
  14. SQL> set autot on
  15. SQL> @query2
  16. SQL> set echo on
  17. SQL>
  18. SQL> select /*LOAD_STS*/ * from sh.sales where quantity_sold > 40 order by prod_id;

  19. no rows selected


  20. Execution Plan
  21. ----------------------------------------------------------
  22. Plan hash value: 3803407550

  23. ----------------------------------------------------------------------------------------------
  24. | Id  | Operation             | Name  | Rows  | Bytes | Cost (%CPU)| Time     | Pstart| Pstop |
  25. ----------------------------------------------------------------------------------------------
  26. |   0 | SELECT STATEMENT     |             |           1 |          29 |         491   (3)| 00:00:06 |             |             |
  27. |   1 |  SORT ORDER BY             |             |           1 |          29 |         491   (3)| 00:00:06 |             |             |
  28. |   2 |   PARTITION RANGE ALL|             |           1 |          29 |         490   (2)| 00:00:06 |           1 |          28 |
  29. |*  3 |    TABLE ACCESS FULL | SALES |           1 |          29 |         490   (2)| 00:00:06 |           1 |          28 |
  30. ----------------------------------------------------------------------------------------------

  31. Predicate Information (identified by operation id):
  32. ---------------------------------------------------

  33.    3 - filter("QUANTITY_SOLD">40)

  34. Note
  35. -----
  36.    - SQL plan baseline "SQL_PLAN_ahstbv1bu98ky54bc8843" used for this statement


  37. Statistics
  38. ----------------------------------------------------------
  39.          22  recursive calls
  40.          13  db block gets
  41.        1728  consistent gets
  42.           0  physical reads
  43.        3048  redo size
  44.         667  bytes sent via SQL*Net to client
  45.         404  bytes received via SQL*Net from client
  46.           1  SQL*Net roundtrips to/from client
  47.           1  sorts (memory)
  48.           0  sorts (disk)
  49.           0  rows processed

  50. SQL>
  51. SQL> @query2
  52. SQL> set echo on
  53. SQL>
  54. SQL> select /*LOAD_STS*/ * from sh.sales where quantity_sold > 40 order by prod_id;

  55. no rows selected


  56. Execution Plan
  57. ----------------------------------------------------------
  58. Plan hash value: 899219946

  59. -----------------------------------------------------------------------------------------------------------------------
  60. | Id  | Operation                            | Name              | Rows  | Bytes | Cost (%CPU)| Time     | Pstart| Pstop |
  61. -----------------------------------------------------------------------------------------------------------------------
  62. |   0 | SELECT STATEMENT                    |                      |     1 |    29 |  2883        (1)| 00:00:35 |       |       |
  63. |   1 |  SORT ORDER BY                            |                      |     1 |    29 |  2883        (1)| 00:00:35 |       |       |
  64. |   2 |   PARTITION RANGE ALL                    |                      |     1 |    29 |  2882        (1)| 00:00:35 |     1 |    28 |
  65. |*  3 |    TABLE ACCESS BY LOCAL INDEX ROWID| SALES              |     1 |    29 |  2882        (1)| 00:00:35 |     1 |    28 |
  66. |   4 |     BITMAP CONVERSION TO ROWIDS     |                      |       |       |            |              |       |       |
  67. |   5 |      BITMAP INDEX FULL SCAN            | SALES_PROMO_BIX |       |       |            |              |     1 |    28 |
  68. -----------------------------------------------------------------------------------------------------------------------

  69. Predicate Information (identified by operation id):
  70. ---------------------------------------------------

  71.    3 - filter("QUANTITY_SOLD">40)

  72. Note
  73. -----
  74.    - SQL plan baseline "SQL_PLAN_ahstbv1bu98ky11df68d0" used for this statement


  75. Statistics
  76. ----------------------------------------------------------
  77.          28  recursive calls
  78.          21  db block gets
  79.        2050  consistent gets
  80.           2  physical reads
  81.        3056  redo size
  82.         667  bytes sent via SQL*Net to client
  83.         404  bytes received via SQL*Net from client
  84.           1  SQL*Net roundtrips to/from client
  85.           1  sorts (memory)
  86.           0  sorts (disk)
  87.           0  rows processed

  88. SQL>
  89. SQL>
复制代码





回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|Botang唐波's Oracle Station   

GMT+8, 2018-11-13 11:05 , Processed in 0.090792 second(s), 24 queries .

快速回复 返回顶部 返回列表