Tabellendurchsuchungen: Problemanalyse
(Oracle)
Der Eintrag Table Scans, der im Datenbank-Alert- und im Datenbankmonitor erscheint, zeigt die Anzahl der sequentiellen Leseoperationen auf Tabellen an. Ist die Anzahl der sequentiellen Leseoperationen pro Tag sehr hoch, sollten Sie weitere Analysen durchführen. Der sequentielle Zugriff auf Daten ist im allgemeinen nicht sehr effizient, daher sollten vollständige Tabellendurchsuchungen (Full table scan) so weit wie möglich reduziert werden.
· Vollständige Tabellendurchsuchungen werden oft durch fehlende Tabellenindizes verursacht. Um Tabellen mit fehlenden Indizes anzuzeigen, wählen Sie z.B. im Datenbank-Alert-Monitor Database indices.
Siehe auch: Fehlende Indizes
· Zu viele Tabellendurchsuchungen können jedoch auch durch falsch kodierte SQL-Anweisungen vom Typ SELECT verursacht werden.
Um durch sequentielle Leseoperationen betroffene Tabellen zu identifizieren, gehen Sie wie folgt vor:
...
1. Wählen Sie Werkzeuge → Administration → Computing Center → Management System → Control → Performance Menu → Database → Activity.
Geben Sie alternativ den Transaktionscode ST04 ein.
2. Wählen Sie Goto → Exceptions → Alert Monitor.
Sie sehen den Datenbank-Alert-Monitor.
3. Wählen Sie Table Scans long tables, um die für die Tabellendurchsuchungen verantwortlichen Applikationsserver und Prozesse anzuzeigen.
Wenn es sich um Prozesse eines Oracle-Benutzers handelt (zum Beispiel SYS), werden die Tabellendurchsuchungen vom Datenbanksystem selbst verursacht. Wichtig für die weitere Analyse sind Prozesse des SAP-Benutzers SAPR3.
4. Melden Sie sich auf dem Applikationsserver an, der die Tabellendurchsuchungen verursacht.
5. Identifizieren Sie über den Prozeß-Monitor den Benutzer und den Report, der die Tabellendurchsuchungen verursacht.
Wählen Sie Werkzeuge → Administration → Monitor → Systemüberwachung → Prozeßübersicht.
Geben Sie alternativ dazu den Transaktionscode SM50 ein (Work-Process-Load-Monitor: Überblick).
6. Finden Sie heraus, welche Tabellen von diesem Report benutzt werden.
Hierfür gibt es zwei Möglichkeiten:
¡ Starten Sie den Report mit aktiviertem SQL-Trace.
¡ Analysieren Sie das Programm.
7. Vergleichen Sie die gefundenen Tabellen mit denen, die in der Liste der Tabellen mit fehlenden Indizes aufgeführt sind. Wählen Sie hierfür im Alert-Monitor Database indices.
Siehe auch: Fehlende Indizes
Wenn bei keiner der gefundenen Tabellen ein Index fehlt, werden die Tabellendurchsuchungen wahrscheinlich durch eine nicht optimierte SQL-Anweisung des entsprechenden Reports verursacht.
Siehe auch:
Table Scans/Table Fetch (Oracle)
Überwachen der Tabellenzugriffsmethoden (Oracle)
Überwachen der Shared-SQL Area (Oracle)