暂无图片
暂无图片
3
暂无图片
暂无图片
暂无图片

对用户下所有没有统计信息或者统计信息过期的表进行收集统计信息脚本

原创 杜伟 2024-07-05
193

对用户对用户下所有没有统计信息或者统计信息过期的表进行收集统计信息脚本

注意degree我这里设置为4的,及并行收集

declare
  cursor stale_table is
    select owner,
           segment_name,
           case
             when segment_size < 1 then
              100
             when segment_size >= 1 and segment_size <= 5 then
              50
             when segment_size > 5 then
              30
           end as percent,
           4 as degree            --设置收集统计信息的并行度
      from (select owner,
                   segment_name,
                   sum(bytes / 1024 / 1024 / 1024) segment_size
              from DBA_SEGMENTS
             where owner = 'SCOTT'
               and segment_name in
                   (select table_name
                      from DBA_TAB_STATISTICS
                     where (last_analyzed is null or stale_stats = 'YES')
                       and owner = 'SCOTT' AND STATTYPE_LOCKED IS NULL)         --修改自己的用户名
             group by owner, segment_name);
begin
  dbms_stats.flush_database_monitoring_info;
  for stale in stale_table loop
    dbms_stats.gather_table_stats(ownname          => stale.owner,
                                  tabname          => stale.segment_name,
                                  estimate_percent => stale.percent,
                                  method_opt       => 'for all columns size repeat',        --表示当前有哪些列收集了直方图,现在就对哪些列收集直方图
                                  degree           => stale.degree,
                                  cascade          => true);
  end loop;
end;
/


「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论