dbms_advisor 手动生成段顾问建议!

Posted 杨哥哥

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了dbms_advisor 手动生成段顾问建议!相关的知识,希望对你有一定的参考价值。

执行包需要dbms_advisor权限:

 

[sql] view plain copy
 
  1. [email protected]grant advisor to u1;  
  2.   
  3. 授权成功。  

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

 

 

[sql] view plain copy
 
  1. [email protected]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. [email protected]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. [email protected]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. [email protected]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. [email protected]exec dbms_advisor.delete_task(‘BIG_TABLE Advice‘);  
    2.   
    3. PL/SQL 过程已成功完成。 

以上是关于dbms_advisor 手动生成段顾问建议!的主要内容,如果未能解决你的问题,请参考以下文章

ad16为啥原理图和pcb图自动改编号

通过段调优顾问帮助解决行链接问题

ad20导出bom没有Value属性

通过段调优顾问回收大表的分配空间和高水位线

Altium AD20原理图页码自动编号,右下角标题栏

Exchange-清理AD上残留Exchange信息