Jeder Lock-Name gehört zu einem globalen Geltungsbereich. Ist der Bereich knotenlokal, dann ist der Name nur auf dem eigenen Knoten gültig. Er ist immer getrennt vom gleichen Namen mit dem Cluster als Geltungsbereich.
Zwei Anwendungen (die auf verschiedenen Knoten in einem Cluster ablaufen), die den gleichen Lock-Namen mit lokalem Geltungsbereich angegeben haben, werden nicht serialisiert, weil jeder der Lock-Namen ein lokaler / knoten-spezifischer Name ist.
Geben zwei Anwendungen den Geltungsbereich Cluster für identische Lock-Namen an, meinen sie den gleichen Lock und werden vom DLM serialisiert.
Geben zwei Anwendungen (die irgendwo auf dem Cluster ablaufen) den gleichen Lock-Namen, aber verschiedene Geltungsbereiche an, dann meinen sie verschiedene Locks.
Es besteht keine Möglichkeit einen Lock mit NAMRNGE=*OWNSYSTEM in einen Lock mit NAMRNGE=*CLUSTER zu überführen, weil diese beiden Locks komplett verschieden sind.
Um Benutzerprogrammen (die für Cluster-Systeme entwickelt wurden) zu ermöglichen auf Single-Systemen ohne Änderung abzulaufen, bietet der DLM folgendes Merkmal:
Ist ein System nicht Teil eines Clusters und wird in der aktuellen Session auch nicht Teil eines Clusters, akzeptiert der DLM LKENQ-Aufrufe, als wenn das System Teil eines Clusters wäre. Die Locks, die mit NAMRNGE=*CLUSTER in die Warteschlange eingereiht werden, sind nicht dieselben, wie die mit NAMRNGE=*OWNSYSTEM.
Kurzübersicht
beim Makroaufruf | Makro | wird vom Makro | Bedeutung |
MF=D | LKEQU | generiert die DLM-eigenen Layouts | |
MF=L | LKLSB | generiert das Layout des Lock-Status-Blocks | |
LKINF | gibt Informationen über Locks aus | ||
LKENQ | LOCKID | erstellt einen Lock und liefert Lock-Kurzkennung | |
LOCKID | LKCVT | konvertiert Lock-Anforderungen | |
LOCKID | LKCAN | löscht Lock-Anforderungen | |
LOCKID | LKDEQ | gibt Lock-Anforderungen frei |