exadata database maschine - paragon data · agenda 1. kurzprofil paragon data 2. systemlandschaft...
TRANSCRIPT
DOAG Konferenz 2013 Exadata Database Maschine – Die Konsolidierungsplattform Malthe Griesel
Agenda
1. Kurzprofil Paragon Data
2. Systemlandschaft vor Exadata
3. Probleme – Zusammenfassung
4. Wie es zur Exadata kam - Auswahlprozess
5. Ergebnisse Exadata V1 POC
6. Exadata Anlieferungsprozess und Aufbau
7. Exadata Datenbankmigration/ Umzug
8. Monitoring
9. Betrieb Exadata
10. Persöhnliche Erfahrung mit der Exadata
11. Resume
12. Q&A
1. Kurzprofil Paragon Data
• Schwerpunkt Buchhandel: DBH, Hugendubel, Weltbild, Weiland etc.
• IT-Dienstleister
• Hosting und Betrieb von Oracle-Datenbanken
• Hochsicherheitsrechenzentrum
• Oracle-Partner
1. Kurzprofil: Unsere Kunden
2. Systemlandschaft vor Exadata
Parrac836x ASM 256 GB RAM 2 x DualCore 8GBit FC Infiniband IC
Netapp 6080 Metrocluster 500 Harddisks 2 TB Flash Cache Netapp 6080
Metrocluster 500 Harddisks 2 TB Flash Cache
Bookit pro Filiale sequentielles Filesystem CIF-Shares
Bookit pro Filiale sequentielles Filesystem CIF-Shares
Bookit pro Filiale sequentielles Filesystem CIF-Shares
Parrac8361 – Parrac8368 8 Knoten RAC 8 Datenbanken, darunter DWDB (6 TB), WWS (2 TB), ... rund 13 TB Datenbanken, sehr starkes Wachstum Parttitioning, RAC, PQ, Oracle Text, ...
...
DB Server 1 TEST ...
DB Server 2 PROD ... ...
Zentraler Storage/ San IO-Problem
Single-Threaded Performance 30 MB/s Lange Backuplaufzeiten Abstürzende Knoten – Probleme CRS
3. Probleme - Zusammenfassung
• Instabiles RAC • unerwartete Reboots ausgelöst durch CRS • instabile Treiber für Infiniband bzw. RDS
• Problematische Antwortzeiten im WWS und DWDB • Viel Aufwand für Diagnose und Tuning • Backuplaufzeiten
• Netapp Snapdrive gänzlich ungeeignet für Oracle ASM • Inkrementelle RMAN Backups dauern teilweise sehr lange
• Schwierigkeiten mit zugesicherten SLA‘s • Schwierigkeiten mit dem Support
• Netapp à Oracle und Oracle à OS und OS à Netapp und Oracle (OS = Oracle Unbreakable Linux)
4. Ausschreibungsprozess SAN – Wie es zur Exadata kam
Ausschreibung großer Sanhersteller: • Netapp
• EMC
• Fujitsu✔
• Oracle Exadata + vorhandene Netappinfrastruktur
guter POC, einfache Software
gute Software, zu viele Platten für gute Performance, automatisches Tierung?
Guter POC, sehr gute Performance, automatisches Tiering, teurer als Exadata Szenario
✔
4. Gründe für die Entscheidung für Oracle Exadata
• Ein Großteil des Sanspeichers ist für die Oracle Datenbanken • Lizenzkonsolidierung • Performance/ Offloading • Skalierbarkeit • Besserer Oracle Support/ Alles aus einer Hand – HW, SW, OS • Oracle Platinum Support, 24 x 7 Überwachung, Patching durch
Oracle • Einsparung an Zeit, da kein Tuning mehr notwendig • Super Ergebnisse POC Exadata V1
Applikationen mit vielen FTS
5. Ergebnisse Exadata V1 POC (1)
Machine / DB
Test Script Result actual cluster
Result Exadata
Performance gain factor
Comment
ETCD DWDB
Monthly hitlist 83_DBH_RennerMonat.cmd 12h 50min 14
ETCA DB3
Weekly hitlist
84_DBH_RennerWoche.cmd 2h 9min 13 2 nodes
3 cells
5. Ergebnisse Exadata V1 POC (2)
Machine / DB
Test Script Result actual cluster
Result Exadata
Performance gain factor
Comment
ETCD CASH
Small throughput
select min(DBP_SEQUENZ) from cash.DATA_BON_POS
8min 4sec 120
ETCD CASH
OLTP Test test_poc_oltp.cmd 1 Instance: 10Users 1 Instance: 50Users
1 Inst., 100Users All Instances: 10Users All Instances: 50Users All Instances: 100Users All Instances: 1000Users
Max. 50 Users able to run
1:17min 2:10min
4:05min 1:36min 1:27min 1:40min 5:36min
1000+ Users able to run on DBM with excellent response times
No further tests could be conducted on the existing customer cluster, because the system is not able to run a high load.
6. Exadata Anlieferungsprozess
Exadata kauf man nicht wie normale Hardware: • Viele Telefonkonferenzen vorher • Site Survey • Besichtigung der Spedition • Kein Neigen des Exadata Schrankes um mehr als 7°! • Der Reracking Prozess kostet Geld!
à Derjenige, der Exadata betreiben und kaufen will, muss Zeit für den Anlieferungsprozess mitbringen
6. Platinum Support
• 24 x 7 Monitoring • Fehleranlyse und
Lösungsvorschlag • Patching durch Oracle
Ingineure
Cellserver 3
Cellserver 2
Cellserver 1
Oracle Exadata
Infinibandswitch 1
Adminswitch
Infinibandswitch 2
Datenbankserver 1
Datenbankserver 2
Oracle Platinum Gateway
Oracle Support
VPN-Tunnel
6. Exadata Erstinstallation durch die Firma Oracle
Drei Tage: 1. Hardwareaufbau und Hardwaretests
2. Softwareinstallation
3. Konfiguration und Installation Platinum Gateway Server, Dokumentation
7. Exadata Datenbankmigration/ Umzug
Verschiedene Szenarien werden von Oracle angeboten: • Export/ Import via Datapump
• Dataguard
• Create table as select ... mit DB-Link
7. Exadata Datenbankmigration/ Umzug
• 12 Datenbanken waren von Unterschiedlichen System auf die Exadata umzuziehen
• Immer der selbe Weg, gut getestet: • Export via Datapump auf NFS-Device • Import via Datapump vom NFS-Device
• Egal ob große DB (Datawarehouse 6 TB oder kleine DB Zeiterfassung 2 GB)
Export Datawarehouse 6TB: ca. 4,5 Std Import Exadata ca. 2,75 Std
7. Exadata Datenbankmigration/ Umzug
import_dwdb.sh: export LOGFILE=import_dwdb_exadata.log!export LOGFILE_WITH_PATH=/export/export_dwdb/${LOGFILE}!export ANFANG="`date '+%Y.%m.%d %H:%M:%S'`"!!impdp system/password \!JOB_NAME=IMPORT_DWDB_EXADATA \!SCHEMAS=\(BI4_AUDIT,BI4_CMS,BODB,BODB2,BOXI,BOXI4CMS,BOXI4_AUDIT,BOXI4_CMS,BO_AUDIT,BO_LESER_DBH,BO_LESER_FS,BO_LESER_GAN,BO_LESER_HAB,BO_LESER_HUG,BO_LESER_KAR,BO_LESER_KONZ,BO_LESER_PART,BO_LESER_SUS,BO_LESER_VERLAG,BO_LESER_VGW,BO_LESER_WBP,BO_LESER_WEI,BO_LESER_WT,BUCH,BUCH2,CASHWB_LESE,CASH_ARCHIV_USER,HAB,HELP,HUDU_INFO,JWWS,MONITOR,MONITORING,TOAD,WBP,WBP2\) \!DUMPFILE=DMPDIR1:expdp_dwdb_2013.03.20_21-41-01-Wednesday-Wk.11_01.dmp \! …! DMPDIR1:expdp_dwdb_2013.03.20_21-41-01-Wednesday-Wk.11_32.dmp \!remap_tablespace=DAT4\:DATA, \! IDX_VERD\:IDX4, \! HUDU_WEB\:USR \!LOGFILE=DMPDIR1:${LOGFILE} \!parallel=32!export ERRORCODE=$?!export ENDE="`date '+%Y.%m.%d %H:%M:%S'`"!!echo " -------------------------------------- " >> $LOGFILE_WITH_PATH!echo " Instanz : $ORACLE_SID " >> $LOGFILE_WITH_PATH!echo " Beginn : $ANFANG " >> $LOGFILE_WITH_PATH!echo " Ende : $ENDE " >> $LOGFILE_WITH_PATH!echo " Errorcode : $ERRORCODE " >> $LOGFILE_WITH_PATH!echo " -------------------------------------- " >> $LOGFILE_WITH_PATH!!mail -s "IMPORT DWDB EXADATA - $ANFANG bis $ENDE / Errorcode = $ERRORCODE" [email protected] < $LOGFILE_WITH_PATH!
Wichtig: Statistiken hinterher analysieren ggf. Indizes nachträglich aufbauen sort_area_size!
Erste Inbetriebnahme einer produktiven DB (WWS 2 TB) nach 10 Tagen nach Auslieferung!
8. Monitoring
Gridcontrol 12c • Für den Betrieb von Exadata sind das Performance- und
Changemanagementpack der DB Pflicht/ ein Muss! • Lizenzkosten!
Paragon setzt bei der Überwachung auf Nagios à sehr viel einfacher, weil viel Wissen vorhanden ist
8. Monitoring – Grid Control Exadata Plugin
9. Betrieb Exadata
Komplexität der Exadata ist nicht zu unterschätzen • Oracle Enterprise Linux UEK Kernel • Virtual Memory Management, Hugepages • Infiniband • Cellserver, Funktion und Betrieb • Wie tausche ich oder der Oracle Support eine
Festplatte? • cellcli/ dcli
10. Persöhnliche Erfahrung mit der Exadata
Super Resonanz seit der Einführung • Super Performance, gutes Antwortzeitverhalten
Aber die Performance des Datawarehouses ist gleich geblieben bzw. hat sich verschlechtert • Ein Verdichtungsprozess (PL/SQL) lief vorher 10
Minuten auf der Exadata 34 Stunden!
10. Persöhnliche Erfahrung mit der Exadata
INSERT INTO TMP_VERDICHTUNG_VERKAUF_HUG (FILIALE_NR, WG, K1, K2, K3, K4, K5, PRAEFIX, STICHTAG, MWST_SCHL) SELECT FILIALE_NR, WG, SUM(ANZAHL_MIT_BESTAND), SUM(BESTAND), SUM(BESTANDSWERT), SUM(ZL_BESTAND), SUM(ZL_WERT), PRAEFIX, :B1 , MWST_SCHL FROM ( SELECT FILIALE_NR, NVL(LPAD(TRIM(WG),3,'0'),'000') WG , SUM(ZAEHLER) AS ANZAHL_MIT_BESTAND, SUM(BESTAND) AS BESTAND, SUM(WERT) AS BESTANDSWERT, DECODE(MIN(ART_ZL_KZ),'ZL',SUM(BESTAND),0) ZL_BESTAND, DECODE(MIN(ART_ZL_KZ),'ZL',SUM(WERT),0) ZL_WERT, PRAEFIX, MWST_SCHL FROM ( SELECT /*+ INDEX(a DIM_ARTIKEL_K20) */ B.FILIALE_NR AS FILIALE_NR, A.HUG_WG_NR WG, DECODE(A.MWST, 7, 1, 2) MWST_SCHL, MIN(Z.ART_ZL_KZ) ART_ZL_KZ, CASE WHEN DECODE (SUBSTR(AENDERUNG_KZ, 1, 8), 'Inventur', BESTAND_AENDERUNG, 'unterjäh', NVL(BESTAND_AENDERUNG,0), 'Bestands', NVL(BESTAND_AENDERUNG,0), 'Umbuchun', DECODE(SUBSTR(AENDERUNG_KZ,1,13), 'Umbuchung auf',NVL(BESTAND_AENDERUNG,0), DECODE(SIGN(NVL(BESTAND_AENDERUNG,0) + NVL(B.BESTAND,0)),1,NVL(BESTAND_AENDERUNG,0) + NVL(B.BESTAND,0),0)), 'manuelle', NVL(BESTAND_AENDERUNG,0), DECODE(SIGN(NVL(BESTAND_AENDERUNG,0) + NVL(B.BESTAND,0)),1,NVL(BESTAND_AENDERUNG,0) + NVL(B.BESTAND,0),0)) > 0 THEN 1 ELSE 0 END ZAEHLER, FORMAT_EAN_ISBN( A.ART_EAN_NR, A.ART_ISBN_NR1)AS PRAEFIX, DECODE (SUBSTR(AENDERUNG_KZ, 1, 8), 'Inventur', BESTAND_AENDERUNG, 'unterjäh', NVL(BESTAND_AENDERUNG,0), 'Bestands', NVL(BESTAND_AENDERUNG,0), 'Umbuchun', DECODE(SUBSTR(AENDERUNG_KZ,1,13), 'Umbuchung auf',NVL(BESTAND_AENDERUNG,0), DECODE(SIGN(NVL(BESTAND_AENDERUNG,0) + NVL(B.BESTAND,0)),1,NVL(BESTAND_AENDERUNG,0) + NVL(B.BESTAND,0),0)), 'manuelle', NVL(BESTAND_AENDERUNG,0), DECODE(SIGN(NVL(BESTAND_AENDERUNG,0) + NVL(B.BESTAND,0)),1,NVL(BESTAND_AENDERUNG,0) + NVL(B.BESTAND,0),0) ) AS BESTAND, DECODE (SUBSTR(AENDERUNG_KZ, 1, 8), 'Inventur', BESTAND_AENDERUNG, 'unterjäh', NVL(BESTAND_AENDERUNG,0), 'Bestands', NVL(BESTAND_AENDERUNG,0), 'Umbuchun', DECODE(SUBSTR(AENDERUNG_KZ,1,13), 'Umbuchung auf', NVL(BESTAND_AENDERUNG,0), DECODE(SIGN(NVL(BESTAND_AENDERUNG,0) + NVL(B.BESTAND,0)),1,NVL(BESTAND_AENDERUNG,0) + NVL(B.BESTAND,0),0)), 'manuelle', NVL(BESTAND_AENDERUNG,0), DECODE(SIGN(NVL(BESTAND_AENDERUNG,0) + NVL(B.BESTAND,0)),1,NVL(BESTAND_AENDERUNG,0) + NVL(B.BESTAND,0),0) ) * ( (SELECT NVL (TO_NUMBER(SUBSTR(MAX(TO_CHAR (ART_DATWE,'yyyymmdd')|| TO_CHAR (VK_PREIS_SOLL)),9)), 0) FROM DIM_ARTIKEL WHERE NVL (DUMMY_CHAR1, 'null') != 'R' AND ART_REF_NR = B.ART_REF_NR AND ART_DATWE < :B3 AND MANDANT = 'HUG' )) AS WERT FROM DIM_ARTIKEL_BESTAND_HUG B, DIM_ARTIKEL A, V_HISTORY_ZL_OO_DET_RELEVANT Z WHERE 1 = 1 AND B.FILIALE_NR = :B2 AND NVL (A.DUMMY_CHAR1(+), 'null') != 'R' AND B.ART_REF_NR = A.ART_REF_NR (+) AND B.ART_DATWE = A.ART_DATWE (+) AND A.MANDANT (+)= 'HUG' AND (B.FILIALE_NR, TO_CHAR(NVL(B.DATUM,TO_DATE('01.01.2011','dd.mm.yyyy')),'yyyymmddhh24miss')||TO_CHAR(INSTR(AENDERUNG_KZ,'CH_',1))||LPAD(TO_CHAR(B.LFDNR),20,'0')) = (SELECT FILIALE_NR, MAX(TO_CHAR(NVL(C.DATUM,TO_DATE('01.01.2011','dd.mm.yyyy')),'yyyymmddhh24miss')||TO_CHAR(INSTR(C.AENDERUNG_KZ,'CH_',1))||LPAD(TO_CHAR(C.LFDNR),20,'0')) FROM DIM_ARTIKEL_BESTAND_HUG C WHERE 1=1 AND C.ART_REF_NR = B.ART_REF_NR AND C.FILIALE_NR = B.FILIALE_NR AND C.DATUM >= (SELECT MAX(I.DATUM) FROM SD_INVENTURDATUM_DBH I WHERE I.FILIALE_NR (+) = C.FILIALE_NR AND I.FIRMA_NR (+) = '11' AND I.DATUM < :B1 ) AND C.DATUM < :B3 GROUP BY C.FILIALE_NR, C.ART_REF_NR ) AND B.ART_REF_NR = Z.ART_REF_NR (+) AND Z.STICHTAG (+) = :B1 GROUP BY B.FILIALE_NR, A.HUG_WG_NR, DECODE(A.MWST, 7, 1, 2), FORMAT_EAN_ISBN( A.ART_EAN_NR, A.ART_ISBN_NR1), DECODE (SUBSTR(AENDERUNG_KZ, 1, 8), 'Inventur', BESTAND_AENDERUNG, 'unterjäh', NVL(BESTAND_AENDERUNG,0), 'Bestands', NVL(BESTAND_AENDERUNG,0), 'Umbuchun', DECODE(SUBSTR(AENDERUNG_KZ,1,13), 'Umbuchung auf',NVL(BESTAND_AENDERUNG,0), DECODE(SIGN(NVL(BESTAND_AENDERUNG,0) + NVL(B.BESTAND,0)),1,NVL(BESTAND_AENDERUNG,0) + NVL(B.BESTAND,0),0) ), 'manuelle', NVL(BESTAND_AENDERUNG,0), DECODE(SIGN(NVL(BESTAND_AENDERUNG,0) + NVL(B.BESTAND,0)),1,NVL(BESTAND_AENDERUNG,0) + NVL(B.BESTAND,0),0) ), B.ART_REF_NR ) GROUP BY FILIALE_NR, NVL(LPAD(TRIM(WG),3,'0'),'000'), MWST_SCHL, PRAEFIX) GROUP BY FILIALE_NR, WG, PRAEFIX, MWST_SCHL;
10. Persöhnliche Erfahrung mit der Exadata
Vor dem Tuning lief das Statement rund 34 Stunden • Schlechte IO-Performance des Altsystems hat zu massiver Index-Benutzung im DW geführt • 8 Knoten RAC hatte bessere PQ-Performance
Nach dem Tuning des Statements läuft das Statement nur noch 9 Sekunden • Funktionen verhindern das Offloading • PQ einstellen, auto dop, DBMS_RESOURCE_MANAGER.CALIBRATE_IO,
DBA_RSRC_IO_CALIBRATE • SQL Statement für Optimizer umschreiben, Subselects eliminieren
10. Persöhnliche Erfahrung mit der Exadata
Bug 16809426 EXADATA ABSOLUTE SERVICE TIME VIOLATION DETECTED ON ONE DISK AFFECTING OTHERS Patch: Quarterly Patch for Exadata (OCT 2013 - 11.2.0.3.21) Eine der ersten beiden Platten der Cellserver fallen aus und bringen das System zu stehen, schließlich und letztlich rebooten die Computenodes
10. Persöhnliche Erfahrung mit der Exadata
Platinum Support – Patchen • Schwer ein geeignetes Zeitfenster zu finden
• Patchen am Wochenende – kurzfristig unmöglich
• Patching nicht für Bugs, nur im viertel- bzw. halbjährlichen Rhythmus
Patchprozesse erarbeiten!
Selbstständiges Patchen für den Fall der Fälle!
Externer Support!
11. Resume
Positiv • Performance! • Exadata ist eine gute Konsolidierungsplattform! Nicht zu vergessen • Exadata ist sehr komplex! • Erfahrungen müssen gesammelt werden! • Arbeitsersparnis, sicherlich nicht sofort! Negativ • Platinum Support ist sehr verbesserungsfähig, Idee ist sehr gut • Exadata Support ist anders, Qualität ist nicht immer gut
11. Resume
11. Resume
Fragen und Antworten
Q & A
Vielen Dank
Malthe Griesel [email protected]