Umgang mit gesicherten Statistiken

Posted by: on Jun 17, 2012 | No Comments

Standardmäßig werden Statistiken, die Grundlage des Optimizers, regelmäßig in der Oracle DB aktualisiert. Die gesicherten Statistiken verbleiben zur Wiederherstellung in der DB.

Diese gespeicherten Statistiken können den SYSAUX Tablespace unter umständen auf mehrere Gigabyte ansteigen lassen. Als Standardwert werden die Statistiken 31 Tage lang gespeichert. Je nach dem welche Einstellungen man zum Neuberechnen der Statistiken man gewählt hat, kann es sinnvoll sein den Wert von 31 Tagen zu verkleinern.

Das Package dbms_stats hilft bei den Arbeiten.
 
Hier eine Abfrage, wie lange die Statistiken momentan gehalten werden:

SQL> select dbms_stats.get_stats_history_retention from dual;

GET_STATS_HISTORY_RETENTION
---------------------------
                         31

 
Hiermit wird die Vorhaltezeit gesetzt:

SQL> exec dbms_stats.alter_stats_history_retention(10);

PL/SQL-Prozedur erfolgreich abgeschlossen.

 
Welche Statistiken sind noch verfügbar bzw. wurden noch nicht gelöscht?

SQL> select dbms_stats.get_stats_history_availability from dual;

GET_STATS_HISTORY_AVAILABILITY
-------------------------------------------------------------
18.05.12 00:22:43,483000000 +02:00

 
Statistiken löschen die älter sind als z.B. 20 Tage:

SQL> exec DBMS_STATS.PURGE_STATS(SYSDATE-20);

EMPFEHLUNG: In größeren Umgebungen sollte das Löschen der Statistiken zu einem Zeitpunkt gewählt werden, in dem die Datenbank keine performanten Aufgaben zu erledigen hat. Das Löschen braucht doch viele Ressourcen.

Nach setzten dieser Einstellungen und ggf. löschen von gespeicherten Statistiken sollten die Tabellen und Indizes im SYSAUX Tablespace noch mit einem rebuild „verkleinert“ werden, in denen die Statistiken gehalten wurden. Diese beginnen oft mit WRI$_OPTSTAT_* und I_WRI$_OPTSTAT_*.