SAP NetWeaver BW – Performanceoptimierung

Werbung
In diesem Kapitel finden Sie Informationen zur systematischen Analyse von Datenbank, Speicher und Hardware in
SAP-Systemen. Sie lernen Methoden der Überwachung von
Datenbank- und Speicherparametern sowie Möglichkeiten
zur Identifizierung von Performanceproblemen kennen.
7
Analyse von Datenbank, Speicher
und Hardware
Der Schwerpunkt dieses Kapitels liegt auf der Systemanalyse von Performanceparametern, die Ihnen Hinweise auf kritische Zustände des
Gesamtsystems geben sollen. Hierzu zählen insbesondere die Analyse der dem SAP-System zugrunde liegenden Datenbank, des Speichers und der Hardware. Die Analyse dieser Bereiche gibt Ihnen Aufschluss darüber, wie Ihr BW-System die verfügbaren Speicher-,
Datenbank- und Hardwareressourcen nutzt und an welchen Stellen
eventuell Ressourcenengpässe auftreten können.
Von der Systemanalyse ist die Applikationsanalyse zu differenzieren,
die Ihnen Hinweise zur Performance Ihrer analytischen Anwendungen gibt. Analysen in diesem Bereich haben immer eine bestimmte
Applikation zum Inhalt, z.B. eine Query, eine Planungsanwendung
oder ein ABAP-Programm, um Informationen über Laufzeit und
Durchsatz zu gewinnen. Detaillierte Informationen zu Analysewerkzeugen und Vorgehensweisen für die Applikationsanalyse finden Sie
in Kapitel 8, »Analyse der Systemlast«.
Da sich die Nutzung eines BW-Systems hinsichtlich Speicher- und
Datenbanknutzung von dem Auslastungsprofil eines OLTP-Systems
(SAP ERP) unterscheidet, werden in diesem Kapitel, wo immer es
möglich ist, Hinweise gegeben, wie ein BW-System bezüglich Speicher-, Datenbank- und Hardwareressourcen zu parametrisieren ist.
Die hier angegebenen Werte können dabei aber nur grobe Richtwerte sein und sollten als initiale Einstellungen vor Produktivstart
verstanden werden. Die Parametrisierung Ihres Systems sollte nach
Produktivstart gegebenenfalls korrigiert und an die tatsächlichen
Anforderungen angepasst werden.
273
7
Analyse von Datenbank, Speicher und Hardware
Insbesondere ersetzen die hier beschriebenen Systemwerte nicht die
Serviceleistungen des SAP-Supports, wie z.B. den SAP GoingLive
Check oder den EarlyWatch-Alert-Service für BW-Systeme.
Zur besseren Orientierung unterscheiden wir bei den Möglichkeiten
der Analyse Ihres SAP NetWeaver BW-Systems zwei Anwendungsbereiche:
왘 Der eine Anwendungsbereich hat die fallweise Analyse von Performanceproblemen zur Identifizierung von Ursachen für Performanceengpässe im Fokus. Hierzu gibt es eine Reihe von SAP-Performanceanalysewerkzeugen, die Sie in der Analyse von verschiedenen Bereichen Ihres SAP NetWeaver BW-Systems unterstützen,
wie z.B. Speicher- oder CPU-Auslastung.
왘 Darüber hinaus unterstützt SAP NetWeaver das Monitoring Ihrer
BW-Applikationen und die regelmäßige und kontinuierliche Systemüberwachung. Die Systemüberwachung prüft die Verfügbarkeit
und Performance aller Komponenten. Im Fall von Fehlern oder
Abweichungen wird ein Alarm ausgelöst.
Die Werkzeuge zur Einrichtung der kontinuierlichen Systemüberwachung werden ebenfalls in diesem Kapitel vorgestellt.
7.1
Allgemeine Datenbankaspekte in
SAP NetWeaver BW
Bevor die Werkzeuge zur Analyse der Datenbank- und Hardwareperformance vorgestellt werden, werden Ihnen zunächst einige Besonderheiten datenbankbezogener Performanceaspekte in SAP NetWeaver Business Warehouse (BW) vermittelt, um die Analyseaktivitäten
auf die wichtigsten BW-Objekte zu lenken. Dazu zählen unter anderem die wichtigsten BW-Tabellentypen, temporäre Tabellen zur Zwischenspeicherung von Ergebnissen, das Indexschema in SAP NetWeaver BW sowie der Star-Transformation-Join, eine für Querys auf
Oracle-Datenbanken typische Join-Operation.
7.1.1
Namenskonventionen
BW-Tabellentypen
Bei der Analyse von Datenbankproblemen in SAP NetWeaver BW
sollten Sie zunächst die Analyseaktivitäten auf die wichtigsten performancerelevanten BW-Tabellentypen richten. Tabelle 7.1 zeigt die
Namenskonvention der Tabellentypen in SAP NetWeaver BW.
274
Allgemeine Datenbankaspekte in SAP NetWeaver BW
7.1
BW-Bereich
Tabellentyp
Namenskonvention
SAP-Content
Namenskonvention
Kunden-Content
InfoCubes
(relational)
F-Faktentabellen
/BI0/F<Cube>
/BIC/F<Cube>
E-Faktentabellen
/BI0/E<Cube>
/BIC/E<Cube>
Fact View
BW ≤ 3.5; UNION ALLView (über E- und
F-Faktentabelle):
BW ≤ 3.5; UNION ALLView (über E- und
F-Faktentabelle):
/BI0/V<Cube>
/BIC/V<Cube>
Dimensionstabellen
/BI0/D<Cube>
/BIC/D<Cube>
InfoCubes
(HANAoptimiert)
Faktentabelle
/BI0/F<Cube>
/BIC/F<Cube>
Dimensionstabelle (Paket)
/BI0/D0<Cube>P
/BIC/D<Cube>P
Gültigkeitstabelle (nur gültig bei Bestands-InfoCubes)
/BI0/L0<Cube>
/BIC/L<Cube>
Aggregate
Aggregattabellen
F-Faktentabellen
–
/BIC/F1*
Aggregattabellen
E-Faktentabellen
–
/BIC/E1*
Aggregate zu
Dimensionstabellen
–
/BIC/D1*
SID-Tabellen
/BI0/S<Merkmal>
/BIC/S<Merkmal>
SID-Tabellen (Navigationsattribute, zeitunabhängig)
/BI0/X<Merkmal>
/BIC/X<Merkmal>
SID-Tabellen (Navigationsattribute, zeitabhängig)
/BI0/Y<Merkmal>
/BIC/Y<Merkmal>
Attribute (zeitunabhängig)
/BI0/P<Merkmal>
/BIC/P<Merkmal>
Attribute (zeitabhängig)
/BI0/Q<Merkmal>
/BIC/Q<Merkmal>
Hierarchien
/BI0/H<Merkmal>
/BIC/H<Merkmal>
Texte
/BI0/T<Merkmal>
/BIC/T<Merkmal>
DataStoreChange-Log
Objekt (DSO)
DSO aktive Daten
und Change-Log
DSO neue Daten
(relational)
/BI0/B0000*
/BIC/B0000*
/BI0/A<Name>0
/BIC/A<Name>0
/BI0/A<Name>40
/BIC/A<Name>40
DSO und
Change-Log
(HANAoptimiert)
aktive Daten
/BI0/A0<Name>00
/BIC/A<Name>00
neue Daten
/BI0/A0<Name>40
/BIC/A<Name>40
Change-Log-DataSource
80<Name>
8<Name>
Delta-Index
/BI0/A0<Name>70
/BIC/A<Name>70
History-Index
/BI0/A0<Name>80
/BIC/A<Name>80
Stammdaten
Tabelle 7.1 Übersicht über Tabellentypen in SAP NetWeaver BW
275
7
Analyse von Datenbank, Speicher und Hardware
BW-Bereich
Tabellentyp
Namenskonvention
SAP-Content
Namenskonvention
Kunden-Content
PSA
PSA-Tabellen
/BIC/B0000*
Temporäre
Tabellen
Query-Zwischenergebnisse /BI0/01*
(werden einmalig verwendet
und nach Verwendung automatisch gelöscht)
–
Hierarchie-Zwischenergeb- /BI0/02*
nisse (werden mitsamt ihrem
Inhalt wiederverwendet)
–
Query-Views (nur bis
Release SAP BW 3.x gültig)
/BI0/03*
–
Query-Zwischenergebnisse
(werden wiederverwendet,
aber nicht aus dem ABAP
Dictionary gelöscht)
/BI0/06*
–
/BI0/0P*
materialisierte Teilergebnisse von komplexen Querys
–
/BI0/0D*
Open Hub (enthalten
gespeicherte Ergebnisse aus
Open-Hub-Lesevorgängen)
–
Tabelle 7.1 Übersicht über Tabellentypen in SAP NetWeaver BW (Forts.)
7.1.2
Indextypen
und Namenskonventionen
Indextypen in SAP NetWeaver BW
Die wichtigsten Tabellentypen in SAP NetWeaver BW werden standardmäßig mit Indizes bei der Anlage der BW-Objekte erstellt.
Tabelle 7.2 gibt einen Überblick über die wichtigsten Indextypen.
Ausführliche Informationen zur Administration und Analyse von
Indizes in SAP NetWeaver BW finden Sie in Kapitel 9, »Indizes und
Datenbankstatistiken«.
Tabellentyp
Indextyp
Namenskonvention
F-Faktentabelle
1. Normale Cubes: Bitmap-Indizes
(non-unique) auf jeder Dimensionsspalte zur Query-Unterstützung
KEY_<cube><suffix>, Indizes 010,
020 etc.
2. Ausnahme: B-Tree-Indizes (nonunique) für »High Cardinality«Dimensionsspalten
Tabelle 7.2 Übersicht über Indextypen in SAP NetWeaver BW
276
Allgemeine Datenbankaspekte in SAP NetWeaver BW
Tabellentyp
Indextyp
Namenskonvention
1. Realtimefähiger InfoCube: BTree-Indizes (non-unique) auf
jeder Dimensionsspalte
KEY_<cube><suffix>, Indizes 010,
020 etc.
2. B-Tree-Typ ist nötig zur besseren
Unterstützung paralleler Schreibund Lesezugriffe.
E-Faktentabelle
Bitmap-Indizes (non-unique) auf
jeder Dimensionsspalte zur QueryUnterstützung
KEY_<cube><suffix>, Indizes 010,
020 etc.
1. B-Tree-Index (non-unique) über P-Index
alle Dimensionsspalten zur Unterstützung der Komprimierung
2. Ausnahme: B-Tree-Indizes (nonunique) für »High Cardinality«Dimensionsspalten
Dimensions- B-Tree-Index (unique) auf DIM-IDtabellen
Spalte
Index 0
B-Tree-Index (non-unique) über alle Index 010
SID-Spalten
SID-Tabellen B-Tree-Index (unique) auf
Merkmalsspalte
SIDTabellen
(Navigationsattribute)
/BIC/<merkmal>,
Index 0
B-Tree-Index (unique) auf SIDSpalte
Index 001
B-Tree-Index (unique) auf SID- und
OBJVERS-Spalte
Index 0
Optional: weitere Indizes auf
Merkmalsspalten
Tabelle 7.2 Übersicht über Indextypen in SAP NetWeaver BW (Forts.)
7.1.3
Star-Transformation
Die Star-Transformation ist eine Join-Operation auf Oracle-Datenbanken, die von vielen Querys beim Zugriff auf InfoCubes genutzt
wird. Durch die Star-Transformation werden Abfragen mit Selektionen über mehrere Dimensionen ausgeführt. Dabei werden zunächst
die Einschränkungen auf den Dimensionstabellen durch den Query
Optimizer evaluiert und kombiniert, bevor dann auf die meist sehr
große Faktentabelle zugegriffen wird, um darin relativ schnell die
passenden Datensätze zu finden. Voraussetzung dafür sind BitmapIndizes auf allen Fremdschlüsselattributen der Faktentabelle.
277
7.1
7
Analyse von Datenbank, Speicher und Hardware
Weitere Informationen
Weitere Informationen zu den Star-Transformationen finden Sie in
Abschnitt 9.6.2, »Indizes aufbauen«.
Ausführungsplan
Der Ausführungsplan einer Star-Transformation mit Bitmap-Index ist
in Abbildung 7.1 vereinfacht dargestellt.
TABLE ACCESS BY LOCAL INDEX ROWID
(Fact Table)
BITMAP CONVERSION TO ROWIDs
BITMAP AND
BITMAP MERGE
BITMAP KEY ITERATION
BUFFER SORT
TABLE ACCESS FULL
(Dimension Table)
BITMAP INDEX RANGE SCAN
(Fact Table Index)
BITMAP MERGE
BITMAP KEY ITERATION
BUFFER SORT
TABLE ACCESS FULL
(Dimension Table)
BITMAP INDEX RANGE SCAN
(Fact Table Index)
Abbildung 7.1 Star-Transformation im Ausführungsplan
Die einzelnen Schritte werden dabei wie folgt durchlaufen:
1. Zunächst werden die passenden Dimensionsdatensätze anhand
der Selektionsbedingungen in den Dimensionstabellen gelesen 1.
2. Anschließend wird mit den passenden Dimensionsdatensätzen auf
die Bitmap-Indizes der Fremdschlüssel der Faktentabelle zugegriffen 2.
3. Außerdem werden die Bitmaps der korrespondierenden Faktentabellen-Datensätze ermittelt 3.
4. Dann werden die Bitmaps mit den passenden FaktentabellenDatensätzen aller im Rahmen der Star-Transformation enthaltenen
Dimensionstabellen verknüpft 4.
5. Es folgt die Umwandlung der Bitmaps in ROWIDs 5.
278
Übersicht SAP-Performanceanalysewerkzeuge
6. Im letzten Schritt werden anhand der ROWIDs die passenden
Datensätze aus der Faktentabelle gelesen 6.
Oracle bestimmt die im Rahmen einer Star-Transformation verwendeten Dimensionen automatisch. Dabei werden die Dimensionen
mit der höchsten erwarteten Selektivität genutzt, sodass die Treffermenge auf der Faktentabelle möglichst klein ist.
Die zentrale Voraussetzung für die Durchführung der Star-Transformation sind Bitmap-Indizes auf der Faktentabelle. Liegen keine
Bitmap-Indizes vor, kann keine Star-Transformation ausgeführt werden. Dies ist dann der Fall, wenn B-Tree- statt Bitmap-Indizes angelegt
sind, z.B. bei der Definition von »High Cardinality«-Dimensionen
oder in Realtime-InfoCubes, in denen die Indizes der F-Faktentabellen
generell als B-Tree-Indizes angelegt werden (Vermeidung potenzieller
Deadlocks bei parallelen Updates von realtimefähigen InfoCubes). Nur
auf den E-Faktentabellen werden Bitmap-Indizes verwendet.
7.2
Bitmap-Indizes
Übersicht SAP-Performanceanalysewerkzeuge
Die in diesem Kapitel vorgestellten Werkzeuge zur Performanceanalyse sind Bestandteil der SAP-Performancemonitore. Für die Überwachung und Performanceanalyse umfasst das SAP-Basis-System eine
Reihe von Monitoring- und Analyseprogrammen, die ständig durch
SAP weiterentwickelt werden. Die Monitoring-Werkzeuge zur Performanceanalyse können Sie mit Transaktion STUN aufrufen. Tabelle
7.3 gibt Ihnen einen Überblick über die wichtigsten Monitore zur
Basis- und Anwendungsanalyse.
Anwendungs- Monitor/Werkzeug Beschreibung
bereich
(Transaktion)
Datenbank
Performance (ST04)
왘 Auslastung der Datenbankpuffer
왘 Datenbanksperren und Wartesituationen
왘 Schreib- und Lesezugriffe auf die
Festplatten
왘 Überwachung von SQLAnweisungen
Tabelle 7.3 Übersicht über SAP-Performancemonitore
279
Monitore
7.2
7
Analyse von Datenbank, Speicher und Hardware
Anwendungs- Monitor/Werkzeug Beschreibung
bereich
(Transaktion)
Datenbankmonitor
(DB02)
왘 allgemeine Performanceanalyse
왘 Plattenkapazität der Datenbank
왘 Planung und Überwachung von
Jobs
왘 Diagnosewerkzeuge für fehlende
Tabellen und Indizes
Speicher
Datenbank-Parametereinstellungen
(DB03)
Überwachung der Änderung von
Datenbankparametern
DBA-Einplanungskalender (DB13)
Einplanung von Datenbankaktionen
SAP-Speicherkonfigurationsmonitor (ST02)
Auslastung der SAP-Puffer und
weiterer Speicherbereiche
Betriebssystemmonitor (ST06)
왘 Auslastung des physischen
Hauptspeichers
왘 Monitoring Paging 24-h-Profil
Hardware
(CPU und
Platten)
Betriebssystemmonitor (ST06)
왘 Auslastung der CPU
왘 Festplattenzugriffszeiten
왘 Netzwerk
왘 24-h-Profil für CPU, Speicher,
Swap Space, Festplattenzugriffszeiten, Netzwerk
Prozesse,
Workprozess-ÜberBenutzer und sicht lokal (SM50)
Anwendungen Workprozess-Übersicht global (SM66)
Auslastung der SAP-Workprozesse
globale Workprozess-Übersicht
SAP-Instanzen
(SM51)
Übersicht SAP-Instanzen
(SAP-Server)
Benutzerliste lokal
(SM04)
Übersicht Benutzer
Benutzerliste global
(AL08)
Liste aller angemeldeten Anwender
nach Anzahl aktiver Anwender,
interaktiver Anwender und RFCAnwender
Tabelle 7.3 Übersicht über SAP-Performancemonitore (Forts.)
280
Analyse der Datenbank
Anwendungs- Monitor/Werkzeug Beschreibung
bereich
(Transaktion)
Prozesse,
Workload-Monitor
Benutzer und (ST03, ST03N,
Anwendungen ST03G)
Übersicht über Lastverteilung im
SAP- und BW-System zur Analyse
von Transaktionen, Programmen,
Benutzern und BW-Systemlast
durch Lade- und Leseprozesse
Workload-Monitor
Analyse und Identifikation von
für Einzelsatzstatistik Prozessen und Usern mit hoher
(STAD, STATTRACE) Systemlast
Anwendungsmonitor Benutzerverteilung (ST07)
Überwachung des Ressourcenverbrauchs und der Benutzer nach
SAP-Modulen
Analyse- und
Sammlung verschiedener Tools für
Service-Tools (ST13) Analyse von Business-Applikationen (z.B. SEM-BPS, BI-IP und
SEM-BCS)
Anwendungsanalyse (ST14)
Monitoring und Analyse von Business-Applikationen für SEM, BW,
Basis und Security
Performanceanalyse- Analysen für SQL-, Enqueue-, RFCTraces (ST05)
und Tabellenpuffer-Trace
Laufzeitanalyse
(SE30)
Laufzeitanalyse für Transaktionen,
Programme, Funktionsbausteine
Tabelle 7.3 Übersicht über SAP-Performancemonitore (Forts.)
In den folgenden Ausführungen werden die wichtigsten SAP-Analysewerkzeuge für die Performanceanalyse erklärt.
7.3
Analyse der Datenbank
Bevor wir die Verwendung der Werkzeuge zur Analyse von Datenbankparametern und Performance der Datenbank beschreiben, müssen zunächst die in diesem Zusammenhang verwendeten Begriffe
erläutert werden.
7.3.1
Begriffserklärungen
Die Begriffe Rechner, Applikationsserver, Datenbankserver, SAPInstanz und Datenbankinstanz werden in diesem Buch wie folgt verwendet:
281
7.3
7
Analyse von Datenbank, Speicher und Hardware
왘 Ein Rechner ist eine physische Maschine (= physische Hardware)
mit CPU, Hauptspeicher, IP-Adresse etc.
왘 Ein Applikationsserver ist ein Rechner, auf dem eine oder mehrere
SAP-Instanzen laufen.
왘 Eine SAP-Instanz oder SAP-Applikationsinstanz ist eine abgeschlossene administrative Einheit auf einem Rechner, bestehend aus
Workprozessen, Dispatcher zur Verwaltung der Workprozesse
und SAP-Puffern im Shared Memory des Rechners, auf die Workprozesse zugreifen. Die SAP-Instanz kann eine ABAP- oder JavaApplikationsinstanz (SAP-J2EE-Engine) sein. Es können mehrere
SAP-Instanzen auf einem physischen Rechner installiert sein. Jede
SAP-Instanz hat einen eigenen Dispatcher, Workprozesse und
Speicherbereiche (Puffer).
왘 Ein Datenbankserver ist ein Rechner, auf dem eine oder mehrere
Datenbankinstanzen laufen.
왘 Die Datenbank ist die physische Datenbasis, z.B. in Form von
Dateien und Tabellen. In den nachfolgenden Ausführungen soll
zwischen relationalen Datenbanksystemen und In-MemoryDatenbanken, z.B. SAP HANA, differenziert werden. Als relationales Datenbanksystem werden hier solche Datenbanken bezeichnet, deren Daten in relationalen Tabellen und Dateien in einem
Plattensystem gespeichert werden. In-Memory-Datenbanksysteme wie SAP HANA sind streng genommen auch relationale
Datenbanksysteme, speichern die Daten aber im Hauptspeicher
(RAM) des Datenbankservers sowie in einem Dateisystem.
왘 Eine Datenbankinstanz ist eine abgeschlossene administrative Einheit auf einem Rechner, bestehend aus Datenbankprozessen und
Datenbankpuffern im Shared Memory des Rechners, die den Zugriff auf eine Datenbank ermöglicht. Als Datenbankserver wird der
Rechner bezeichnet, auf dem eine oder mehrere Datenbankinstanzen laufen. Datenbank- und SAP-Instanz können auch parallel auf einem Rechner laufen. In der Regel läuft im SAP-Umfeld auf
einer Datenbank nur eine Datenbankinstanz. Auf ein Datenbanksystem können auch mehrere Datenbankinstanzen zugreifen (parallele Datenbanksysteme).
Unterstützte
Datenbanken
SAP NetWeaver BW ist auf verschiedenen relationalen Datenbanksystemen lauffähig (Informationen zu SAP NetWeaver BW auf SAP HANA
als In-Memory-Datenbank finden Sie in Kapitel 3, »Einführung in das
282
Analyse der Datenbank
In-Memory-Computing mit SAP HANA«, Kapitel 16, »Architektur von
SAP HANA«, und Kapitel 17, »SAP NetWeaver BW auf SAP HANA«).
Insgesamt werden von SAP NetWeaver BW zurzeit acht relationale
Datenbanksysteme unterstützt (Stand Dezember 2012):
왘 Oracle (siehe auch SAP-Hinweis 1547947)
왘 Microsoft SQL Server 2008
왘 Microsoft SQL Server 2012 (siehe auch SAP-Hinweis 1651862)
왘 SAP MaxDB (vormals SAP DB)
왘 IBM DB2
왘 IBM DB2 für z/OS
왘 IBM DB2 für Linux, UNIX und Windows
왘 Sybase ASE
Aktuelle Informationen zu den unterstützten Datenbanken
Die jeweils aktuell von SAP NetWeaver BW unterstützten Datenbankversionen können Sie der Product Availability Matrix (PAM) im SAP Support Portal unter der URL https://websmp104.sap-ag.de/pam entnehmen
(S-User erforderlich).
Auch wenn die Architektur der Datenbanksysteme unterschiedlich
ist, verfügt das dem BW-System zugrunde liegende SAP-System über
einen zentralen Datenbankmonitor, der die Analyse von Performancedaten des basierenden Datenbanksystems ermöglicht. Der
Datenbankmonitor greift dabei zum einen auf Performancedaten
zurück, die das Datenbanksystem erstellt und die auch über die
datenbankeigenen Monitoring-Werkzeuge zugänglich sind. Zum
anderen wird ein Teil der Performancedaten direkt vom SAP-System
gesammelt.
Sie können den Datenbankmonitor mit Transaktion DBACOCKPIT
aufrufen. Das DBA Cockpit ist der zentrale Einstiegspunkt für die
Administration, Konfiguration und das Monitoring der Datenbank
und wurde mit SAP NetWeaver 7.0 SP12 grundlegend überarbeitet.
Es setzt sich aus den folgenden drei Bereichen zusammen:
왘 Die Auswahl des Systems und der korrespondierenden Datenbanksysteme erfolgt im oberen linken Menübereich (1 in Abbildung 7.2).
Sie können hier mehrere Systeme und Datenbanken verwalten.
283
DBA Cockpit
7.3
7
Analyse von Datenbank, Speicher und Hardware
왘 Darunter finden Sie das Navigationsmenü für die Auswahl der verschiedenen Administrationsfunktionen 2.
왘 Der eigentliche Analysemonitor zur Anzeige der Inhalte und
Ergebnisse befindet sich im rechten Bildschirmbereich 3.
Abbildung 7.2 DBA Cockpit (Pflege Systemkonfiguration)
Transaktionscodes
Das DBA Cockpit vereint verschiedene Monitoring- und Administrationswerkzeuge. Die Transaktionscodes, mit denen diese Werkzeuge
aufgerufen wurden, verzweigen nun zu den einzelnen Funktionen
im DBA Cockpit im Navigationsmenü:
왘 Datenbankperformance (ST04)
왘 Datenmanagement/Space Overview (DB02)
왘 Datenbanksperren (DB01)
왘 Sicherungsprotokolle/Backup-Logs (DB12)
왘 DBA-Einplanungskalender (DB13, DB13C)
왘 Datenbankjobs (DB24)
Die aufgeführten Funktionen könen direkt im DBA Cockpit aufgerufen werden, die Transaktionscodes sind aber nach wie vor verfügbar.
Die nachfolgende Erklärung der Speicherbereiche erfolgt am Beispiel
eines Oracle-Datenbanksystems; die Begrifflichkeiten können für
andere Datenbanksysteme differieren.
DBA Cockpit für Oracle
Weitere Informationen zum DBA Cockpit für ein Oracle-Datenbanksystem finden Sie in SAP-Hinweis 1028624.
284
Analyse der Datenbank
7.3.2
7.3
Speicherbereiche der Datenbank
Die Analyse der Datenbankpuffer rufen Sie im DBA Cockpit mit dem
Menüpunkt Performance Overview (siehe Abbildung 7.3) auf.
Abbildung 7.3 Analyse der Datenbankpuffer (Performance Overview)
Datenbankpuffer sind Bereiche im Hauptspeicher, in denen bereits
selektierte Daten (Tabelleninhalte, Indizes etc.) vorgehalten werden.
Bei erneutem Zugriff auf diese Daten müssen diese nicht mehr vom
Plattensystem gelesen werden, sondern können aus dem Datenbankpuffer abgerufen werden. Die Datenbankpuffer reduzieren somit die
erforderlichen Plattenzugriffe und beschleunigen den Datenzugriff,
da der Zugriff auf ein im Hauptspeicher persistiertes Objekt ca. zehn
bis 100 Mal schneller ist als ein Lesezugriff auf das Plattensystem des
Datenbankservers.
Die Bezeichnungen der Puffer eines Datenbanksystems differieren je
nach Hersteller. Die im Folgenden beschriebenen Speicherbereiche
sind am Beispiel des Datenbanksystems Oracle erklärt. Im OracleDatenbanksystem wird unterschieden zwischen Shared Memory –
also einem Speicherbereich, der von allen Oracle-Prozessen angesprochen werden kann – und prozesslokalem Speicher, der jeweils
genau einem Prozess zugeordnet ist.
285
Datenbankpuffer
7
Analyse von Datenbank, Speicher und Hardware
System Global
Area (SGA)
Die System Global Area (SGA) ist ein Speicherbereich im Shared
Memory, der beim Start der Datenbankinstanz im Hauptspeicher des
Datenbankservers allokiert wird. Die wichtigsten Speicherbereiche
der SGA sind:
왘 der Data Buffer (auch als Buffer Pool oder Data Cache bezeichnet),
in dem die Datenblöcke gepuffert werden
왘 der Shared Pool (auch als Shared SQL Area, Shared Cursor Cache oder
Library Cache bezeichnet), in dem geparste SQL-Statements und
Oracle-DDIC-Informationen gespeichert werden
왘 Java Pool, ein spezieller Pufferbereich für Java-Programme
왘 Large Pool, ein Puffer für spezielle Daten (z.B. bei Verwendung
eines Multi-Threaded Servers, des Recovery Managers (RMAN)
mit mehreren I/O-Slaves oder Aktivierung von PARALLEL_
AUTOMATIC_TUNING)
왘 Streams Pool (für Oracle ≥ 10g): Pool für Oracle-Streams
왘 der Log Buffer (auch als Redo Buffer bezeichnet), in dem die RedoLog-Daten gespeichert werden
Seit der Datenbankversion Oracle 9i kann die Speicherverwaltung
der SGA dynamisch konfiguriert und die vorhandenen Pufferbereiche können dynamisch verändert werden (vergrößert und auch verkleinert). Damit können Sie die Speicherverwaltung z.B. optimal an
verschiedene Arbeitslasten anpassen.
Parameter der SGA
Die Parameter, die die Speicherbereiche der SGA bestimmen, sind in
Tabelle 7.4 aufgelistet.
Speicherbereich Parameter
Bedeutung
Buffer Pool
DB_BLOCK_BUFFERS
Pufferung von Datenblöcken
Shared Pool
SHARED_POOL_SIZE
Speicherung geparster SQLStatements und Oracle-DDICInformationen
Large Pool
LARGE_POOL_SIZE
Puffer für spezielle Daten
Streams Pool
(Oracle >= 10g)
STREAMS_POOL_SIZE Pool für Oracle-Streams
Redo Buffer
LOG_BUFFER
Pufferung Redo-Log-Daten
Tabelle 7.4 Speicherbereiche und Parameter der System Global Area (SGA)
286
Analyse der Datenbank
7.3
Neben der System Global Area gibt es einen weiteren Speicherbereich, die Program Global Area (PGA), die prozesslokalen Speicher zur
Verfügung stellt, der nur einem Datenbankprozess zugeordnet werden kann. Der einem Prozess zugewiesene Speicher ist variabel. Der
wichtigste Speicherbereich in der PGA ist der Sort Buffer (auch als Sort
and Hash Area bezeichnet), in dem Sortierungen, Hash Joins, BitmapOperationen und andere temporäre lokale Speicheranforderungen
(z.B. beim Parsen von SQL-Statements) bearbeitet werden. Der Sort
Buffer ist entscheidend für die Performance von Querys und sollte
deshalb ausreichend groß gewählt werden, da bei der Ausführung von
Querys sehr viele Sortierungen durchgeführt werden müssen.
Program Global
Area (PGA)
Für die Verwaltung der Prozesse wird auf Betriebssystemebene weiterer Speicher benötigt. Während die Textsektion, die das ausführbare Programm enthält, nur einmal existiert und von allen Prozessen
verwendet wird, existieren andere Bereiche wie Data oder Stack für
jeden Prozess lokal. Man muss im Allgemeinen mit bis zu 6 MB
betriebssystemseitigen Memory-Verbrauchs pro Oracle-Prozess (Windows: Oracle-Thread) rechnen.
Betriebssystemseitiger Prozessspeicher
Der Data Buffer (oder Data Cache) ist der Pufferbereich, der zur Zwischenspeicherung der zuletzt von der Festplatte gelesenen Datenblöcke von Datenbanktabellen und deren Indizes verwendet wird. Ein
SAP-Workprozess liest die Daten nicht direkt von der Festplatte, sondern aus dem Data Buffer, weshalb alle von der Datenbank gelesenen
Daten zunächst in diesen Pufferbereich geschrieben werden. Der
Datenpuffer legt die Daten in sogenannten Blöcken oder Pages ab,
die je nach Datenbank- und Betriebssystem zwischen 2 und 32 KB
groß sind. Die Daten werden immer block- bzw. pageweise von der
Festplatte gelesen. Der Data-Buffer-Speicher wird über den sogenannten LRU-Algorithmus (Least Recently Used) verwaltet. Dieser
Algorithmus stellt sicher, dass immer die am häufigsten gebrauchten
Datenblöcke im Speicher gehalten werden.
Data Buffer
Die Qualität des Datenpuffers wird durch die Anzahl der Datenblöcke bestimmt, die direkt aus dem Datenpuffer ohne Plattenzugriff
gelesen werden können. Die Anzahl der Lesezugriffe aus dem Datenpuffer wird als Reads bezeichnet. Immer wenn ein Workprozess
einen Datenblock anfordert, der sich bereits im Datenpuffer befindet, wird ein Hit (Treffer) für den Puffer registriert. Befindet sich der
angeforderte Datenblock nicht im Datenpuffer, muss der Datenblock
287
7
Analyse von Datenbank, Speicher und Hardware
von der Festplatte gelesen werden. Die Anzahl der physikalisch von
der Platte gelesenen Datenbankblöcke wird als Physical Reads
bezeichnet.
Hitratio
Die prozentuale Trefferquote (Hitratio) berechnet sich demnach nach
folgendem Verhältnis:
Trefferquote (%) = (Reads/(Reads + Physical Reads)) × 100
Je größer die Anzahl der Lesezugriffe aus dem Datenpuffer (Reads)
im Verhältnis zu den physischen Lesezugriffen (Physical Reads) ist,
umso besser ist die Pufferqualität. Eine Trefferquote von 100%
bedeutet, dass alle Lesezugriffe aus dem Hauptspeicher der Datenbankinstanz beantwortet werden konnten und nicht von der Platte
gelesen werden mussten. Beim Neustart einer Datenbankinstanz
müssen die Puffer erst erneut aufgebaut werden, die Trefferquote ist
zunächst dementsprechend niedrig. Zur Bewertung der Pufferqualität sollte die Datenbank deshalb bereits einige Zeit laufen.
Datenpuffergröße
Die Datenpuffergröße ergibt sich aus dem Produkt der Blockgröße
(DB_BLOCK_SIZE) und der Anzahl der in der Parameterdatei
init<SID>.ora bzw. durch die Serverparameterdatei angegebenen
Datenbank-Blockpuffer (DB_BLOCK_BUFFERS). In den meisten Oraclebasierten BW-Systemen wird eine Standardgröße von 8.192 Bytes
für die Blockgröße verwendet, die zu Beginn der Erstellung der
Datenbank festgelegt werden muss und danach nicht mehr geändert
werden kann. Die Größe des Datenbank-Blockpuffers kann an die
Anforderungen des Betriebs jederzeit angepasst werden. Ab SAPRelease 6.40 und Oracle 9i wird der Parameter DB_CACHE_SIZE
anstelle von DB_BLOCK_BUFFERS als Default verwendet. In diesen Fällen darf DB_BLOCK_BUFFERS nicht mehr verwendet werden. Mit Verwendung der dynamischen SGA müssen Sie neue Parameter setzen:
SGA_MAX_SIZE und DB_CACHE_SIZE.
SGA_MAX_SIZE
Der Parameter SGA_MAX_SIZE legt die maximale Größe der SGA fest
(in Byte), bis zu der die SGA dynamisch wachsen kann. Die dynamische SGA erlaubt die Anpassung der Größen für Buffer Cache, Shared
Pool und Large Pool zur Laufzeit, solange die Summe ihrer Größen
inklusive der anderen Komponenten (Fixed SGA, Variable, SGA,
Redo Buffer) die Grenze von SGA_MAX_SIZE nicht überschreitet. Dieser Parameter dient in erster Linie dazu, ein »Oversizing« der SGA
und Paging zu verhindern.
288
Analyse der Datenbank
7.3
Wird der Parameter nicht gesetzt, setzt Oracle SGA_MAX_SIZE als
Default-Wert (wenn DB_CACHE_SIZE gesetzt ist) auf die Summe aller
SGA-Komponenten beim Start der Instanz. Dies hat zur Folge, dass
die SGA nicht größer werden kann als beim Start, sondern nur kleiner. Sie sollten den Parameter deshalb ausreichend groß wählen,
sodass die SGA bis zum Parameterwert dynamisch – ohne SystemDowntime – wachsen kann, und ohne dass Paging auftritt. Der für
SGA_MAX_SIZE spezifizierte Wert wird bereits beim Start der Instanz
allokiert, auch wenn die Summe der einzelnen SGA-Komponenten
geringer ist.
Mit dem Parameter DB_CACHE_SIZE wird die dynamische SGA aktiviert, und die Größe des Buffer Caches wird festgelegt. Der frühere
Parameter DB_BLOCK_BUFFERS ist damit obsolet.
DB_CACHE_SIZE
Die Datenpufferqualität in einem produktiven BW-System sollte
nicht unter 95% liegen. Zur Beurteilung der Pufferqualität sollte die
Datenbank aber einige Zeit nach dem letzten Start gelaufen sein. Die
Pufferqualität kann im BW-System zeitweilig auch niedriger sein, da
durch sehr viele Full Table Scans (z.B. durch Hash Joins) die Blocktrefferrate möglicherweise gesenkt wird, was auch nicht durch Vergrößern des Puffers gelöst werden kann.
Datenpufferqualität
Data Buffer Pool
Die Größe des Data Buffers hat in der Regel den größten Einfluss auf die
Datenbankperformance. Der Data Buffer Pool sollte deshalb ausreichend
groß dimensioniert sein, damit möglichst wenige zeitintensive Plattenzugriffe durchgeführt werden müssen. Für ein produktives BW-System mit
ca. 200 bis 500 Anwendern kann die Größe des Data Buffers bei 4 bis 8
GB und mehr liegen.
Der Shared Pool ist, wie der Name schon andeutet, ein gemeinsam
genutzter Speicherbereich, der Strukturen des Data Dictionary
Caches und des Shared-SQL-Bereichs (auch Library Cache genannt)
enthält. Im Data Dictionary Cache werden Informationen über die
zuletzt verwendeten Objekte der Datenbank gespeichert (Tabellen,
Views etc.), die von Administratoren, Anwendern und dem Datenbanksystem benötigt werden. Im Shared-SQL-Bereich (auch Shared
Cursor Cache oder Shared SQL Area genannt) werden der SQL-Text,
die Parse-Bäume von SQL-Anweisungen und die Ausführungspläne
gespeichert. Die Größe des Shared Pools sollte in Oracle-basierten
289
Shared Pool
7
Analyse von Datenbank, Speicher und Hardware
SAP NetWeaver BW-Systemen (200 bis 500 Benutzer) mindestens
800 bis 1.000 MB betragen. Die Größe des Shared Pools wird durch
den init<SID>.ora-Parameter SHARED_POOL_SIZE bestimmt. Beachten
Sie auch die SAP-Hinweise zur Datenbankparametrisierung Ihres
BW-Systems in Anhang A.11.
Data-DictionaryCache-Qualität
Die Data-Dictionary-Cache-Qualität (DD Cache Quality) gibt an, wie
häufig auf das Oracle Data Dictionary während der Verarbeitung von
SQL-Befehlen zugegriffen werden muss. Die Data-Dictionary-CacheQualität sollte in einem BW-Produktivsystem möglichst immer über
90% liegen.
Zugriffsqualität
Die Zugriffsqualität auf SQL-Anweisungen im Shared-SQL-Bereich
wird durch die Parameter SQL Area getratio und SQL Area pinratio
gemessen. Die Wiederverwendung von identischen SQL-Anweisungen verringert die Systemlast, die durch das Parsen und Laden von
SQL-Anweisungen in den Arbeitsspeicher entsteht. Während der Parameter SQL Area getratio die Anzahl der Anforderungen von Objekten im Library Cache bestimmt, misst der Parameter SQL Area pinratio die Anzahl der Ausführungen der Objekte im Library Cache. Dieser
Wert sollte in einem produktiven BW-System nahe bei 99% liegen.
Parameterwerte prüfen
Beachten Sie, dass die angegebenen Werte immer für ein »eingeschwungenes« System gelten und nach dem Neustart des Systems abweichen
können. Überprüfen Sie deshalb in einem eingeschwungenen System, ob
die folgenden Parameterwerte erfüllt sind:
왘 DD Cache Quality > 80%
왘 SQL Area pinratio ≥ 95%
왘 SQLA Reloads/pins ≤ 0,04
왘 User/recursive calls ≥ 2
Falls diese Werte nicht erfüllt sind, ist der Shared Pool möglicherweise zu
klein dimensioniert und sollte erhöht werden.
Log Buffer
Der Log Buffer (auch Redo Log Buffer) ist der Pufferbereich, in dem
alle Änderungen der Datenbank protokolliert werden. Jede Datenänderung erzeugt einen Redo-Eintrag im Log Buffer, mit dem die
Datenänderungen bei einer Wiederherstellung der Daten in einen
früheren Zustand rekonstruiert werden können. So werden z.B.
beim Laden von Daten in SAP NetWeaver BW sehr viele Redo-Einträge erzeugt.
290
Analyse der Datenbank
Bei der Einstellung des Log Buffers ist zu beachten, dass der Wert ein
Vielfaches von DB_BLOCK_SIZE sein muss (Standardgröße 8.192
Bytes). So liegt die Standardeinstellung eines ERP-Systems in der
Regel bei 40 × 8.192 Bytes = 320 KB. Für ein produktives BW-System
sollte die Startkonfiguration ca. beim 150- bis 200-Fachen des Wertes
von DB_BLOCK_SIZE liegen.
Der Parameter Allocation retries zeigt die Anzahl der fehlgeschlagenen Zuweisungsversuche von Platz im Redo-Log-Puffer an. Dieser
Fall tritt immer dann ein, wenn der Oracle-Log-Writer-Prozess
(LGWR) nicht sofort Redo-Log-Einträge vom Puffer auf die Festplatte
schreiben konnte, sondern auf einen Redo-Log-Dateiwechsel warten
muss, um den Platz zuzuweisen.
Die Alloc fault rate gibt das Verhältnis zwischen den fehlgeschlagenen Zuweisungsversuchen (Allocation retries) und der Anzahl
der gesamten Einträge (Entries) im Redo-Log-Buffer an. Der Wert
sollte nicht über 1% steigen.
Als Calls wird die Gesamtzahl der seit dem Start der Datenbankinstanz im Kernel des Datenbanksystems eingegangenen Abfragen
bezeichnet. Unter der Rubrik Calls werden im Hauptbildschirm des
Datenbankmonitors die folgenden Parameter angezeigt:
왘 User calls: Gesamtzahl der seit dem Start der Datenbankinstanz
im Kernel des Datenbanksystems eingegangenen Abfragen
왘 User commits: Bei einem Commit werden alle von einer Transaktion durchgeführten Änderungen in der Datenbankinstanz dauerhaft festgeschrieben. Mit Commit abgeschlossene Transaktionen
können nicht mehr durch ein Roll-back rückgängig gemacht werden.
왘 User roll-backs: Bei einem Roll-back werden alle von einer Transaktion durchgeführten Änderungen in der Datenbankinstanz rückgängig gemacht. Roll-backs werden durch Programmfehler, Applikationssperren oder sonstige Anwendungsabbrüche ausgelöst.
왘 Recursive calls: Rekursive Abfragen sind SQL-Anweisungen des
Datenbanksystems, die zusätzlich zu benutzerseitigen SQL-Anweisungen ausgegeben werden müssen. Zur Beantwortung der Datenbank-Calls benötigt das System Verwaltungsinformationen aus
dem Cache der Datenbank. Stehen diese Informationen nicht im
Datenbank-Cache zur Verfügung, müssen sie mit einem Recursive
291
Calls
7.3
7
Analyse von Datenbank, Speicher und Hardware
Call von der Festplatte nachgeladen werden. Rekursive Abfragen
können z.B. durch fehlende Treffer (Misses) im Data Dictionary
Cache ausgelöst werden und beeinträchtigen die Performance des
Datenbanksystems.
왘 Das Verhältnis der rekursiven Calls zu den User Calls wird im Parameter User/recursive calls berechnet. Die Anzahl der rekursiven
Calls sollte nicht größer sein als die User Calls. Ein höherer Wert
ließe auf eine schlechte Data-Buffer-Hitquote schließen. Das Verhältnis sollte deshalb einen Wert von zwei zu eins nicht unterschreiten. Das Problem lässt sich meist durch eine Erhöhung des
init<SID>.ora-Parameters SHARED_POOL_SIZE beheben.
Rekursive Calls und User Calls
Beachten Sie bei der Bewertung des Verhältnisses von rekursiven Calls zu
User Calls, dass der Wert für rekursive Calls direkt nach Start der Datenbankinstanz meist hoch ist, da der Data-Dictionary-Cache zunächst leer ist
und alle Abrufe für das Füllen des Caches rekursiv sind.
Parses
Vor der Ausführung einer SQL-Anweisung wird diese zunächst analysiert (geparst), wobei unter anderem die Zugriffsstrategien ermittelt
werden und geprüft wird, ob die verwendeten Tabellen und Spalten
tatsächlich in der Datenbank vorkommen. Das Ergebnis der Prüfung
wird im Shared Cursor Cache abgelegt, wobei bei erneuter Ausführung der Query nur noch auf diese Informationen zugegriffen wird.
Der Wert Parses zählt, wie oft SQL-Anweisungen geparst werden
mussten. Das Verhältnis von Parses zu User Calls gibt die durchschnittliche Parsing-Rate an, deren Wert nicht über 25% liegen sollte.
Hohe Parsing-Raten deuten auf ein Problem mit dem Halten des Cursors im Shared Cursor Cache (Shared SQL Area) hin. In diesem Fall
sollten Sie die Data-Dictionary-Cache-Qualität überprüfen und die
Größe des Shared Pools eventuell erweitern.
Reads/User Calls
Der Parameter Reads/User Calls ist das Verhältnis der aus dem
Datenpuffer gelesenen Blöcke zur Gesamtzahl der Anfragen an die
Datenbank seit dem Start der Datenbankinstanz und gibt an, wie
viele Blöcke im Mittel aus dem Datenpuffer gelesen werden müssen,
um eine Datenbankanfrage (Call) zu beantworten. Das Verhältnis
Reads/User Call ist ein Indikator dafür, ob eine weiterführende
Analyse der Shared SQL Area durchgeführt werden sollte. Ein hoher
292
Analyse der Datenbank
Wert (> 30) deutet auf teure und komplexe Querys bzw. SQL-Statements hin, die näher untersucht werden sollten.
7.3.3
Analyse der Shared SQL Area
Gegenstand der Statistikdaten in der Shared SQL Area sind z.B. Informationen zur Anzahl der Ausführungen einer SQL-Anweisung oder
die Zahl der logischen und physischen Lesezugriffe je SQL-Anweisung. Die SQL-Anweisungen werden im Shared-SQL-Bereich gespeichert. Um die Statistikdaten der Shared SQL Area zu analysieren,
starten Sie das DBA Cockpit und wählen im Menü Performance
Overview den Hauptbildschirm des Datenbankmonitors. Folgen Sie
hier dem Menüpfad SQL Statement Analysis 폷 Shared Cursor
Cache.
Im sich öffnenden Fenster Auswahlkriterien für Shared Cursor
Cache können Sie verschiedene Einschränkungen für Selektionskriterien wie Anzahl der Buffer Gets, Disk Reads oder Database User
vornehmen (siehe Abbildung 7.4). Bestätigen Sie dies mit einem
Klick auf den grünen Haken, und Sie erhalten eine Liste mit den SQLAnweisungen, über die die Datenbank seit Datenbankstart Statistiken vorhält (siehe Abbildung 7.5).
Abbildung 7.4 Analyse der Statistikdaten der Shared SQL Area (Oracle) – Kriterien
293
7.3
Herunterladen