MaxDB / SAPDB

Aus Geisterle wiki
Wechseln zu: Navigation, Suche

MaxDB Partitionierungsberechnung

Zur Zeit darf ich vermehrt ins Projektmanagement. Dabei geht es auch um Datenbanken, u.a. um die MaxDB bzw. heute die SAPDB Datenbank der SAP. Aus verschiedenen Gründen verteilt man die Datenstorages der MaxDB auch bei einem SAN auf mehrere partitionen. Da ich in einem Projekt (RedHat 4, MaxDB 7.6 + SAP ECC 6.0) auf die Problemstellung gestoßen bin drei Festplattendevices mit unterschiedlichen Größen vorfinde. Darauf sollen gleichgroße Partitionen für die DATA Files bzw. in meinem Fall für RAW Devices erstellt werden.

Die Anzahl der Partitionen wird mit einer Formel von der SAP vorgegeben.

 <math>Wurzel aus zu erwartende Datenbankgröße, aufgerundet!</math>

Ich hab mir für diese Berechnungen eine Excel Datei angelegt um mir die herumrechnerei zu erleichtern. Die Datei hat drei Excel Seiten. DB Größe, Festplatten Größe und Dokumentation. Man darf diese Excel Datei gerne nutzen falls man vor einem ähnlichen Problem steht. Ich stell sie zur freien Verfügung.

Wer grundsätzlich nicht versteht was ich da zusammengebraut habe lässt allerdings bitte die Finger davon. Ich übernehme auch keine Haftung wenn sich einer die Partitionierung deswegen zerschießt. Für Fragen, Anregungen und Verbesserungen bin ich offen soweit es meine Zeit zulässt.

Die Datei gibt es hier zum herunterladen: Medium:PartitionsBerechnung MaxDB.xls.zip


XUSER Daten pflegen / benutzen

Die XUSER werden vom SAPINST selbstständig angelegt.

 DEFAULT -> sap<sid>
 c -> CONTROL
 w -> SUPERDBA
 $ xuser -h

Optionen:

 -U User key
 -u Benutzername
 -d Datenbankname
 -n Sername
 -S SQL-Mode
 -t Timeout
 -I Isolation level

Beispiel:

 xuser -U DEFAULT -u sap<sid>, passwd -d <SID> -n <host> -S SAPR3 set

DB Threads einer MaxDB

Für eine Übersicht über die laufenden Threads innerhalb einer MaxDB gibt es den Befehl x_cons, welcher mir auf der Console die Verfügbaren Threads anzeigt:

 x_cons <SID der DB> show rte

Zu Beginn werden die Spezialthreads aufgeführt. Bei weinem Windows OS folgen die IO Worker-Prozesse. Folgende Kürzel sind zu finden:

  • TW Tracewriter
  • AL Logwriter
  • UT Utility Task
  • SV Server Tasks
  • EV Event Handler
  • TI Timer Task
  • DW Data Writer (Pager)
  • US User Task

Ändern von Parametern

  • Mit dem Database Manager, graphisches Tool, auslesen oder ändern
  • Mit Commandozeilentool: dbmcli
 aufrufen: <SID>adm $ dbmcli -d <SID> -u user,password
 Alle Anzeigen: param_directgetall
 Anzeigen: param_directget CACHE_SIZE
 Ändern: param_directput CACHE_SIZE 100000

Wirksam nach Neustart aus dem OFFLINE Zustand

Wichtige Parameter

RAW Devices

SAP empfiehlt für Unix, alle Volumes auf RAW Devices abzulegen!

Hintergrund: - Sicherheit - Performance

Allerdings wird auch bei RAWDEVICES einen internen File-System-Cache mit benutzt falls folgene Parameter NICHT gesetzt sind:

 UseFilesystemCacheForVolume
 UseFilesystemCacheForBackup

Damit wird Direct IO des Betriebssystems (O_DIRECT) für die Volumes und Backups genutzt. Ausserdem beim Mounten von Filesystemen von Fremdherstellern unter Unix bitte die O_DIRECT Option oder ähnliche Option nutzen!

Wichtige Umgebungsvariablen

Abwärtskompatible DBProgramme liegen im Verzeichnis /sapdb/programs, nachzuprüfen auch mit:

 dbmcli dbm_getpath IndepProgPath

Konfigurationsdaten und Diagnosedateien liegen unter /sapdb/data, aufruf mit:

 dbmcli dbm_getpath IndepDataPath

PATH-Variable in SYSTEM Umgebung

 \sapdb\programs\bin
 \sapdb\programs\pgm

PATH-Variable in USER Umgebung

 \sapdb\<SID>\db\bin
 \sapdb\<SID>\db\pgm
 \sapdb\<SID\db\sap

Unter UNIX sollten die Pfadinformationen angepasst und im .dbenv_<Servername>.<shell> des Datenbankadministrator <sid>adm eingetragen werden


Problemfälle

Runinstaller stoppt mit Fehlermeldung "missing .so Files"

Der Runinstaller in 7.00 SR2 enthält einen Fehler der dazu führt das bestimmte Librarys nicht entpackt werden. Die .so Dateien für den Sapinst liegen unter /tmp/sapinst_exe<vieleNummern>/ Damit der Sapinst seine .so Dateien nocheinmal auspackt führe ich folgenden Befehl aus:

 mkdir /tmp/test
 cd /tmp/test
 <PfadzumInstallationMaster>/LINUX<XX>/sapinst -extract

anschließend werden die Librarys die der Sapinst braucht um zur MaxDB zu connectieren entpackt. Die neu entpackten .so Dateien in unser /tmp/sapint_exe<vieleNummern>/ Verzeichnis zurückkopieren.

 cp /tmp/test/* /tmp/sapinst_exe<vieleNummern>/

Dabei keine vorhanden Daten überschreiben...