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 Parrac8361 – Parrac8368 Parrac836x ASM 256 GB RAM 2 x DualCore 8GBit FC Infiniband IC Bookit pro Filiale sequentielles Filesystem CIF-Shares Bookit pro Filiale sequentielles Filesystem CIF-Shares 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 Netapp 6080 Metrocluster IO-Problem 500 Harddisks 2 TB Flash Cache Netapp 6080 Metrocluster 500 Harddisks 2 TB Flash Cache Bookit pro Filiale sequentielles Filesystem CIF-Shares ... Single-Threaded Performance 30 MB/s Lange Backuplaufzeiten Abstürzende Knoten – Probleme CRS 3. Probleme - Zusammenfassung • Instabiles RAC • • • • • Problematische Antwortzeiten im WWS und DWDB Viel Aufwand für Diagnose und Tuning Backuplaufzeiten • • • • unerwartete Reboots ausgelöst durch CRS instabile Treiber für Infiniband bzw. RDS 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 gute Software, zu viele Platten für gute Performance, automatisches Tierung? • EMC Guter POC, sehr gute Performance, automatisches Tiering, teurer als Exadata Szenario • Fujitsu✔ guter POC, einfache Software • Oracle Exadata + vorhandene Netappinfrastruktur ✔ 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 Applikationen mit vielen FTS 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 • • • • • • 5. Ergebnisse Exadata V1 POC (1) Machine / DB Test Script Result actual cluster Result Exadata Performance gain factor ETCD DWDB Monthly hitlist 83_DBH_RennerMonat.c md 12h 50min 14 ETCA DB3 Weekly hitlist 84_DBH_RennerWoche. cmd 2h 9min 13 Comment 2 nodes 3 cells 5. Ergebnisse Exadata V1 POC (2) Machine / DB Test Script Result actual cluster Result Exadata Performance gain factor 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 1:17min 2:10min Max. 50 4:05min Users 1:36min 1:27min able 1:40min to run 5:36min 1000+ Users able to run on DBM with excellent response times Comment 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 Oracle Exadata Datenbankserver 2 Datenbankserver 1 Oracle Support Infinibandswitch 2 Adminswitch Infinibandswitch 1 VPN-Tunnel Cellserver 1 Cellserver 2 Cellserver 3 Oracle Platinum Gateway 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_L ESER_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,HUD U_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 Inb etriebnah me einer (WWS 2 T produktiv B) nach 1 en DB 0 Tagen n ach Ausli eferung! 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 ! e • Schwer ein geeignetes Zeitfenster zu finden er Fäll d ! l l n a e F t i n e e b r d a r r ü e f e n s e s h • Patchen am Wochenende – kurzfristig unmöglich e c z t o a r P p h s c e t g i d Pa n ä ! t t s r t s o b p l p e u S • SPatching nicht für Bugs, nur im viertelbzw. halbjährlichen r e n r e t x E Rhythmus 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]