Oracle 统计信息备份/表分析
众所周知,统计信息直接影响到Oracle优化器最后的执行计划,所以定期收集统计信息成为DBA一项常规的工作,但是,对于一些大表,比如数据量超过几千万条,表分析后却有可能会导致应用系统一些SQL执行计划变差,比如出现大量的全表扫,严重影响数据库性能.如果出现这种情况,一种方法是对找一张该查询涉及到的小表,执行grant select on table_name to public操作,然后再看执行计划是否变好,有时可能这个动作要尝试多次.如果实在不行,只有导回原先的统计信息。这就需要分析之前对统计信息作过备份。下面阐述备份的操作: conn perfstat/perf
在Oracle中创建定时任务以定期分析方案对象---dbms_stats.gather_schema_stats
--每周六23:00执行分析 create by Rainny Zhong--这个脚本须以sys用户执行,执行前先看说明create or replace procedure STATS_SCHEMA is begin dbms_stats.gather_schema_stats(ownname=> 'LINMARKUTA816' , cascade=> TRUE); -- dbms_stats.gather_schema_stats(ownname=> 'XPC816UPGRADEDEV' , cascade=> TRUE); -- dbms_stats.gather_schema_stats(ownname=> 'XPC816UPGRADEQA' , cascade=> TRUE); --用户可在此加入或替代想要定期分析的schema
oracle 定期分析表
ORACLE9以后如果你想用基于成本的优化器,需要定期(每周)对数据库里的表和索引做analyze分析。 数据库参数文件initorasid.ora里默认的优化器 optimizer_mode= choose 你要改成 optimizer_mode =first_rows (OLTP系统) optimizer_mode =all_rows (DSS 系统) 下面是一个可以在UNIX环境自动生成分析表和索引的脚本analyze.sh (sys用户的密码password要根据情况修改。) ---------------------------------------------------------------------------------------