Entwicklung > Tools > Prüfungen > Datenbank > Indexsuche 

Aus betrieblichen Gründen kann es vorkommen, dass bestimmte Datenbankindizes in einem gegebenen Verzeichnis von der Software nicht korrekt angelegt wurden. Dies kann z. B. passieren, wenn zu einem bestimmten Zeitpunkt im temporären Oracle-Tablespace nicht genug Platz verfügbar ist, wenn ein Ordner erneut freigegeben wird oder wenn eine Tabellenstruktur verändert wird. Bei solchen Fällen handelt es sich um Fehler im Betrieb der Datenbank, zu denen selbstverständlich ein Fehlerprotokoll erstellt wird, das dem Datenbankadministrator normalerweise auffallen sollte.

Durch solche Fehler wird zwar die Funktionsfähigkeit der Software nicht beeinträchtigt, es könnte jedoch zu ernsthaften Problemen bei den Antwortzeiten kommen. Um im Falle schlechterer Antwortzeiten zu prüfen, ob die entsprechenden Indizes auch wirklich vorhanden sind, wurde das hier beschriebene Tool geschaffen.

Die Tests werden auf folgende Weise durchgeführt:

  • Prüfung, ob die nicht durch einen Aktivitätscode deaktivierten und im Data-Dictionary beschriebenen Indizes tatsächlich in der Datenbank vorhanden sind (wichtigster Test, wichtigstes Ergebnis)
  • Ausgabe der Liste der fehlenden Indizes, zu denen die Tabelle im aktuellen Ordner inaktiv ist. In der Regel ist es kein Problem, wenn diese Liste nicht leer ist. In den meisten Fällen handelt es sich um das Wurzelverzeichnis, in dem die funktionalen Tabellen im Dictionary vorhanden, jedoch nicht im Wurzelverzeichnis freigegeben sind.
  • Liste der internen X3-Indizes. Dabei handelt es sich um Indizes auf interne X3-Tabellen, die nicht im Dictionary beschrieben sind. Unter Oracle wären dies die Indizes der Tabellen SYSBLBK und SYSCLBK.
  • Liste von vorhandenen, aber nicht im Data-Dictionary beschriebenen Indizes. Diese Liste ist im Allgemeinen nicht leer, diese Indizes haben aber auf die Antwortzeiten keine Auswirkung. So kann es beispielsweise Tabellen geben, die aus einer vorherigen Hauptversion der Software stammen und aus Sicherheitsgründen nicht automatisch gelöscht wurden; weiterhin kann es sich um Indizes auf Tabellen handeln, die über einen Aktivitätscode deaktiviert wurden (in diesem Fall wird die Tabelle leer angelegt).
  • Indizes, deren Name nicht den x3-Benennungsvorschriften genügt (Indizes müssen nach dem Schema TABELLENNAME_INDEXNAME benannt werden). Solche Indizes können von anderen Programmen verwendet werden, die direkt auf die Datenbank zugreifen.

Das hier beschriebene Werkzeug legt eine Logdatei an und ist für Oracle- und SQL-Server-Datenbanken konzipiert. Es ermittelt automatisch den Typ der aktuellen Datenbank und trägt ihn in die Logdatei ein.

Am Ende der Logdatei wird eine Übersicht über die verschiedenen aufgetretenen Fälle und die Anzahl von entsprechenden Indizes gegeben. Dieser Übersicht ist im Falle einer Oracle-Datenbank auch die Anzahl der mit den Long-Objekten (Clob / Blob) verbundenen Indizes zu entnehmen.

Maskenverwaltung

Der Aufruf erfolgt per Antwort Ja in der offenen Bestätigungsbox. Danach wird eine Logdatei angezeigt.

Nachstehend wird ein Beispiel für eine generierte Logdatei gegeben.

Beispiel für eine Logdatei

 

Liste der unter Oracle nicht vorhandenen Dictionary-Indizes
********************************************************************************
Tabelle       Index       Beschreibung
--------------------------------------------------------------------------------
AABREV      AAB1        MOT
ABANK       ABN0        CRY+BAN
--------------------------------------------------------------------------------

                                                                                                -

Liste der internen X3-Indizes unter Oracle
********************************************************************************
Oracle-Tabelle             Index
--------------------------------------------------------------------------------
SYSBLBK                  SYSBLBK_IDX
SYSBLBK                  SYS_IL0000005817C00002$$
SYSCLBK                  SYSCLBK_IDX
SYSCLBK                  SYS_IL0000005821C00002$$
--------------------------------------------------------------------------------

                                                                                                -

Nicht im Dictionary beschriebene Oracle-Indizes
********************************************************************************
Oracle-Tabelle             Index
--------------------------------------------------------------------------------
TRCABX3                  IDX_TRCABX3
ZZVPO1                   INDEXTXT2_VPO1
ZZVPO1                   ZZVPO_VPO01
ZZVPO1                   SYS_IL0000009573C00047$$
--------------------------------------------------------------------------------

                                                                                                -

Nicht zu den X3-Normen konforme Oracle-Indizes
********************************************************************************
Oracle-Tabelle             Index
--------------------------------------------------------------------------------
TRCABX3                  IDX_TRCABX3
--------------------------------------------------------------------------------

                                                                                                -

Anzahl im Dictionary eingetragene Indizes                    396
Anzahl nicht vorhandene Indizes, da Aktivitätscode nicht aktiv      -    0      ->  396
Anzahl nicht vorhandene Indizes, da Tabellen inaktiv             -    0      ->  396
Anzahl nicht vorhandene Dictionary-Indizes                -    2      ->  394
Anzahl interne X3-Dictionarys                              +    4      ->  398
Anzahl nicht im Dictionary beschriebene Oracle-Indizes      +    4      ->  402
Anzahl Indizes für Long-Objekte (Clob / Blob)            +    3      ->  405
                                                              -----
Anzahl in der Oracle-Datenbank gefundene Indizes                  =  405

                                                                                                -

Log ohne Fehler beendet 27/03/06 15:15:15

Hinweis: Bei den nicht im Dictionary beschriebenen Indizes handelt es sich sich nicht um Fehler, sondern diese werden lediglich zu Informationszwecken angegeben. Weiterhin legt Oracle interne Indizes auf alle Tabellen an, die Long-Texte (Clobs) oder Long-Objekte (Blobs) wie z. B. Bilder enthalten.

Batchaufgabe

Diese Funktion kann im Batch gestartet werden,, aber mit dem Start ist keine Standardaufgabe verbunden.

Fehlermeldungen

Nur generische Fehlermeldungen.

Verwendete Tabellen

SEEREFERTTO Siehe Dokumentation Umsetzung