Database Reference
In-Depth Information
cle die ITL zu erweitern. Wenn der jeweilige Datenblock aber bereits voll mit Daten ist, ist
das nicht möglich. Dann müssen die jeweiligen Transaktionen auf das Warteereignis „enq:
TX - allocate ITL entry“ warten, solange die anderen Transaktionen nicht enden.
Um diese Wartezeit zu reduzieren, muss man den Parameter INITRANS erhöhen. Der
Wert dieses Parameters muss dabei etwa gleich der Anzahl der Transaktionen sein, die
zugleich die Segment-Daten ändern können. Diesen Parameter kann man für die neuen
Segment-Blöcke mit dem „ALTER TABLE“ oder mit dem „ALTER INDEX“ Kommando
ändern. Diese Maßnahme kann nicht ausreichend sein, wenn die Daten in den alten Da-
tenblöcken mit der alten Parametereinstellung von INITRANS geändert werden. In die-
sem Fall muss man zusätzlich das jeweilige Segment neu anlegen.
Man kann das betroffene Segment anhand der Segmentstatistik „ITL waits“ ermitteln.
3.2.3.7.3 TX - index contention
Normalerweise wird auf dieses Warteereignis bei der Spaltung (splitting) der Index-Blöcke
gewartet (ein Index-Block wird gespalten, wenn er voll wird). Man kann das mit den fol-
genden Datenbankstatistiken verifizieren:
• „branchnodesplits“,
• „leafnodesplits“,
• „leafnode90-10splits“
Mehr Informationen zu diesen Datenbankstatistiken finden Sie im Abschn. 4.2.1. Oft be-
obachtet man die Wartezeiten auf „enq: TX - index contention“, wenn die Daten in der
für einen Index aufsteigender Reihenfolge in die Tabelle eingetragen werden. In diesem
Fall werden die Daten in den letzten Leaf-Block des jeweiligen Index eingefügt, der dann
häufig gespalten wird. Das führt zum Warten auf „enq: TX - index contention“. Man beob-
achtet dabei auch gravierende Werte der Datenbankstatistik „leaf node 90-10 splits“.
Die betroffenen Indices kann man in Oracle 11.2 in der View V$SESSION über die
Spalte ROW_WAIT_OBJ# oder in den historischen Views V$ACTIVE_SESSION_HIS-
TORY und DBA_HIST_ACTIVE_SESS_HISTORY über die Spalte CURRENT_OBJ# er-
mitteln. Diese Indices kann man auch in der Tabelle STATS$SEG_STAT aus dem Stat-
spack-Repository über die Spalte ROW_LOCK_WAITS finden. Im AWR kann man das
über die Spalte ROW_LOCK_WAITS der View DBA_HIST_SEG_STAT tun. Wenn die
Wartezeiten auf „enq: TX - index contention“ gravierend sind, kann man die problemati-
schen Indices dem AWR- oder dem Statspack-Report entnehmen (sie sind dort unter den
5 Top-Segmente für „row lock waits“ zu finden).
Man kann mit den folgenden 2 Maßnahmen versuchen, die Daten in den Index-Blö-
cken anders zu verteilen und somit diese Wartezeit reduzieren:
• einenReverseKeyIndexstattdesjeweiligeneinsetzenoder
• fürdenjeweiligenIndexdieHash-Partitionierungeinführen.DieAnzahldieserPartiti-
onen hängt von der Anzahl der verändernden Operationen ab, die zugleich ausgeführt
werden können.
Search WWH ::




Custom Search