Automatisierung des Datenbank-Betriebs (in einer sehr

Werbung
Automatisierung des Datenbank-Betriebs
(in einer sehr großen Oracle-Umgebung)
Effizienzsteigerung durch den Einsatz von Skripten und Prozeduren
Robert Kruzynski
Trivadis GmbH München
DOAG NRW 05.06.2007
Einleitung
 In einer großen Oracle-Umgebung gibt es häufig wiederkehrende
Aufgaben
 Software-Installationen
 Server und Datenbankumzüge
 Versions- und Plattformwechsel
 Wiederherstellung und Klonen von Datenbanken
 DB-Reorgs
 Diese Aufgaben lassen sich automatisieren
 realisiert wird es meistens in einer Skript-Sprache
 sehr wichtig ist dabei die Standardisierung einer Umgebung
(Namenskonventionen,Hardware- und Software-Stand,Schnittstellen
zu anderen Betriebsgruppen)
 der Initialaufwand ist zwar hoch, rechnet sich ab einer bestimmten
Menge an Datenbanken
 Der Pflegeaufwand sollte nicht vernachlässigt werden. Je höher der
Automatisierungsgrad, desto höher der Pflegeaufwand.
© 2007
Erfahrungsbericht
 Bei einem Trivadis-Kunden in München fallen jährlich folgende
Tätigkeiten an
 >300 Oracle RDBMS Installationen
 >300 Oracle Client Installationen
 >400 neue Datenbanken
 >200 gelöschte Datenbanken
 >200 Oracle Relinks (verursacht durch Server-Patch-Aktionen)
 >50 Serverablösen
 >800 Datenbankumzüge (inkl. Plattformwechsel)
 >800 Upgrades
 >200 bestellte Datenbankklons
 >100 Recoveries
 >5000 Tablespace-Erweiterungen bzw. Verkleinerungen
© 2007
Software-Installationen
 Ausgangspunkt ist ein existierender Oracle-User mit ausreichend
großem HOME-Verzeichnis
 Prüfung der Systemvoraussetzungen
 Erstellung der Umgebung (inkl. Installation der Betriebsprozeduren)
 Silent-Installation vom NFS-Share inklusive des aktuellen Patch-Sets,
CPU-Patch, Single-Patches (opatch), changePerm.sh
 Relink
 Funktionsprüfung
 Eintrag ins Inventar
© 2007
Relinks der Oracle-Software
 ein Relink erscheint einfach, kann aber mühsam und zeitraubend werden
(bei mehreren Software Installationen/Server)
 bestimmte Oracle-Versionen/Plattformen müssen speziell behandelt
werden (z.B. OID-Installationen)
 zunächst wird alles notwendige heruntergefahren, Überwachung und
Cronjobs deaktiviert
 es wird geprüft, ob bestimmte Libraries nicht in Verwendung sind
 Relink wird gestartet
 File-Permissions werden angepasst und kontrolliert
 jedes ORACLE_HOME wird einzeln überprüft
 sind bestimmte Libraries bzw. Binaries neu erstellt worden?
 funktionieren: sqlplus '/ as sysdba', tnsping, remote-connect?
 Startup, Aktivierung von Cronjobs und Überwachung
© 2007
Erstellung neuer Datenbanken
 Skript basiert auf einer Template-Datei
 bereitet die Umgebung vor (auf allen Cluster-Knoten)
 berücksichtigt versionsspezifische Einstellungen (z.B. init.ora-Parameter)
 erstellt eigene Dictionary-Erweiterungen und zusätzliche Tablespaces
 installiert nach Bedarf Oracle Text bzw. Statspack
 CPU Patch (catcpu.sql)
 generiert einen bzw. mehrere OID-Einträge
 erstellt einen Inventar- und Monitoring-Eintrag
© 2007
Löschen von Datenbanken
 Löschen bestimmter Dateien und Verzeichnisse lokal und auf allen
Cluster-Knoten
 Löschen der Crontab- und oratab-Einträge
 Löschen der OID-Einträge
 Löschen aus der Inventar- und Überwachungsdatenbank
© 2007
Datenübernahme-Tool
 verwendet Export/Import
 parallelisiert bis auf Subpartitionsebene, parallele Streams werden
automatisch (nach Größe) zusammengestellt
 Export und Import können wahlweise gleichzeitig gestartet werden und
kommunizieren über eine Pipe (keine Dumpfile-Erstellung)
 wahlweise Ausschalten des Archivelog Modus
 Daten-Import ohne Constraints, Trigger und Indizes
 Parallele Index-Erstellung (Syntax-Generierung aus dem Indexfile)
 MAXPERFORMANCE Schalter
 workarea_size_policy=manual
 sort_area_size=2GB, create_bitmap_area_size=200MB
 log_buffer=200MB, Verdopplung der SGA und DBWR-Prozesse
 Sonderbehandlung der größten Segmente
 Indizes werden PARALLEL und mit NOLOGGING angelegt
 Primary und Foreign Keys mit ENABLE NOVALIDATE
© 2007
Datenübernahme-Tool
 Übernahme der Oracle-Text Präferenzen
 Dependent-Indizes (FBI, Oracle Text) werden am Ende erstellt
 wahlweise paralleler MView-Refresh (Indizes zuerst UNUSABLE)
 Übernahme von SYS-Grants
 Abschließender Struktur-Import
 Statistik-Übernahme mittels DBMS_STATS (EXPORT/IMPORT)
 anschließender Recompile
 gemessene Performance
 Siebel CRM 400GB ab 6h
 Bank 1TB ab 12h
 DWH 2TB ab 24h
© 2007
Datenbankumzug/Plattformwechsel
 erstellt die Datenbank bzw. löscht eine bereits vorhandene Datenbank
 passt folgendes an
 init.ora Parameter
 Tablespaces
 Redo Logs
 schätzt / prüft UNDO und TEMP Platzbedarf
 startet Datenübernahme
 arbeitet „schrittweise“
© 2007
Upgrade I
 der Versionswechsel von 9 auf 10 wird mittels catupgrd.sql durchgeführt
 vor catupgrd.sql wird folgendes geprüft bzw. generiert
 dba_registry, bestimmte init.ora Parameter, letztes Backup, NCHARSet, Filesystem-Platz
 alle DB-Links auf ihre Funktionstüchtigkeit
 create database link Syntax wird generiert (für event. Downgrade)
 ein Struktur-Export wird erzeugt
 SYS- und PUBLIC-grants werden abgespeichert
 dba_2pc_pending wird geprüft und aufgeräumt
 validate structure aller SYS-objekte
 dbms_stats.gather_dictionary_stats
 9i-Statspack Daten werden gesichert und gelöscht
 das spfile wird vorbereitet
 Cronjobs und Überwachung werden temporär ausschaltet
 die Umgebung wird auf 10g umgestellt (alle Cluster-Knoten)
© 2007
Upgrade II
 startup upgrade, create tablespace sysaux, catupgrd.sql
 nach catupgrd.sql wird folgendes durchgeführt:
 Recompile
 Anpassung von ca. 30 Parameter im spfile
 Erstellung und Zuweisung eines eigenen Profils (mit
failed_login_attempts unlimited)
 move/rebuild aller CTXSYS-Segmente nach SYSAUX
 ggf. Statspack-Installation
 Größen bestimmter Tablespaces werden auf 70%-Belegung eingestellt
 Cronjobs und Überwachung werden aktiviert
 Inventar wird aktualisiert
 Full Backup wird gestartet
 Der Downgrade-Fall ist übrigens auch automatisiert und wird bei
kritischen Datenbanken getestet
© 2007
Klonen von Datenbanken
 Vorbereitung der Klondatenbank
 lokal oder remote mittels ssh
 Erstellung der Datenbankumgebung bzw. Löschen einer vorhandenen
Datenbank
 Konfiguration eines statischen Listeners
 DUPLICATE DATABASE (optional Skip Tablespace)
© 2007
Recoveries
 folgende Recovery-Arten werden unterstützt:
 Target (full bzw. partial)
 Disaster (Originalserver nicht erreichbar)
 Switch Target to incremental updated copy
 Activate incremental updated copy as a clone
 bei Bedarf werden das Spfile und die Controlfiles wiederhergestellt
 Disaster-Recovery kann auf einem beliebigen Server mit ausreichend
großen Filesystemen und Tape-Zugriff durchgeführt werden. Es wird
kein Zugriff auf den Originalserver benötigt. Die Datenbankumgebung
wird bei Bedarf automatisch erzeugt.
© 2007
Fazit
 Bei entsprechend hohen Automatisierungsgrad lassen sich Datenbanken
sehr effizient betreiben
 Die Fehlerquote wird dabei noch reduziert, weil wiederkehrende
Aufgaben exakt gleich durchgeführt werden
 Automatisierung erfordert aber viel DBA- und Scripting-Erfahrung
 Der Teufel steckt bekanntlich im Detail...
© 2007
Vielen Dank!
?
www.trivadis.com
[email protected]
Herunterladen