Statistiken entsperren / ORA-20005: object statistics are locked (stattype = ALL)

Aktueller Fall: Nach dem Import eines Schemas aus einer anderen Datenbank (per DataPump) waren alle Tabellen und Daten wie gewünscht vorhanden.
Die Statistiken wurden vom alten System übernommen. Dies ist grundsätzlich auch sinnvoll, da die Daten ja unverändert übernommen wurden. Hier waren aber "frische" Statistiken gewünscht.
Problem: Es wurden keine neuen Statistiken erstellt.
Die Prüfung hat ergeben, dass die übernommenen Statistiken gelocked waren (stattype_locked = 'All').
Eine einfache Neuerstellung meldete: ORA-20005: object statistics are locked (stattype = ALL).
Nach dem Entsperren mit dbms_stats.unlock_schema_stats lief die Neuerstellung problemlos durch.

Hier der Code dazu:

-- Prüfen, ob Statistiken gelocked sind (= stattype_locked nicht leer)
select table_name, stattype_locked from user_tab_statistics;

-- Statistiken ggfs. entsperren
exec dbms_stats.unlock_schema_stats('abc');

-- Statistiken aktualisieren
begin
sys.DBMS_STATS.GATHER_SCHEMA_STATS(
     OwnName => 'abc'
   , Estimate_Percent => DBMS_STATS.AUTO_SAMPLE_SIZE
   , Method_Opt => 'FOR ALL COLUMNS SIZE 1'
   , DEGREE => DBMS_STATS.AUTO_DEGREE
   , Cascade => true --> ggfs. IDX mitnehmen
   , GRANULARITY => 'ALL' --> Partition- und Global-Statistik aktualisieren
   , options => 'GATHER AUTO');
end;
/

Hinweis: Die Erstellung der Statistiken kann - je nach Datenmenge - wirklich lange dauern...

Kommentare

Beliebte Posts aus diesem Blog

PGA unter Oracle 11g

trunc(sysdate) - nette Spiele mit dem Datum

Datapump - Verzeichnis erstellen