İstatistikleri geçmişteki bir zamana geri yükle (restore)
OracleİstatistikKomut
-- 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ı).