JUST DO IT ~

我只想当个程序员

oracle 表记录 加锁 2 个程序访问,保持同步问题。



session 1

SQL> select * from test_gddg where a1='a1' for update ;


SQL
> update  test_gddg
  
2  set a1 = 'xxx'
  
3  where a1='a1';

已更新 
1 行。

SQL
> commit;

提交完成。


session 2
 进程wait  挂起。



SQL
> update  test_gddg 
  
2  set a2 ='best'
  
3  where a1 = 'a1'
  
4  ;

0 rows updated

where a1 = 'a1'  因为在session 1 被修改了。
这里访问到的 也无效了。

结果是session 无法定位记录



查看锁

SELECT   S.SID   SESSION_ID,S.USERNAME,LMODE,REQUEST,O.OWNER||'.'||O.OBJECT_NAME||'   ('||O.OBJECT_TYPE||')',S.TYPE   LOCK_TYPE,L.ID1   LOCK_ID1,L.ID2   LOCK_ID2  
    
FROM   V$LOCK   L,SYS.DBA_OBJECTS   O,V$SESSION   S    
    
WHERE   L.SID   =   S.SID   AND   L.ID1   =   O.OBJECT_ID


posted on 2008-01-31 11:22 小高 阅读(451) 评论(0)  编辑  收藏 所属分类: Oracle


只有注册用户登录后才能发表评论。


网站导航:
 

导航

<2008年1月>
303112345
6789101112
13141516171819
20212223242526
272829303112
3456789

统计

常用链接

留言簿(3)

随笔分类(352)

收藏夹(19)

关注的blog

手册

搜索

积分与排名

最新评论

阅读排行榜

评论排行榜