Oracle Database Statistik

Wenn es um die Statistiken innerhalb der Oracle-Datenbank kommt, ichnformationen ist Macht. Das Wort übersetzt viele verschiedene Möglichkeiten, aber die allgemeine Idee ist, dass die mehr wissen Sie über jemanden oder etwas, desto effektiver können Sie mit, dass jemand oder etwas arbeiten.

Für eine Datenbank, auf der obersten Ebene auszuführen, müssen Sie die Datenbank-Engine Informationen über Ihre Daten zu geben. Daten über Daten aufgerufen Metadaten. Oracle-Statistiken ist Metadaten über Ihre Daten. Es gibt verschiedene Arten von Statistiken, dass Oracle verwendet:

  • Objektstatistiken: Diese Statistiken enthalten Informationen über Ihre aktuellen Daten. Zum Beispiel, wie viele Zeilen hat eine Tabelle? Oder, was die Eindeutigkeit der Daten innerhalb einer Spalte?

  • Systemstatistiken: Diese Statistiken enthalten Informationen über den Betriebsmittelverbrauch der Datenbank wie, wie beschäftigt sind die CPUs oder was ist die Lese- / Schreibzeit der Platten?

  • Feste Tabellenstatistiken: Diese Statistiken enthalten Informationen über die Datenbank selbst mit einem primären Fokus auf die interne V $ Tabellen oder Datenwörterbuch.

Ganze Kapitel der Bücher wurden zum Sammeln von Statistiken gewidmet. Doch vor kurzem (seit Oracle 10g) Oracle hat einige Methoden intern in der Datenbank zur Verfügung gestellt, die automatisch in das Sammeln Objekt Statistiken helfen. Tatsache ist, gibt es noch einige Dinge, Datenbank-Administratoren tun können mehr Informationen in die Hände von der Oracle-Datenbank zu erhalten, weil Systemstatistiken und feste Tabellenstatistiken sind noch nicht automatisch erfasst.

Zunächst einmal lassen Sie uns über das Sammeln von Systemstatistiken sprechen. Systemstatistiken werden von der Datenbank gesammelt. Die Datenbank wird mit einem Satz von generischen catchall Systemstatistiken, aber sie sind uns nicht wirklich viel Gutes tun wird. Sie sehen, Systemstatistiken, manchmal auch Workload-Statistiken genannt, sollten Sie mit Ihrem Datenbanken 'busy Zeiten ausgerichtet werden, wenn Ihre Arbeit schwerste ist. Das sind die Zeiten, in denen Systemstatistiken sind am wichtigsten, weil das ist, wenn das System besteuert werden. Am besten ist es Statistiken im Zeitintervall zu erfassen, wenn das System die häufigste Workload hat. Workload-Statistikerfassung erzeugt keine zusätzlichen Aufwand.

Um die Systemstatistiken sammeln, gehen Sie folgendermaßen vor:

Angenommen, Ihr Unternehmen von 12 geschäftigsten bis 17.00 Uhr ist

Am 12.00, starten Sie die Systemstatistiken Prozess zu sammeln. Melden Sie sich bei Ihrer Datenbank als Benutzer mit Datenbankadministrator (DBA) Privilegien und geben Sie den folgenden:

EXECUTE DBMS_STATS.GATHER_SYSTEM_STATS (gathering_mode => 'START') -

Am 05.00, melden Sie sich wieder in Ihre Datenbank und Ausgabe:

EXECUTE DBMS_STATS.GATHER_SYSTEM_STATS (gathering_mode => 'STOP') -

Die häufigste Richtlinie ist, dass Sie die Systemstatistik nur sammeln, wenn eine physikalische Veränderung in der Umgebung auftritt, zum Beispiel der Server schnellere CPUs wird, mehr Speicher oder verschiedene Plattenspeicher. Allerdings könnte man auch tun dies berücksichtigen, wenn Sie Ihre Arbeit fühlen sich erheblich verändert hat. Zum Beispiel hat Ihr Unternehmen die Zahl der Mitarbeiter verdoppelt.

Eine letzte Anmerkung auf Systemstatistiken - Sie können präziser mit Systemstatistiken zu bekommen. Dies war ein sehr einfaches Beispiel. Einige von euch haben vielleicht zwei verschiedene Workloads, die im Laufe des Tages stark in den Ressourcenverbrauch unterscheiden. Zum Beispiel können Sie eine Tagesarbeitsbelastung haben, die meist ist transaktionsbasierte und eine nächtliche Auslastung, die meist auf Basis gelesen wird. Sie können tatsächlich mehr als ein Satz von Systemstatistiken definieren und dann jeden einzelnen zu bestimmten Zeiten des Tages durch einen geplanten Auftrag bereitstellen, so dass Sie die besten Statistiken für die Arbeitsbelastung haben. Um auf die Nutzung dieser Ansatz mehr Informationen zu erhalten, finden Sie in der DBMS_STATS Paket Referenz mit Beispielen für unterschiedlichen Arbeitsbelastung bei dieser Oracle-Dokumentation Link.

Schließlich Tabellenstatistiken festgelegt. Feste Tabellenstatistiken sind Statistiken, die Metadaten über Ihre interne X $ und V $ Ansichten enthalten. Diese Ansichten sind nicht nur von Ihnen, dem DBA, aber auch intern von Oracle. Wie normale Objektstatistiken, weiß die mehr Oracle über das, was in diesen Ansichten enthalten ist, desto besser kann der Optimierer gegen sie durchführen. Wie das System Statistiken, empfiehlt Oracle, dass diese Statistiken am besten gesammelt werden, wenn es eine Belastung des Systems ist.

Sie müssen das System dabatase Administrator (SYSDBA) oder ANY DICTIONARY Systemprivileg ANALYZE dieses Verfahren auszuführen.

Um sammeln festen Objekt Statistiken gehen Sie folgendermaßen vor:

Melden Sie sich bei der Datenbank als SYSDBA Benutzer.

Geben Sie den Befehl:

exec DBMS_STATS.GATHER_FIXED_OBJECTS_STATS-

Beachten Sie, dass diese Statistiken in der Zeit, während laufen, es geht um einen kleinen Einfluss auf die System-Overhead zu sein. Da diese Statistiken ähnlich sind Statistiken zu widersprechen, sollte es nicht mehr sein, als man normalerweise, wenn die Statistik Objekt sammeln würde erleben. Also, auch wenn Oracle empfiehlt, dass Sie dies tun, während der Spitzenarbeitsbelastung, sollten Sie die Ressourcen schonen können, um den Auftrag abzuschließen. Es kann manchmal bis zu 15 Minuten dauern. Oracle empfiehlt auch feste Objekt Statistiken aktualisiert werden, wenn Sie keine großen Datenbank oder Anwendung Änderungen vornehmen. Zum Beispiel, wenn Sie den Speicher der Datenbank erhöhen dann alle internen Tabellen, die Informationen über den Puffer-Cache und gemeinsamen Pool enthalten kann sich ändern.

Menü