Oracle锁实验

php中文网
发布: 2016-06-07 17:41:02
原创
1290人浏览过

MASICONG@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

Project IDX
Project IDX

Google推出的一个实验性的AI辅助开发平台

Project IDX 165
查看详情 Project IDX

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

---------- -- ---------- ---------- ---------- ---------- ----------

相关标签:
最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号