ENQUEUE est un mécanisme de verrous très sophistiqué qui consiste à gérer les accès au ressources partagés, il peuvent être des tables, des transactions ou tous autres structures representants quelque chose pratageable entre sessions. Normalement il est utilisé pour éviter que plusieurs processes accedent à la même structure de données en même temps.
On associe un Enqueue à une session ou à une transaction et non pas à un processe, et il est souvent synonyme au mot LOCK et on peut le trouver dans la vue V$LOCK.
Chaque Enqueue est identifié par un nom unique de la forme : <TYPE-ID1-ID2>.
TYPE : est un mot de deux lettres (exemple : MR, RT, XR, TS, TX, TM)
ID1 et ID2 sont deux identifiants numériques de 4 bits qui depends du type de verrou. Avant oracle 10g ces deux valeurs n'etaient pas publique, a partir de la 10g vous pouvez trouver facilement leurs significations dans les colonne PARAMETER2 et PARAMETER3 de la vue V$EVENT_NAME.
Type de verrou TX
ID1 : Indique le rollback segement et le numéro du slot (fente).
Ces valeurs se trouvent dans les colonnes XIDUSN et XIDSLOT de la
Vue V$TRANSACTION.
ID2 : Wrap du rollback segement ou le numéro de sequence. Cette valeur se
trouve dansla colonne XIDSQN de la vue V$TRANSACTION.
Type de verrou TM
ID1 : Indique l'id objet de la table, on le trouve dans
DBA_OBJECTS.OBJECT_ID
ID2 : 0
Type de verrou TS
ID1 : le numéro de la tablespace qu'ont peut le trouver dans TS#.TS#.
ID2 : Adresse relatif du bloc de la base RDBA
Type de verrou JQ
ID1 : 0
ID2 : Indique le numéro du job
Type de verrou MR
ID1 : Id du fichier de données. Oracle accepte un enqueue MA par fichier de
Données
ID2 : 0
Type de verrou RT
ID1 : le numéro du redo thread
ID2 : 0
Par exemple pour la table EMP de l'utilisateur SCOTT il existe un seul Enqueue identifié par :
TYPE = TM
ID1 = identifiant de l'objet EMP
ID2 = 0
BL : Buffer hash table instance
CF : Control file schema global enqueue
CI : Cross-instance Call Invocation
CU : Bind Enqueue
DF : Datafile
DL : Direct Loader Index Creation
DM : Database Mount
DR : Distributed Recovery
DX : Distributed TX
FS : File Set
HW : HighWater Mark
IN : Instance Number
IR : Instance Recovery
IS : Etat de l'instance
IV : Library Cache Invalidation
JQ : Job Queue
KK : Redo Log "Kick"
LA ..LP : Library Cache Lock
MM : Mount definition global enqueue lock
MR : Media Recovery
NA .. NZ : Library Cache Pin
PF : Password File
PI : Parallel Slaves
PR : Process Startup
PS : Parallel Slave Synchronizatio
QA .. QZ : Row Cache
RT : Redo Thread
SC : System Commit Number
SM : SMON
SN : Sequence number instance lock
SQ : Sequence Number Enqueue
SS : Sort Segment
ST : Space Management Transaction
SV : Sequence Number Value
TA : Transaction Recovery
TS : (id2=1)Nouvelle attribution de bloc
TS : (id2=0) Segment temporaire (toujours une tablespace)
TT : Table temporaire
TX : Transaction
UL : User-defined Locks
UN : Nom de l'utilisateur
US : Serialisation du segement undo
WL : Début d'ecriture dans le redo log
XA : Verrou d'attribution de l'instance
XI : Verrou de registration de l'instance
Le mode Exclusive interdit qu'une ressource soit partagée. Ce mode de blocage est obtenu suite à une modification de données. La première transaction qui bloque la ressource en mode exclusive est la seule qui est capable de liberer cette ressource.
Le mode partagée consiste à partagé les ressources, suivant l'operation impliqué. Plusieurs utilisateurs en mode lectures peuvent partagés ces données, avoir un verrouillage partagée previent l'access en mode écriture (surtout celui qui a besoin un verrouillage en mode exclusive). Plusieurs transactions peuvent avoir un verrouillage partagés dans une même ressource.
SS : verrou un enregistrement en mode partagé
SX : verrou un enregistrement en mode exclusive
S : verrou la table entirement en mode partagée
SSX : verrou la table en mode partagée mais l' enregistrement en mode exclusive
X : verrou la table entirement en mode exclusive
Les modes d'Enqueues ou de Verrous n'a aucun sens réel tout seule. Le vrai sens de ses modes est la manière d'être utilisés. (R: lecture, W: écriture)
Partager