Oracle手艺生成段主张(Segment Advisor)ITeye - 凯发娱乐

Oracle手艺生成段主张(Segment Advisor)ITeye

2019-01-11 11:00:48 | 作者: 运莱 | 标签: 主张,手艺,参谋 | 浏览: 3024



一、描绘

从Oracle 10g开端,oracle引入了段参谋(Segment Advisor),用于检查数据库中是否有与存储空间相关的主张,而且从10gR2开端,oracle主动调度并运转一个段参谋作业,守时剖析数据库中的段,并将剖析成果放在内部表中。可是许多情况下,作为DBA,咱们都会将oracle自带的各种调度作业(计算信息搜集、段参谋、SQL参谋等等)禁用,从而经过手艺进行操控履行相似作业(或许为了节约资源)。因而许多情况下,咱们都没有用到段参谋这个十分有用的功用。这篇文章便是叙述在表目标和表空间等级经过手艺运转段参谋来生成段主张的办法。

二、效果

优化SQL句子时,能够协助咱们更精确的判别是否需求收回表内的碎片空间。假如不运转段参谋主张,咱们有必要得经过create table as select一张暂时表方法才干精确的得知是否有必要进行表空间收回,以及空间的收回率等等信息。
优化SQL句子时,能够协助咱们精确判别是否需求重建或许move表来消除表内的行链接。能够想想,假如没有这个主张,咱们又需求做多少作业来判别。
日常主动保护时,能够协助咱们主动发现表内碎片较多和行链接较严峻的表目标列表,有助于咱们提早处理,防止相似问题的发作。
三、段参谋的剖析成果类型

合适进行段缩短操作来收回空间的段
具有很多行链接的段
可能会从OLTP紧缩中获益的段
四、手艺运转段参谋过程

创立一个段参谋使命
为这个使命分配一个目标(指定以表目标或许表空间等级来运转,一起拟定用户名和表名或许表空间名)
设置使命参数(履行段参谋履行时的一些参数,例如:运转时长约束参数、仅出产与空间相关主张/一切类型的目标生成主张)
履行这个使命
五、手艺运转段参谋的代码

declare
  my_task_id number;
  obj_id number;
  my_task_name varchar2(100);
  my_task_desc varchar2(500);
begin
  my_task_name :=advisor_test tab Advice;  --运转使命名,能够恣意指定,不过主张为有意义的称号
  my_task_desc :=Manual Segment Advisor Run;--运转使命描绘,能够恣意指定,不过主张为有意义的描绘
-----step 1
  /* 创立一个段参谋使命 */
  dbms_advisor.create_task(
  advisor_name = Segment Advisor,  --运转段参谋使命这个参数有必要指定为Segment Advisor
  task_id = my_task_id,
  task_name = my_task_name,
  task_desc = my_task_desc);
-----step 2
  /* 为这个使命分配一个目标 */
  dbms_advisor.create_object(
  task_name= my_task_name,
  object_type= TABLE,  --指定目标等级,假如为表目标则为TABLE,假如为表空间等级则为TABLESPACE
  attr1= DBMON,  ---假如在表目标等级运转,这个特点为用户名,表空间等级这个特点为表空间姓名
  attr2 = ADVISOR_TEST,  ---假如在表目标等级运转,这个特点为表名,表空间等级这个特点为null
  attr3 = NULL,
  attr4= null,
  attr5= null,
  object_id= obj_id);
-----step 3
/* 设置使命参数 */
  dbms_advisor.set_task_parameter(
  task_name = my_task_name,
/* 设置段参谋运转参数"ecommend_all"的值,为TRUE则为一切类型的目标的生成主张,为FALSE则仅生成与空间相关的主张 */
/* 另一个滚问运转参数"time_limit",拟定参谋运转的时刻约束,默认值为无约束 */
  parameter= recommend_all,  ---
  value= TRUE);
-----step 4
/* 履行这个使命 */
  dbms_advisor.execute_task(my_task_name);
end;
/

六、查询段参谋剖析成果的句子

(1)
select
  /* "|chr(13)||chr(10)"为windows渠道的换行符,假如是linux等其它渠道,请用"chr(10)"替代 */
  Task name  :||f.task_name||chr(13)||chr(10)|| 
  Segment name  :||o.attr2  ||chr(13)||chr(10)||
  Sement type  :||o.type  ||chr(13)||chr(10)||
  partition name:||o.attr3  ||chr(13)||chr(10)||
  Message  :||f.message  ||chr(13)||chr(10)||
  More info  :||f.more_info TASK_ADVICE
  from dba_advisor_findings f,dba_advisor_objects o
where o.task_id=f.task_id
  and o.object_id=f.object_id
  and f.task_name = advisor_test tab Advice
order by f.task_name;
(2)
经过查询TABLE(dbms_space.asa_recommendations(all_runs= TRUE,show_manual= TRUE,show_findings= FALSE))来检查主张;
第一个参数true表明运转每次运转成果,false表明最近一次的成果
第二个参数true表明回来手艺运转段参谋的成果,false表明回来主动运转段参谋的成果
第三个参数true表明仅显现剖析成果,false表明显现剖析成果和剖析主张
补白:事例中运用(1)句子来检查剖析成果
版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表凯发娱乐立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章