• dbms_advisor 手动生成段顾问建议!


    执行包需要dbms_advisor权限:

    [sql] view plain copy
     
    1. sys@ORCL> grant advisor to u1;  
    2.   
    3. 授权成功。  

    创建段顾问任务,指定create_task的advisor_name参数为“段顾问”。查询dba_advisor_definitions来获得所有有效的顾问列表。

    [sql] view plain copy
     
    1. u1@ORCL> select * from dba_advisor_definitions;  
    2.   
    3. ADVISOR_ID ADVISOR_NAME                     PROPERTY  
    4. ---------- ------------------------------ ----------  
    5.          1 ADDM                                    1  
    6.          2 SQL Access Advisor                    271  
    7.          3 Undo Advisor                            1  
    8.          4 SQL Tuning Advisor                    935  
    9.          5 Segment Advisor                         3  
    10.          6 SQL Workload Manager                    0  
    11.          7 Tune MView                             31  
    12.          8 SQL Performance Analyzer              935  
    13.          9 SQL Repair Advisor                    679  
    14.         10 Compression Advisor                     3  
    15.   
    16. 已选择10行。  

    手动执行段顾问:

    [sql] view plain copy
     
    1. sys@ORCL> DECLARE  
    2.   2    my_task_id   number;  
    3.   3    obj_id       number;  
    4.   4    my_task_name varchar2(100);  
    5.   5    my_task_desc varchar2(500);  
    6.   6  BEGIN  
    7.   7    my_task_name := 'BIG_TABLE Advice';  
    8.   my_task_desc := 'Manual Segment Advisor Run';  
    9.   9  ---------  
    10.  10  -- Step 1 创建一个任务  
    11.  11  ---------  
    12.  12    dbms_advisor.create_task (  
    13.  13    advisor_name => 'Segment Advisor',  
    14.  14    task_id      => my_task_id,  
    15.  15    task_name    => my_task_name,  
    16.  16    task_desc    => my_task_desc);  
    17.  17  ---------  
    18.  18  -- Step 2 为这个任务分配一个对象  
    19.  19  ---------  
    20.  20    dbms_advisor.create_object (  
    21.  21    task_name   => my_task_name,  
    22.  22    object_type => 'TABLE',  
    23.  23    attr1       => 'U1',  
    24.  24    attr2       => 'BIG_TABLE',  
    25.  25    attr3       => NULL,  
    26.  26    attr4       => NULL,  
    27.  27    attr5       => NULL,  
    28.  28    object_id   => obj_id);  
    29.  29  ---------  
    30.  30  -- Step 3 设置任务参数  
    31.  31  ---------  
    32.  32    dbms_advisor.set_task_parameter(  
    33.  33    task_name => my_task_name,  
    34.  34    parameter => 'recommend_all',  
    35.   value     => 'TRUE');  
    36. ---------  
    37.  37  -- Step 4 执行这个任务  
    38.  38  ---------  
    39.  39    dbms_advisor.execute_task(my_task_name);  
    40.  40  END;  
    41.  41  /   
    42.   
    43. PL/SQL 过程已成功完成。  
    44.   
    45. sys@ORCL> SELECT  
    46.   2   'Segment Advice --------------------------'|| chr(10) ||  
    47.   3   'TABLESPACE_NAME  : ' || tablespace_name   || chr(10) ||  
    48.   4   'SEGMENT_OWNER    : ' || segment_owner     || chr(10) ||  
    49.   5   'SEGMENT_NAME     : ' || segment_name      || chr(10) ||  
    50.   6   'ALLOCATED_SPACE  : ' || allocated_space   || chr(10) ||  
    51.   7   'RECLAIMABLE_SPACE: ' || reclaimable_space || chr(10) ||  
    52.   8   'RECOMMENDATIONS  : ' || recommendations   || chr(10) ||  
    53.   9   'SOLUTION 1       : ' || c1                || chr(10) ||  
    54.  10   'SOLUTION 2       : ' || c2                || chr(10) ||  
    55.  11   'SOLUTION 3       : ' || c3 Advice  
    56.  12  FROM  
    57.  13  TABLE(dbms_space.asa_recommendations('TRUE', 'TRUE', 'FALSE'));  
    58.   
    59. ADVICE  
    60. --------------------------------------------------------------------------------  
    61. Segment Advice --------------------------  
    62. TABLESPACE_NAME  : USERS  
    63. SEGMENT_OWNER    : QYV  
    64. SEGMENT_NAME     : BIG_TABLE  
    65. ALLOCATED_SPACE  : 125829120  
    66. RECLAIMABLE_SPACE: 81788928  
    67. RECOMMENDATIONS  : 压缩对象 QYV.BIG_TABLE, 估计可以节省 81788928 字节。  
    68. SOLUTION 1       : alter table "QYV"."BIG_TABLE"  compress for oltp  
    69. SOLUTION 2       : alter table "QYV"."BIG_TABLE"  move  
    70. SOLUTION 3       :  
    71.   
    72. Segment Advice --------------------------  
    73. TABLESPACE_NAME  : USERS  
    74. SEGMENT_OWNER    : U1  
    75. SEGMENT_NAME     : BIG_TABLE  
    76. ALLOCATED_SPACE  : 125829120  
    77. RECLAIMABLE_SPACE: 109535475  
    78. RECOMMENDATIONS  : 启用表 U1.BIG_TABLE 的行移动并执行收缩, 估计可以节省 10953547  
    79. 5 字节。  
    80. SOLUTION 1       : alter table "U1"."BIG_TABLE" shrink space  
    81. SOLUTION 2       : alter table "U1"."BIG_TABLE" shrink space COMPACT  
    82. SOLUTION 3       : alter table "U1"."BIG_TABLE" enable row movement  
    83.   
    84. Segment Advice --------------------------  
    85. TABLESPACE_NAME  : USERS  
    86. SEGMENT_OWNER    : U1  
    87. SEGMENT_NAME     : TT  
    88. ALLOCATED_SPACE  : 27262976  
    89. RECLAIMABLE_SPACE: 17314513  
    90. RECOMMENDATIONS  : 启用表 U1.TT 的行移动并执行收缩, 估计可以节省 17314513 字节。  
    91.   
    92. SOLUTION 1       : alter table "U1"."TT" shrink space  
    93. SOLUTION 2       : alter table "U1"."TT" shrink space COMPACT  
    94. SOLUTION 3       : alter table "U1"."TT" enable row movement  
    95.   
    96.   
    97. sys@ORCL> SELECT  
    98.   2   'Task Name        : ' || f.task_name  || chr(10) ||  
    99.   3   'Segment Name     : ' || o.attr2      || chr(10) ||  
    100.   4   'Segment Type     : ' || o.type       || chr(10) ||  
    101.   5   'Partition Name   : ' || o.attr3      || chr(10) ||  
    102.   6   'Message          : ' || f.message    || chr(10) ||  
    103.   7   'More Info        : ' || f.more_info TASK_ADVICE  
    104.   8  FROM dba_advisor_findings f  
    105.   9      ,dba_advisor_objects  o  
    106.  10  WHERE o.task_id = f.task_id  
    107.  11  AND o.object_id = f.object_id  
    108.  12  AND f.task_name like 'BIG_TABLE Advice'  
    109.  13  ORDER BY f.task_name;  
    110.   
    111. TASK_ADVICE  
    112. -----------------------------------------------------------------------------------------------------------------------------------  
    113. Task Name        : BIG_TABLE Advice  
    114. Segment Name     : BIG_TABLE  
    115. Segment Type     : TABLE  
    116. Partition Name   :  
    117. Message          : 启用表 U1.BIG_TABLE 的行移动并执行收缩, 估计可以节省 109535475 字节。  
    118. More Info        : 分配空间:125829120: 已用空间:16293645: 可回收空间:109535475:  
    119.   
    120. Task Name        : BIG_TABLE Advice  
    121. Segment Name     : BIG_TABLE  
    122. Segment Type     : TABLE  
    123. Partition Name   :  
    124. Message          : 启用表 U1.BIG_TABLE 的行移动并执行收缩, 估计可以节省 109535475 字节。  
    125. More Info        : 分配空间:125829120: 已用空间:16293645: 可回收空间:109535475:  


    删除一个任务:

    [sql] view plain copy
     
      1. u1@ORCL> exec dbms_advisor.delete_task('BIG_TABLE Advice');  
      2.   
      3. PL/SQL 过程已成功完成。 
  • 相关阅读:
    SPA项目开发之动态树以及数据表格和分页
    SPA项目开发之首页导航左侧菜单栏
    SPA项目开发之登录
    使用vue-cli搭建spa项目
    Splay 平衡树
    主席树(可持久化线段树 )
    P3195 [HNOI2008]玩具装箱TOY
    P2962 [USACO09NOV]灯Lights
    【hdu4405】AeroplaneChess
    HDU3853:LOOPS
  • 原文地址:https://www.cnblogs.com/youngerger/p/8660987.html
Copyright © 2020-2023  润新知