【TUNE_ORACLE】定製化收集統計資訊SQL參考

Attack_on_Jager發表於2021-08-02

實驗環境

搭建平臺:VMware Workstation

OS:RHEL 6.10

Grid&DB:Oracle 11.2.0.4


SQL參考

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  --超過5G的大表收集比例一般不超過30%

              30

           end as percent,

           4 as degree

      from (select owner,

                   segment_name,

                   sum(bytes / 1024 / 1024 / 1024) segment_size

              from dba_segments

             where owner = 'TEST'

               and segment_name in

                   (select table_name

                      from dba_tab_statistics

                     where (last_analyzed is null or stale_stats = 'YES')

                       and owner = 'TEST')

             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;

/

 

單獨拆分成一條關鍵語句:

SQL> exec dbms_stats.gather_table_stats(ownname  => 'test',tabname  =>  'tab',estimate_percent  =>  50,method_opt  =>  'for all columns size auto',no_invalidate => false,degree  =>  6,cascade  => true);


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69992972/viewspace-2784605/,如需轉載,請註明出處,否則將追究法律責任。

相關文章