<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-200  評論-148  文章-15  trackbacks-0

    轉自:http://blog.163.com/yiyun_8/blog/static/100336422201031505832337/

    nowait的含義很多人都會誤解為“不用等待,立即執行”。但實際上該關鍵字的含義是“不用等待,立即返回”
    如果當前請求的資源被其他會話鎖定時,會發生阻塞,nowait可以避免這一阻塞,因為
    If another user is in the process of modifying that row, we will get an ORA‐00054
    Resource Busy error. We are blocked and must wait for the other user to finish with
    it.
    可以實驗下,我用pl/sql developer鎖定表game
    SQL> select * from game where game_id =1;
    返回一條記錄
     

    SQL> select * from game where game_id=1 for update nowait;
    select * from game where game_id=1 for update nowait
                 *
    ERROR位于第1行:
    ORA-00054:資源正忙,要求指定NOWAIT
    使用NOWAIT關鍵字,會報ORA‐00054的錯誤
     

    如何來查看是什么資源造成這樣的情況呢?并且怎么解決呢?
    查看鎖定的對象,用戶和會話
    SQL> select lo.oracle_username,do.object_name,s.logon_time,lo.process,s.sid as s
    ession_id
     2 from v$locked_object lo,v$session s,dba_objects do
     3 where lo.session_id = s.sid and do.object_id = lo.OBJECT_ID
     4 /
    ORACLE_USERNAME
    ------------------------------
    OBJECT_NAME
    --------------------------------------------------------------------------------
     

    LOGON_TIME         PROCESS     SESSION_ID
    ------------------- ------------ ----------
    NBA---用戶名稱
    GAME---操作的對象
    2009-08-04 10:55:15---登錄的時間     840:5176   10
     

    使用as sysdba
    根據sid查看具體的sql語句
    selectsql_textfromv$session a,v$sqltext_with_newlines b
    whereDECODE(a.sql_hash_value,0, prev_hash_value, sql_hash_value)=b.hash_value
     anda.sid=10;
    begin :id := sys.dbms_transaction.local_transaction_id; end;
     

    kill session
    SQL> select sid,serial# from v$session where sid =10;
     

          SID   SERIAL#
    ---------- ----------
           10        23
    SQL> alter system kill session '10,23';
     

    系統已更改。
     

    select * from game where game_id=1 for update nowait;
    有數據返回了

    當兩個用戶同時更新同一條記錄是, 使用select for update,后執行者,會被阻塞,而使用select for update  nowait 則會拋出:ORA-00054 resource busy and acquire with NOWAIT specified 異常,告之用戶這一行已經鎖定。

    posted on 2010-11-05 15:42 無聲 閱讀(7870) 評論(0)  編輯  收藏 所屬分類: 職場生活
    主站蜘蛛池模板: 免费A级毛片无码A∨免费| 羞羞视频免费观看| 免费黄网站在线看| 亚洲中文字幕久久精品无码APP | 亚洲丝袜中文字幕| 男女免费观看在线爽爽爽视频| 亚洲免费视频网站| 亚洲视频免费在线播放| 亚洲成AV人片久久| 成人免费a级毛片无码网站入口 | 亚洲AV无码成人精品区日韩| 日韩在线视频免费看| 免费人成大片在线观看播放| 自拍偷自拍亚洲精品情侣| 国产情侣久久久久aⅴ免费| 亚洲精品无码不卡| 国产大片免费网站不卡美女| 美女视频黄免费亚洲| 亚洲A∨精品一区二区三区| 最新久久免费视频| 亚洲综合无码一区二区三区| 大地资源二在线观看免费高清| 国产精品亚洲专区无码牛牛 | 免费无码VA一区二区三区| 亚洲中文字幕无码av在线| 在线观看亚洲免费| 精品国产呦系列在线观看免费| 亚洲人成电影在在线观看网色| 日韩欧美一区二区三区免费观看 | 免费看美女让人桶尿口| www.xxxx.com日本免费| 亚洲精品视频在线免费| 女人被免费视频网站| 久久久WWW免费人成精品| 亚洲美女在线观看播放| 国产免费一区二区三区VR| 中文字幕看片在线a免费| 亚洲国产成人精品无码一区二区| 国产一区二区三区无码免费| 免费国产99久久久香蕉| 亚洲av永久中文无码精品|