知识大全 定时执行存储过程对库表及索引进行分析
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#如何执行存储过程 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 以Oracle为例其它数据库
执行oracle存储过程如下: OracleConnectioncon=newOracleConnection(strcon); &
数据库基础:存储过程中如何执行带输出参数的动态SQL 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
在Oracle数据库中数据库管理员不仅在索引的选择上要花费一定的精力而且在索引的存储上也有所讲究因为索引与表一样不仅需要在数据字典中保存索引的定义还需要在表空间中为他分配实际的存储空间并为其设置存
降序索引 降序索引是i里面新出现的一种索引是B*Tree的另一个衍生物它的变化就是列在索引中的储存方式从升序变成了降序在某些场合下降序索引将会起作用举个例子我们来查询一张表并进行排序 SQL&
当索引的碎片过多时会影响执行查询的速度从而影响到我们的工作效率这时候采取的最有利的措施莫过于重建索引了本文主要介绍了Oracle数据库中检查索引碎片并重建索引的过程接下来我们就开始介绍这一过程
cha138/Article/program/MySQL/201311/29549
用存储过程创建数据表:创建时注意必须添加authidcurrent_user如果创建的表已存在存储过程继续执行但如不不加此关键语句存储过程将出现异常这个语句相当于赋权限例创建语句如下 复制代码代