知识大全 定时执行存储过程对库表及索引进行分析

Posted 索引

篇首语:愿你一生努力,一生被爱。想要的都拥有,得不到的都释怀。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 定时执行存储过程对库表及索引进行分析相关的知识,希望对你有一定的参考价值。

  参考了一下别人的代码又补充了一下写了一个存储过程     分析某一用户下面的表及索引     运行完毕后然后设置job即可     create or replace procedure DBA_ANAYZE_SCHEMA(v_USERNAME VARCHAR )  AS  v_per number( ) DEFAULT ;  v_start number := dbms_utility get_time;   v_end  number;  begin  /*********************    该存储过程主要是对表及索引进行分析     对于包含有子分区sub partition的表需要注意一下granularity参数 具体参考        granularity the granularity of statistics to collect (only pertinent      if the table is partitioned)      DEFAULT gather global and partition level statistics      SUBPARTITION gather subpartition level statistics      PARTITION gather partition level statistics      GLOBAL gather global statistics      ALL gather all (subpartition partition and global) statistics  *******************************/  for rec in (select segment_name segment_type ceil(sum(bytes)/ / ) segment_size  from user_segments where SEGMENT_NAME NOT LIKE TMP_%   group by segment_name segment_type)  loop  CASE WHEN rec segment_type = INDEX THEN  case  when rec segment_size <= then  v_per := ;  when rec segment_size <= then  v_per := ;  else  v_per := ;  end case;  begin   delete old schema index statistics;  DBMS_STATS delete_index_stats(ownname => upper(v_USERNAME)   indname => rec segment_name);  exception  when others then  null;  end;  begin   analyze index pute statistics;  dbms_stats gather_index_stats(ownname=>upper(v_USERNAME)   自己改一下  INDNAME=>rec segment_name   estimate_percent =>v_per   degree =>      );  exception  when others then  null;  end;   dbms_output put_line(rec segment_name|| ||rec segment_size|| m ||ceil((dbms_utility get_time v_start)/ )|| s );  v_start := dbms_utility get_time;  WHEN rec segment_type = TABLE then     case when rec segment_size <= then  v_per := ;  when rec segment_size <= then  v_per := ;  else  v_per := ;  end case;    begin   delete table analyze statistics  dbms_stats delete_table_stats(ownname =>upper(v_USERNAME)   tabname =>rec segment_name);  exception  when others then  null;  end;    begin   analyze table pute statistics;  dbms_stats gather_table_stats(OWNNAME=>upper(v_USERNAME)   TABNAME=>rec segment_name   ESTIMATE_PERCENT=>v_per   cascade => TRUE   granularity => ALL   degree =>   METHOD_OPT=> FOR ALL INDEXED COLUMNS );  exception  when others then  null;  end;   dbms_output put_line(rec segment_name|| ||rec segment_size|| m ||ceil((dbms_utility get_time v_start)/ )|| s );  v_start := dbms_utility get_time;  WHEN rec segment_type = TABLE PARTITION then  case when rec segment_size <= then  v_per := ;  when rec segment_size <= then  v_per := ;  else  v_per := ;  end case;  begin   delete table analyze statistics  dbms_stats delete_table_stats(ownname =>upper(v_USERNAME)   tabname =>rec segment_name);  exception  when others then  null;  end;  begin   analyze table pute statistics;  dbms_stats gather_table_stats(OWNNAME=>upper(v_USERNAME)   TABNAME=>rec segment_name   ESTIMATE_PERCENT=>v_per   cascade => TRUE   granularity => ALL   degree => DBMS_STATS DEFAULT_DEGREE   METHOD_OPT=> FOR ALL INDEXED COLUMNS );  exception  when others then  null;  end;    WHEN rec segment_type = INDEX PARTITION then  case  when rec segment_size <= then  v_per := ;  when rec segment_size <= then  v_per := ;  else  v_per := ;  end case;  begin   delete old schema index statistics;  DBMS_STATS delete_index_stats(ownname => upper(v_USERNAME)   indname => rec segment_name);  exception  when others then  null;  end;    begin   analyze index pute statistics;  dbms_stats gather_index_stats(ownname=>upper(v_USERNAME)   自己改一下  INDNAME=>rec segment_name   estimate_percent =>v_per   degree =>dbms_stats DEFAULT_DEGREE  );  exception  when others then  null;  end;       dbms_output put_line(rec segment_name|| ||rec segment_size|| m ||ceil((dbms_utility get_time v_start)/ )|| s );  v_start := dbms_utility get_time;  /** WHEN rec segment_type = LOBINDEX then  v_start := dbms_utility get_time;  WHEN rec segment_type = LOBSEGMENT then  v_start := dbms_utility get_time;**/  END CASE;  end loop;  end; cha138/Article/program/Oracle/201311/17964

相关参考

要等到定时器的定时时间到才会往下执行程序吗?

  定时器的定时功能是用PLC的系统程序实现的,定时过程与用户程序的扫描执行是并行的〈即同时进行的〉,定时器的定时过程不会影响用户程序的扫描工作过程。  假设PLC的扫描周期为10ms,某定时器的时间

要等到定时器的定时时间到才会往下执行程序吗?

  定时器的定时功能是用PLC的系统程序实现的,定时过程与用户程序的扫描执行是并行的〈即同时进行的〉,定时器的定时过程不会影响用户程序的扫描工作过程。  假设PLC的扫描周期为10ms,某定时器的时间

知识大全 C#如何执行存储过程

C#如何执行存储过程  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  以Oracle为例其它数据库

知识大全 ado.net执行oracle 存储过程

 执行oracle存储过程如下:   OracleConnectioncon=newOracleConnection(strcon);  &

知识大全 存储过程中如何执行带输出参数的动态SQL

数据库基础:存储过程中如何执行带输出参数的动态SQL  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

知识大全 索引存储关系到数据库的运行效率

  在Oracle数据库中数据库管理员不仅在索引的选择上要花费一定的精力而且在索引的存储上也有所讲究因为索引与表一样不仅需要在数据字典中保存索引的定义还需要在表空间中为他分配实际的存储空间并为其设置存

知识大全 各种索引的结构分析降序索引和位图索引

  降序索引  降序索引是i里面新出现的一种索引是B*Tree的另一个衍生物它的变化就是列在索引中的储存方式从升序变成了降序在某些场合下降序索引将会起作用举个例子我们来查询一张表并进行排序  SQL&

知识大全 oracle数据库如何重建索引

  当索引的碎片过多时会影响执行查询的速度从而影响到我们的工作效率这时候采取的最有利的措施莫过于重建索引了本文主要介绍了Oracle数据库中检查索引碎片并重建索引的过程接下来我们就开始介绍这一过程  

知识大全 存储过程优缺点分析

cha138/Article/program/MySQL/201311/29549

知识大全 oracle存储过程创建表分区实例

  用存储过程创建数据表:创建时注意必须添加authidcurrent_user如果创建的表已存在存储过程继续执行但如不不加此关键语句存储过程将出现异常这个语句相当于赋权限例创建语句如下  复制代码代