Presentation held at DOAG 2008 conference in Nuernberg, Germany about the optimization of a hugh Siebel CRM installation with an Oracle 4 node RAC database.
4. 29.11.2008 Seite 4
DOAG 2008
Wer bin ich?
• Dipl.-Informatiker aus Leidenschaft
• 17 Jahre freiberuflich tätig
• 10 Jahre Siebelerfahrung
• Seit 2 Jahren BzYxS.com
5. 29.11.2008 Seite 5
DOAG 2008
Was macht BzYxS.com?
• Schulungen & Consulting
u.a. für die Oracle University
• Konfigurationsreviews im Siebelumfeld
• Komponententuning im Siebelumfeld
• Datenbanktuning im Oracleumfeld
• Entwicklung spezieller Analysesoftware
– eScriptAdvisor (eScript Analyse)
– QueryAdvisor (Datenbankanalyse)
6. 29.11.2008 Seite 6
DOAG 2008
Warum bin ich… hier?
• Darstellung der Erfahrungen aus der
Inbetriebnahme einer sehr großen
Siebelanwendung und anschließend
notwendigen Optimierung der Datenbank.
• Sehr groß = 20.000 Benutzer
• Datenbank = 4er 10g RAC
• Mehrere TeraByte produktiver Daten
7. 29.11.2008 Seite 7
DOAG 2008
Kapitel 2
• Siebel in 5 Minuten
8. 29.11.2008 Seite 8
DOAG 2008
Hinweis
• Die folgenden Darstellungen wurden für
einen besseren Überblick technisch stark
vereinfacht.
10. 29.11.2008 Seite 10
DOAG 2008
Systemarchitektur
WebServer
User SiebelServer
DB
SWSE AOM
FSMgr.
Gateway
SiebelFilesystem
SiebelEnterprise
11. 29.11.2008 Seite 11
DOAG 2008
Systemarchitektur
WebServer
User SiebelServer
DB
SWSE AOM
User
FSMgr.
Gateway
User SiebelFilesystem
SiebelEnterprise
…
12. 29.11.2008 Seite 12
DOAG 2008
Systemarchitektur
IP-Based
Automatic Component Balancing /
Routing
Round- Siebel Server Clustering
Robing
WebServer
?
User SiebelServer
DB
SWSE AOM
User
Distributed Share
FSMgr.
Gateway
User SiebelFilesystem
SiebelEnterprise
Clustering
…
13. 29.11.2008 Seite 13
DOAG 2008
Systemarchitektur
IP-Based
Automatic Component Balancing /
Routing
Round- Siebel Server Clustering
Robing
WebServer
RAC
User SiebelServer
DB
SWSE AOM
User
Distributed Share
FSMgr.
Gateway
User SiebelFilesystem
SiebelEnterprise
Clustering
…
14. 29.11.2008 Seite 14
DOAG 2008
Systemarchitektur
15. 29.11.2008 Seite 15
DOAG 2008
Manuelle Prozesse
16. 29.11.2008 Seite 16
DOAG 2008
Manuelle Prozesse
17. 29.11.2008 Seite 17
DOAG 2008
Manuelle Prozesse
18. 29.11.2008 Seite 18
DOAG 2008
Manuelle Prozesse
SWSE
SWSE SWSE
AOM SWE
AOM SWE AOM SWE
Script DBC
Script DBC Script DBC
DBC Workflow
DBC Workflow DBC Workflow
EAI
EAI EAI
S_CONTACT
DB
19. 29.11.2008 Seite 19
DOAG 2008
Automatisierte Prozesse
20. 29.11.2008 Seite 20
DOAG 2008
Automatisierte Prozesse
21. 29.11.2008 Seite 21
DOAG 2008
Automatisierte Prozesse
22. 29.11.2008 Seite 22
DOAG 2008
Automatisierte Prozesse
23. 29.11.2008 Seite 23
DOAG 2008
Automatisierte Prozesse
24. 29.11.2008 Seite 24
DOAG 2008
Automatisierte Prozesse
SWSE
SWSE SWSE
AOM SWE
AOM SWE AOM SWE
Script DBC
Script DBC Script DBC
DBC Workflow
DBC Workflow DBC Workflow
EAI
EAI EAI
S_WF_.....
DB
25. 29.11.2008 Seite 25
DOAG 2008
Zusammenfassung
• Jeder Benutzer- und Komponententask
hat eine eigene Datenbanksession.
• Je nach Anmeldeverfahren hat die
Datenbanksession eine individuelle oder
eine generischen Kennung.
• Datenbanktabellen werden zur Ablage
von Benutzer- und Komponentendaten
zur Laufzeit verwendet.
• Siebelinstallationen sind gemeinhin über
mehrere Rechner verteilt.
26. 29.11.2008 Seite 26
DOAG 2008
Kapitel 3
• Datenbankschema
27. 29.11.2008 Seite 27
DOAG 2008
Grundlagen
• Anzahl der Tabellen: 4,287
• Anzahl der Spalten: bis zu 998
• Anzahl der Indices: 21,732
• Generisches Schema, d.h
– Nicht alle Tabellen werden in einer
konkreten Installation Verwendet.
– Nicht alle Felder werden in den Tabellen
verwendet.
28. 29.11.2008 Seite 28
DOAG 2008
Namenskonventionen Tabellen
• Siebeltabellen beginnen mit S_
• Bei eigenen Schemaerweiterungen:
– Tabellen beginnen mit CX_
– Spalten beginnen mit X_
• Tabellen mit _X (1:1) oder _XM (1:M)
stellen zusätzliche Felder zur Verfügung.
• EIM_ - Zwischentabellen zum Daten-
import über die Komponente „Enterprise
Integration Manager“
29. 29.11.2008 Seite 29
DOAG 2008
Namenskonventionen Indices
• Indexnamen sind Programm
– P1… PrimaryKey (unique/notNull)
– U1…99 UserKey (unique & heilig)
Kombination aus Feldern, um die Gleichheit 2er
Datensätze beim Export/Import festzustellen und
die Eindeutigkeit zu gewährleisten.
– F1…99 ForeignKey
– Keine Bitmap-Indices
– Keine funktionalen Indices
30. 29.11.2008 Seite 30
DOAG 2008
Tabellenaufbau
• ROW_ID ist immer der Primärschlüssel!
• Es gibt 7, bzw. 9 Systemspalten, die u.a.
darüber Auskunft geben, wann der
Datensatz angelegt und verändert wurde.
• Es wird der Typ Long verwendet.
• Bei Schemaerweiterungen liegen die
Spalten vom Typ Long nicht mehr am
Tabellenende.
• In Siebel 8 kommt der Typ Clob hinzu.
31. 29.11.2008 Seite 31
DOAG 2008
Referentielle Integrität
• Fremdschlüsselspalten enden auf _ID und
haben einen siebelgenerierten Wert.
• Veränderungen dieser Werte gefährden
die referentielle Integrität!
• Veränderung anderer Werte gefährden
den Datenaustausch mit Remote Clients.
• Deshalb: Niemals eine Datenänderung
direkt mit SQL durchführen!
(Ausnahme: Ostern & Weihnachten fallen zusammen!)
32. 29.11.2008 Seite 32
DOAG 2008
Synchronisation
• Synchronisation von Siebeltasks über
– Kapselung durch die einzelnen
Transaktionen auf Datenbankebene.
– Systemspalte Modification_Num als
Änderungszähler in jeder Siebeltabelle.
33. 29.11.2008 Seite 33
DOAG 2008
SQL-Struktur
• SELECT T8.CONFLICT_ID,T8.LAST_UPD,T8.CREATED,
• T8.LAST_UPD_BY,T8.CREATED_BY,T8.MODIFICATION_NUM,T8.ROW_ID,...
•
• FROM SIEBEL.S_ACTIVITY_ATT T1,
• SIEBEL.S_SRV_REQ T2,
• SIEBEL.S_CONTACT T3,
• SIEBEL.S_ORG_EXT T4,
• SIEBEL.S_PARTY T5,
• SIEBEL.S_EVT_MAIL T6,
• SIEBEL.S_EVT_ACT_SS T7,
• SIEBEL.S_EVT_ACT T8
•
• WHERE T8.TARGET_OU_ID = T4.PAR_ROW_ID (+) AND
• T8.SRA_SR_ID = T2.ROW_ID (+) AND
• T8.ROW_ID = T6.PAR_ROW_ID (+) AND
• T8.ROW_ID = T7.PAR_ROW_ID (+) AND
• T8.TARGET_PER_ID = T5.ROW_ID (+) AND
• T8.TARGET_PER_ID = T3.PAR_ROW_ID (+) AND
• T8.PR_ATT_ID = T1.ROW_ID (+) AND
• (T8.ROW_ID = :1)
•
• ORDER BY T8.ACTIVITY_UID;
34. 29.11.2008 Seite 34
DOAG 2008
SQL-Struktur
• Jede Spalte im „select…“ wird einzeln
quantifiziert.
• Es werden sehr viele Tabellen gejoined.
• Diese Joins gehen immer gegen die
indizierte Spalte „ROW_ID“ (unique/notNull).
• Struktur: „select…from…where…order by…“
• Kein „group by…having…“ oder „connect by…“.
• Kein „select…for…update…“ sondern nur einfache
DMLs, Kapselung über „begin…end“ Blöcke
35. 29.11.2008 Seite 35
DOAG 2008
Zusammenfassung
• Siebel ist aus der Sicht einer Installation
überindiziert und verwendet Longs.
• Niemals direkt mit SQL Daten verändern!
(Ausnahme: Ostern & Weihnachten fallen zusammen!)
• Indices sind die heiligen Kühe, d.h.
hinzufügen geht fast immer, entfernen
aber nur in Absprache mit dem Support!
36. 29.11.2008 Seite 36
DOAG 2008
Kapitel 4
• Das Problem (Herausforderung)
37. 29.11.2008 Seite 37
DOAG 2008
Goldene Regel
• Tune die Anwendung zuerst, d.h.
– Muss diese tolle Sortierung sein?
– Wurden Tabellen mehrfach unnötig
gejoined?
– Werden alle abgefragte Felder auch
wirklich benötigt?
–…
38. 29.11.2008 Seite 38
DOAG 2008
Basics
• SGA - Ausreichend Buffer Cache?
• PGA –Sortierung?
– Memory
– Single Pass
– Multi Pass
• Symmetrie zwischen den Instanzen?
49. 29.11.2008 Seite 49
DOAG 2008
Kapitel 5
• Die Moral von der Geschichte… (Ergebnis)
50. 29.11.2008 Seite 50
DOAG 2008
Kommunikation
• Siebelentwickler und Datenbankadmini-
stratoren müssen bereits beim Sizing der
Anwendung miteinander reden.
• Permantentes Monitoring der generierten
SQLs während der Entwicklung und
Rückmeldung an die Entwickler.
• Überwachung aller
Datenbankobjekte, um Serialisierungen
während der Tests schnellstmöglich zu
erkennen.
51. 29.11.2008 Seite 51
DOAG 2008
Test, Test, Test & Test
• In einer realistischen Umgebung
durchführen, d.h. wer ein 4er RAC
produktiv verwendet sollte auch damit
testen.
• Mit realistischen Daten durchführen, d.h.
sowohl von der Menge als auch der
Verteilung analog zur Produktion.
• Abweichungen davon, z.B. im Rahmen
von Simulationen setzen RAC-optimierte
nichtlineare Modelle voraus.
52. 29.11.2008 Seite 52
DOAG 2008
Das Ende
RAC ermöglicht die Realisierung
hochperformanter Siebelsysteme!
„Most of the time a performance problem is
not a RAC problem.“(Oracl
e Whitepaper)
„But sometimes the performance problem
starts to get visible in an RAC
environment first!“(BzYxS.com)