Oracle锁实验
Jun 07, 2016 pm 05:41 PMMASICONG@orclselectsidfromv$mystatwhererownum=1;SID----------35MASICONG@orclselectsidfromv$mystatwhererownum=1;SID---..
MASICONG@orcl> select sid from v$mystat where rownum=1;
SID
----------
35
MASICONG@orcl> select sid from v$mystat where rownum=1;
SID
----------
1
1.分别模拟insert,update和delete造成阻塞的示例,并对v$lock中的相应的信息进行说明,给出SQL演示。
MASICONG@orcl> create table test (id varchar(2) primary key);
Table created.
INsert阻塞
MASICONG@orcl> insert into test values (10);
1 row created.
MASICONG@orcl> insert into test values(10); 另一个用户提交同样的请求就会卡住
MASICONG@orcl> select sid,type,id1,id2,lmode,request,block from v$lock where type in ('TM','TX') ;
SID TY ID1 ID2 LMODE REQUEST BLOCK
---------- -- ---------- ---------- ---------- ---------- ----------
1 TX 131090 674 0 4 0
35 TM 74571 0 3 0 0
1 TM 74571 0 3 0 0
1 TX 65540 508 6 0 0
35 TX 131090 674 6 0 1
说明1会话需要一个4级锁,网站空间,但是35已经加了一个6级的锁阻塞了会话。因为会话1已经插入了一条记录,所以又一个TX锁可以通过。
MASICONG@orcl> select object_name from dba_objects where object_id=74571;
OBJECT_NAME
--------------------------------------------------------------------------------
TEST
通过TM知道目前是在一个表上加的锁,所有通过ID可以查到具体操作的是哪个表。
MASICONG@orcl> commit;
Commit complete.
MASICONG@orcl> insert into test values(10); 当一个会话提交后,另一个会话才能访问
*
ERROR at line 1:
ORA-00001: unique constraint (MASICONG.SYS_C0011055) violated
Update阻塞
MASICONG@orcl> commit
2 ;
Commit complete.
MASICONG@orcl> select * from test;
ID
--
1
10
MASICONG@orcl> update test set id=2 where id =1;
1 row updated.
MASICONG@orcl> update test set id=2 where id =1; 另一回话处于Block状态
MASICONG@orcl> select sid,type,id1,id2,lmode,request,block from v$lock where type in ('TM','TX') ;
SID TY ID1 ID2 LMODE REQUEST BLOCK
---------- -- ---------- ---------- ---------- ---------- ----------
1 TX 458775 552 0 6 0
1 TM 74571 0 3 0 0
35 TM 74571 0 3 0 0
35 TX 458775 552 6 0 1
显示出现了阻塞信息,会话在等待一个6级的锁
MASICONG@orcl> select sid,event from v$session_wait where sid in (1,35);
SID EVENT
---------- ----------------------------------------------------------------
1 enq: TX - row lock contention
35 SQL*Net message from client
上面标示1会话需要TX锁
DELETE操作
MASICONG@orcl> delete from test where id=10;
1 row deleted.
MASICONG@orcl> select sid,type,id1,id2,lmode,request,block from v$lock where type in ('TM','TX') ;
SID TY ID1 ID2 LMODE REQUEST BLOCK
---------- -- ---------- ---------- ---------- ---------- ----------

Article chaud

Outils chauds Tags

Article chaud

Tags d'article chaud

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Fonction pour calculer le nombre de jours entre deux dates dans Oracle

Combien de temps les journaux de la base de données Oracle seront-ils conservés ?

L'ordre des étapes de démarrage de la base de données Oracle est

Comment utiliser l'intervalle dans Oracle

Exigences de configuration matérielle du serveur de base de données Oracle

Comment voir le nombre d'occurrences d'un certain caractère dans Oracle

De quelle quantité de mémoire Oracle a-t-il besoin ?

Comment déterminer si deux chaînes sont contenues dans Oracle
