tempad
Readygo技术搜索引擎 >>游戏开发 >> 如何在一张表有update在做,没提交前,控制别的select等待!

如何在一张表有update在做,没提交前,控制别的select等待!

Readygo技术搜索引擎 网络搜索 efish 2008-1-17 1:59:44

如何在一张表有update在做,没提交前,控制别的select等待!

楼主tyqiu(可乐)2004-03-25 14:15:43 在 Oracle / 开发 提问

请高手帮忙啊! 问题点数:0、回复次数:13Top

1 楼welyngj(无爱)回复于 2004-03-25 14:44:52 得分 0

oracle本身有一种机制,如果当前连接的update,insert   ,delete    
  没有提交,只有在当前连接的情况下才可以看到修改结果。  
  其他连接不可以看到修改的结果。  
  不知道你指的是什么意思?Top

2 楼ern(与Oracle斗,其乐无穷)回复于 2004-03-25 15:10:30 得分 0

如楼上所说,没有commit前除了当前会话都是看不到的Top

3 楼drabit(square)回复于 2004-03-25 16:27:46 得分 0

设置做select的会话的隔离级别为repeatable   read(缺省为read   committed)Top

4 楼ey21cn(Boone)回复于 2004-03-25 18:15:17 得分 0

加锁Top

5 楼tyqiu(可乐)回复于 2004-03-26 09:29:32 得分 0

如何设置会话的隔离级别呢?Top

6 楼tyqiu(可乐)回复于 2004-03-26 09:32:16 得分 0

以上几位的方法好象是实现select时加锁的,我现在的要求是,在别的会话  
  做update没提交前,select的会话等待着,不出来结果!Top

7 楼xyzhh(逍遥者寒号)回复于 2004-03-26 09:46:50 得分 0

可以先用select.....   for   update把表锁住Top

8 楼tyqiu(可乐)回复于 2004-03-26 10:06:07 得分 0

楼上的,你的做法是等select处理完后才能做其他操作,和我的要求正好相反啊!Top

9 楼drabit(square)回复于 2004-03-26 11:48:27 得分 0

如果那个select所需要的数据并没有被update/delete/insert,你是否也需要select等待?Top

10 楼tyqiu(可乐)回复于 2004-03-26 11:50:17 得分 0

to     :drabit(square)  
  是的Top

11 楼jinsfree(蓝色天使)回复于 2004-03-26 12:17:07 得分 0

加锁吧,具体查资料Top

12 楼baojianjun(包子)回复于 2004-03-26 12:57:15 得分 0

ORACLE鎖的管理  
  本文由gototop根據yufeng的文章略加修改。   http://www.ncn.cn/      
  ORACLE裏鎖有以下幾種模式:  
  0:none  
  1:null   空  
  2:Row-S   行共用(RS):共用表鎖,sub   share    
  3:Row-X   行獨占(RX):用于行的修改,sub   exclusive    
  4:Share   共用鎖(S):阻止其他DML操作,share  
  5:S/Row-X   共用行獨占(SRX):阻止其他事務操作,share/sub   exclusive    
  6:exclusive   獨占(X):獨立訪問使用,exclusive  
   
  數位越大鎖級別越高,   影響的操作越多。  
   
  1級鎖有:Select,有時會在v$locked_object出現。  
  2級鎖有:Select   for   update,Lock   For   Update,Lock   Row   Share    
  select   for   update當對話使用for   update子串打開一個游標時,所有返回集中的資料行都將處于行級(Row-X)獨占式鎖定,其他物件只能查詢這些資料行,不能進行update、delete或select   for   update操作。  
  3級鎖有:Insert,   Update,   Delete,   Lock   Row   Exclusive  
  沒有commit之前插入同樣的一條記錄會沒有反應,   因爲後一個3的鎖會一直等待上一個3的鎖,   我們必須釋放掉上一個才能繼續工作。  
  4級鎖有:Create   Index,   Lock   Share  
  locked_mode爲2,3,4不影響DML(insert,delete,update,select)操作,   但DDL(alter,drop等)操作會提示ora-00054錯誤。  
  00054,   00000,   "resource   busy   and   acquire   with   NOWAIT   specified"  
  //   *Cause:   Resource   interested   is   busy.  
  //   *Action:   Retry   if   necessary.  
  5級鎖有:Lock   Share   Row   Exclusive    
  具體來講有主外鍵約束時update   /   delete   ...   ;   可能會産生4,5的鎖。  
  6級鎖有:Alter   table,   Drop   table,   Drop   Index,   Truncate   table,   Lock   Exclusive  
   
  以DBA角色,   查看當前資料庫裏鎖的情况可以用如下SQL語句:  
   
  col   owner   for   a12  
  col   object_name   for   a16  
  select   b.owner,b.object_name,l.session_id,l.locked_mode  
  from   v$locked_object   l,   dba_objects   b  
  where   b.object_id=l.object_id  
  /  
   
  select   t2.username,t2.sid,t2.serial#,t2.logon_time    
  from   v$locked_object   t1,v$session   t2    
  where   t1.session_id=t2.sid   order   by   t2.logon_time  
  /  
   
  如果有長期出現的一列,可能是沒有釋放的鎖。我們可以用下面SQL語句殺掉長期沒有釋放非正常的鎖:  
   
  alter   system   kill   session   "sid,serial#";  
   
  如果出現了鎖的問題,   某個DML操作可能等待很久沒有反應。  
   
  當你采用的是直接連接資料庫的方式,也不要用OS系統命令   $kill   process_num   或者   $kill   -9   process_num來終止用戶連接,因爲一個用戶進程可能産生一個以上的鎖,   殺OS進程幷不能徹底清除鎖的問題。  
  Top

13 楼drabit(square)回复于 2004-03-26 13:42:12 得分 0

to   tyqiu:  
   
  在select的会话如下操作:  
  lock   table   tab_xxx   in   share   row   exclusive   mode  
    (如果表被update/insert/delete,此lock   table会等待)  
  select   ....  
  rollback/commit(释放lock,要尽可能快,以免阻塞其它会话更新此表)Top

责任编辑: efish 参与评论 查找更多:
相关文章
高手们多过来看看,为实现在一页纸上打印两个datawi… 高手们多过来看看,为实现在一页纸上打印两个datawindow,在datawindow里的printpage里添加return 0 就行吗??怀疑。。。
TMD 网络绿盾 TMD 网络绿盾
高分求教电路板设计(急用5天) 高分求教电路板设计(急用5天)
问两个十分菜的问题 问两个十分菜的问题
右键菜单属性没了? 右键菜单属性没了?
关于用UDP广播大数据的问题:发送端显示全部发送出去… 关于用UDP广播大数据的问题:发送端显示全部发送出去了,接收端却只能收到部分数据.
有一个表左右很长,如何才能使它页显示 有一个表左右很长,如何才能使它页显示
machine.config文件配置问题——就这点分拉,全部风尚 machine.config文件配置问题——就这点分拉,全部风尚
伽马校正的资料 伽马校正的资料
放掉最后30分,我的共享连接为什么不行?? 放掉最后30分,我的共享连接为什么不行??
2秒记住本站域名

玩过泡泡龙吗?Readygo?Go! 再加上.Com.Cn的后缀,那就是大名小顶的readygo.com.cn

分类导航
Readygo技术搜索引擎