DBAtlas · Veritabanı operasyon atlası

İstatistikleri geçmişteki bir zamana geri yükle (restore)

Oracleİstatistik

Komut

-- 1) Saklama suresi ve geri donulebilecek en eski an:
SELECT DBMS_STATS.GET_STATS_HISTORY_RETENTION    AS retention_days,
       DBMS_STATS.GET_STATS_HISTORY_AVAILABILITY AS oldest_available
FROM   dual;

-- 2) Tablonun istatistik gecmisi:
SELECT table_name, partition_name,
       TO_CHAR(stats_update_time,'YYYY-MM-DD HH24:MI:SS TZH:TZM') AS stats_update_time
FROM   dba_tab_stats_history
WHERE  owner = 'MUSTERI_APP' AND table_name = 'SATISLAR'
ORDER  BY stats_update_time DESC;

-- 3) Plan bozulmadan onceki ana geri don:
BEGIN
  DBMS_STATS.RESTORE_TABLE_STATS(
    ownname         => 'MUSTERI_APP',
    tabname         => 'SATISLAR',
    as_of_timestamp => TIMESTAMP '2026-10-07 22:00:00 +03:00',
    no_invalidate   => FALSE);
END;
/
-- Sema geneli: DBMS_STATS.RESTORE_SCHEMA_STATS('MUSTERI_APP', <timestamp>)

-- Saklama suresini degistir (gun):
-- EXEC DBMS_STATS.ALTER_STATS_HISTORY_RETENTION(31);

Ne yapar?

DBMS_STATS her toplamadan önce eski istatistikleri SYSAUX'ta saklar (varsayılan 31 gün). RESTORE_* prosedürleri tablo/şema istatistiklerini verilen andaki haline döndürür; no_invalidate=>FALSE ile cursor'lar hemen yeniden parse edilir.

Ne zaman kullanılır?

Gece istatistik toplaması sonrası plan regresyonu oluştuğunda en hızlı geri dönüş yolu olarak; değişikliğin istatistik kaynaklı olup olmadığını test etmek için.

Dikkat

Lisans gerektirmez. Kilitli istatistikler restore edilemez (önce unlock). Restore sonrası bir sonraki otomatik toplama yeni istatistikleri tekrar getirir; kalıcı çözüm için tablo için tercih ayarla, kilitle veya SQL Plan Baseline kullan. Uzun retention SYSAUX'u büyütür (WRI$_OPTSTAT_* tabloları).

DBAtlas'ta aç →

İlgili