最近忙得不可開交,專案進入了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...