DBAtlas · Veritabanı operasyon atlası

Stale istatistikleri bul ve tablo bazlı istatistik tercihlerini (prefs) ayarla

Oracleİstatistik

Komut

-- 1) DML sayaclarini sozluge yaz ve stale olanlari listele:
EXEC DBMS_STATS.FLUSH_DATABASE_MONITORING_INFO;

SELECT owner, table_name, partition_name, num_rows,
       TO_CHAR(last_analyzed,'YYYY-MM-DD HH24:MI') AS last_analyzed,
       stale_stats, stattype_locked
FROM   dba_tab_statistics
WHERE  owner = 'MUSTERI_APP'
  AND  (stale_stats = 'YES' OR last_analyzed IS NULL)
ORDER  BY table_name, partition_name;

SELECT table_name, partition_name, inserts, updates, deletes, truncated
FROM   dba_tab_modifications
WHERE  table_owner = 'MUSTERI_APP';

-- 2) Tablo bazli tercihler (auto stats job ve manuel GATHER bunlari kullanir):
EXEC DBMS_STATS.SET_TABLE_PREFS('MUSTERI_APP', 'SATISLAR', 'STALE_PERCENT', '5');
EXEC DBMS_STATS.SET_TABLE_PREFS('MUSTERI_APP', 'SATISLAR', 'METHOD_OPT', 'FOR ALL COLUMNS SIZE AUTO FOR COLUMNS SIZE 254 MUSTERI_ID');
EXEC DBMS_STATS.SET_TABLE_PREFS('MUSTERI_APP', 'SATISLAR', 'DEGREE', '4');

SELECT DBMS_STATS.GET_PREFS('STALE_PERCENT', 'MUSTERI_APP', 'SATISLAR') AS stale_pct FROM dual;
SELECT table_name, preference_name, preference_value
FROM   dba_tab_stat_prefs WHERE owner = 'MUSTERI_APP';

-- 3) Yalniz stale olanlari topla:
EXEC DBMS_STATS.GATHER_SCHEMA_STATS(ownname => 'MUSTERI_APP', options => 'GATHER STALE');
-- Tercihi geri al: EXEC DBMS_STATS.DELETE_TABLE_PREFS('MUSTERI_APP', 'SATISLAR', 'STALE_PERCENT');

Ne yapar?

Tablo değişiklik oranı STALE_PERCENT'i (varsayılan %10) aşınca istatistik stale sayılır. Tercihler (prefs) tablo bazında örnekleme, histogram, paralellik ve stale eşiğini kalıcı kılar; böylece gece otomatik istatistik görevi de aynı kuralları uygular.

Ne zaman kullanılır?

Büyük tablolarda %10 eşiği geç kaldığında, belirli kolonlara histogram zorunlu kılınacaksa, toplama stratejisini script yerine sözlükte tanımlamak için.

Dikkat

Lisans gerektirmez. Manuel GATHER çağrısında açıkça verilen parametre tercihin önüne geçer. METHOD_OPT değişikliği histogramları ekler/kaldırır ve planları değiştirebilir. DBA_TAB_MODIFICATIONS ancak flush sonrası güncel olur (otomatik flush ~15 dk'da bir).

DBAtlas'ta aç →

İlgili