Tablo/şema istatistiklerini kilitle ve kilidi aç
OracleİstatistikKomut
-- Kilitle (auto stats job ve normal GATHER artik dokunmaz):
EXEC DBMS_STATS.LOCK_TABLE_STATS(ownname => 'MUSTERI_APP', tabname => 'SIPARIS');
EXEC DBMS_STATS.LOCK_SCHEMA_STATS(ownname => 'MUSTERI_APP');
-- Yalnizca bir partition: DBMS_STATS.LOCK_PARTITION_STATS('MUSTERI_APP', 'SATIS_PART', 'P2026_H1');
-- Kilitli olanlar:
SELECT owner, table_name, partition_name, stattype_locked
FROM dba_tab_statistics
WHERE owner = 'MUSTERI_APP' AND stattype_locked IS NOT NULL;
-- Kilitliyken bilincli toplama (ORA-20005 yerine):
EXEC DBMS_STATS.GATHER_TABLE_STATS('MUSTERI_APP', 'SIPARIS', force => TRUE);
-- Kilidi ac:
EXEC DBMS_STATS.UNLOCK_SCHEMA_STATS(ownname => 'MUSTERI_APP');
EXEC DBMS_STATS.UNLOCK_TABLE_STATS(ownname => 'MUSTERI_APP', tabname => 'SIPARIS');Ne yapar?
İstatistikleri değişmeye karşı kilitler; otomatik görev kilitli nesneleri atlar, tablo bazlı GATHER çağrısı ORA-20005 verir. force=>TRUE kilidi delmeden toplama yapar.
Ne zaman kullanılır?
Gün içinde boşalıp dolan staging/geçici tablolar için temsilî istatistik sabitlemek, kritik tabloda planı istatistik değişimine karşı korumak, set edilmiş (DBMS_STATS.SET_TABLE_STATS) değerleri korumak için.
Dikkat
Lisans gerektirmez. Kilitli istatistikler zamanla gerçeklikten uzaklaşır ve cardinality hatalarına yol açar; kilitli nesneleri düzenli raporla. Şema kilidi şemaya sonradan eklenen tabloları kapsamaz. Kilitli tabloda index oluşturma/rebuild ile otomatik index istatistiği de toplanmaz.