Bonjour à Tous,

Prière de m'aider à résoudre ce problème, car je suis planté ça fait 2j .

En fait, mon problème est de tuer le verrouillage à partir d’une session « S2 » sachant qu’il a été obtenu à partir d’une session « S1 » en utilisant les fonctions du package dbms_lock

Donc « S1 » lance ces 2 instructions :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
dbms_lock.allocate_unique(mon_contexte, handle);
status := dbms_lock.request(handle, dbms_lock.X_MODE, li_timeout);
 
--status = 0 ==> lock établi / status=1 :'Timeout' / status=2 : 'Deadlock' / status=3 : 'Parameter Error' / status=4 :'Lock déja obtenu' / status=5 : 'Illegal Lock Handle'

« S1 » peut libérer son propre verrouillage en utilisant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
 dbms_lock.allocate_unique(mon_contexte, handle);
 status := dbms_lock.release(handle);
Mais « S2 » ne peut pas libérer le verrouillage obtenu par « S1 » en utilisant la fonction « dbms_lock.release() » ;

==> Donc mon objectif est : à partir de la session « S2 » je tue le lock obtenu à partir de la session « S1 » tout en gardant la session « S1 » en vie (càd tuer uniquement le process du lock sans tuer toute la session).

Merci d’avance pour votre aide