CX_DB_UTILITY::FindObjectsReferencingPosition2
Beschreibung:
Finde alle Objekte mit Referenzen auf einen bestimmten Ort in der Datenbank.
Sinn der Methode: es gibt eine lokale Datenbank-Korruption. Kennt man alle Objekte, die andere Objekte in diesem Bereich referenzieren, kann man - mit Datenverlust - die Korruption reparieren.
FindObjectsReferencingPosition2 ist eine Erweiterung von CX_DB_UTILITY::FindObjectsReferencingPosition, mit der man sehr große Segmente analysieren kann (Nachteil - dauert länger).
Mit zwei zusätzlichen Parametern kann man die Analyse eines Segments aufteilen - siehe Code Beispiel
In der aktuelle Version ist der "interessante Ort" eines möglichen Schadens ein Cluster.
Eine Erweiterung auf eine Offset-Bereich ist einfach zu implementieren. Dann machen, wenn es wirklich gebraucht wird!
Code-Beispiel:
Var(dbUtil)
GetManager(OBJECT) Call(GetDBUtility) -> dbUtil
// check 1st 1 000 000
"affectedObjects1.log" 2010 /* segment to check */ 5044 /* segment with damage */ 304 /* bad cluster */ 0 100000 dbUtil Call(FindObjectsReferencingPosition2)
// check 2nd 1 000 000
"affectedObjects2.log" 2010 /* segment to check */ 5044 /* segment with damage */ 304 /* bad cluster */ 100000 2000000 dbUtil Call(FindObjectsReferencingPosition2)
. . .
Stack | Position | Objekttyp | Kurzbeschreibung |
---|---|---|---|
Stack(In) | Top | OBJECT | Database Utility |
Top-1 | INTEGER | Nummer m = nach dem m-ten Objekt abbrechen | |
Top-2 | INTEGER | NUmmer n = nach dem n-ten Objekt analysieren | |
Top-3 | INTEGER | (Ziel-) Cluster | |
Top-4 | INTEGER | (Ziel-) Segment | |
Top-5 | INTEGER | Segment, das analysiert werden soll | |
Top-6 | STRING | das Log-File | |
Stack(Out) | - |
Funktionsaufruf: Call(FindObjectsReferencingPosition)