DBA任務 確保統計資訊準確性

2021-08-25 19:08:25 字數 1506 閱讀 1401

最近忙得不可開交,專案進入了cut over階段,壓力之大,前所未有。我的任務就是,負責優化long running的sql,讓其可以在3小時以內完成。昨天就出現乙個long running 的sql,它跑了16小時,經過2小時的奮鬥,終於把它優化到了2小時10分鐘。

雖然那個long running sql 與統計資訊無關,但是我還是提出要確保統計資訊的準確性。作為dba,我必須定製出收集統計資訊的策略,以及相關指令碼,下面就是乙個關於確保統計資訊準確性的指令碼,拿出來分享一下。

注意:該指令碼適用於資料倉儲,oracle11g,如果你是oltp,oracle10g,請自己修改某些條件。

declare

cursor stale_table is

select owner,

segment_name,

case

when size_gb < 0.5 then

30when size_gb >= 0.5 and size_gb < 1 then

20when size_gb >= 1 and size_gb < 5 then

10when size_gb >= 5 and size_gb < 10 then

5when size_gb >= 10 then

1end as percent,

8 as degree

from (select owner,

segment_name,

sum(bytes / 1024 / 1024 / 1024) size_gb

from dba_segments

where owner = 'adwu_optima_ap11'

and segment_name in

(select /*+ unnest */ distinct table_name

from dba_tab_statistics

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

and owner = 'adwu_optima_ap11')

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 auto',

degree => 8,

granularity => 'all',

cascade => true);

end loop;

end;

/根據實際情況,可以選擇每天晚上在資料庫不繁忙的時候執行上述指令碼。

DBA任務 確保統計資訊準確性

最近忙得不可開交,專案進入了cut over階段,壓力之大,前所未有。我的任務就是,負責優化long running的sql,讓其可以在3小時以內完成。昨天就出現乙個long running 的sql,它跑了16小時,經過2小時的奮鬥,終於把它優化到了2小時10分鐘。雖然那個long running...

DBA任務 確保統計資訊準確性

最近忙得不可開交,專案進入了cut over階段,壓力之大,前所未有。我的任務就是,負責優化long running的sql,讓其可以在3小時以內完成。昨天就出現乙個long running 的sql,它跑了16小時,經過2小時的奮鬥,終於把它優化到了2小時10分鐘。雖然那個long running...

FreeRTOS任務執行時間資訊統計

以下兩個函式都是任務執行時間資訊統計函式 include sys.h include delay.h include usart.h include led.h include timer.h include key.h include string.h include freertos.h inc...