Sqlplus: Tabellen Lock einfach prüfen?

Hallochen,

folgendes Problem:
ein externer Prozess macht vor Beginn ein Lock auf „MYTABLE“. Beendet sich dieser Prozess, entfernt er dieses Lock wieder.
Wenn er läuft, darf ich nichts tun.
Meine einzige Chance zu prüfen, ob dieser Prozess läuft ist das Table Lock.

Soweit bin ich theoretisch:

lock table MYTABLE with EXCLUSIVE MODE NOWAIT;

–> gibt im Falle eines aktiven Prozesses einen Fehler.

Andernfalls muss ich selbst das Lock wieder wegnehmen und weiterarbeiten.
Ist jetzt allerdings dumm, wenn der externe Prozess gerade dann losrennen möchte, während ich mein Lock zum Prüfen gesetzt habe.

Gibt es eine Methode, um das Lock zu prüfen ohne selbst eines zu setzen, also etwas wie:

select TABLE\_LOCK\_STATUS from MYTABLE

Dankeschlön,
Michael

Hallo Michael,

ich hatte ein ähnliches Problem, wollte aber noch wissen WER WELCHE Tabelle lockt, das ich so gelöst habe:

SELECT SESSION_ID „sid“,SERIAL# „Serial“,
substr(OBJECT_NAME,1,20) „Object“,
substr(OS_USER_NAME,1,10) „Terminal“,
substr(ORACLE_USERNAME,1,10) „Locker“,
NVL(lockwait,‚ACTIVE‘) „Wait“,
DECODE(LOCKED_MODE,
2, ‚ROW SHARE‘,
3, ‚ROW EXCLUSIVE‘,
4, ‚SHARE‘,
5, ‚SHARE ROW EXCLUSIVE‘,
6, ‚EXCLUSIVE‘, ‚UNKNOWN‘) „Lockmode“,
OBJECT_TYPE „Type“
FROM
SYS.V_$LOCKED_OBJECT A,
SYS.ALL_OBJECTS B,
SYS.V_$SESSION c
WHERE
A.OBJECT_ID = B.OBJECT_ID AND
C.SID = A.SESSION_ID
ORDER BY 1 ASC, 5 Desc

Vielleicht hilft Dir das als Beispiel/Vorlage

Gruß
Grisu

Wooot, suuuuuuuupi!
Danke danke!