1. <var id="fe6gj"></var>

    <rp id="fe6gj"><nav id="fe6gj"></nav></rp>

    <noframes id="fe6gj"><cite id="fe6gj"></cite>

    <ins id="fe6gj"><button id="fe6gj"><p id="fe6gj"></p></button></ins>
    1. <tt id="fe6gj"><i id="fe6gj"><sub id="fe6gj"></sub></i></tt>
        始創于2000年 股票代碼:831685
        咨詢熱線:0371-60135900 注冊有禮 登錄
        • 掛牌上市企業
        • 60秒人工響應
        • 99.99%連通率
        • 7*24h人工
        • 故障100倍補償
        您的位置: 網站首頁 > 幫助中心>文章內容

        Oracle事務 行級鎖 保存點 回滾 提交

        發布時間:  2012/9/5 17:36:02

        Oracle事務

        一般事務(DML)即數據修改(增、刪、改)的事務
        事務會將所有在事務中被修改的數據行加上鎖(行級鎖),來阻止其它人(會話)同時對這些數據的修改操作。
        當事務被提交或回滾后,這些數據才會被釋放鎖。

        舉個例子:-
         

        當A操作一條數據N1后,暫未提交事務 ,此時B又上來操作同一條數據N1,這時的情況是:
        1、所有除A以外的人看不到被A所修改后的數據
        2、B會處于等待狀態,直到A提交或回滾了針對這條數據的修改(這也就是行級鎖的概念)
        3、當A提交事務后,所有人可以看到被A修改后的數據,看不到B修改后的數據。但B能看到自己修改后的數據(與A一樣,因為B還未提交事務)。
        4、當B提交事務后,所有人可以看到被B修改后的數據。

        由上可以看出,對同一條數據的事務處理,必須按先后順序進行。
        即:A先提交了事務后,B才可以提交事務,否則B將無法對這條數據進行修改(B會在操作這條數據時處于等待狀態,直到A提交或回滾了事務,釋放了這行數據的鎖)。

        這里注意一點,這里所說有A與B并不是指二個Oracle帳戶,而是二個連接會話。上面只是為了方便舉例。
        就是說即使是在同一臺電腦上用同一個Oracle帳戶,但同時分別打開了二個連接會話(比如同時打開二個PL/SQL并用相同帳戶連接到同一個庫中),就會被視為A、B兩個人。

        在PS/SQL中,對數據修改完后,如果用戶未提交事務,但關閉或斷開了PS/SQL,此時Oracle會立即提交此會話的事務。

        我們可以事務中使用保存點來回滾到指定的時間節點上來,但如果用提交事務(commit)后,所有保存點將被刪除。

        舉個舉子:

        savepoint a1;    --設置一個保存點 a1;

        update tmp set username='張三' where userid='101'  --修改一條數據

        savepoint a2;   --設置一個保存點 a1;

        update tmp set username='李四' where userid='102  --再修改一條數據

         

        rollback to a2;   --回滾到a2 保存點。 此時在 a2 保存點之后的所有數據修改視為無效。

        rollback to a1;   --這里可以再從a2保存點再回滾到a1 保存點。 此時在 a1 保存點之后的所有數據修改視為無效。

        rollback;           --回滾全部。即撤消至上一次提交事務后的所有數據修改。

        commit;  --提交事務 將回滾后的事務提交,并會刪除所有保存點。

        注意:我們可以從a2向前再回滾到a1 ,但無法從a1回滾到a2。也就是只能向前回滾,不能從前面的點再向后回滾!

        只讀事務 即,只用于select 查詢的事務

        只讀事務主要用于在某一個時間點對數據的查詢統計。如:在18:00創建一個只讀事務,然后可以開始統計某張表的記錄數。此時18:00之后新添加到這張表中的數據就不會進入到統計中去。也就是創建只讀事務的會話連接人,將無法看到在創建只讀事務之后其它任何人對數據的真實修改。

        方法是:

        set transaction read only;  --在此之后,擁有此會話的連接人將無法看到其它人對數據的任何改動。用戶可以用select 進行此時間點的統計查詢

        set transaction read write;  --取消只讀事務

        只讀事務沒有回滾和提交的功能也不記錄回滾LOG。

        只讀事務最大的用處是保證在某個時間點查詢結果的一致性。換句話說,如果你要統計很多信息,有多個select查詢時,但你執行完第一個查詢后(如用戶信息統計),可能其它人進來修改了某些數據你正在查詢的數據。這時你再進行第二個查詢(如用戶信息的統計或其它有關用戶信息的查詢)。這時候將出現數據查詢結果的不一致,第二次查詢的結果會由于數據被修改了而與第一次查詢結果一不樣。只讀事務正是解決這類問題的辦法。

        其實Oracle為了優化查詢在對于單條查詢時也會啟動只讀事務(就是在你開始執行查詢時會有一個只讀事務點,到查詢結束前,在這期間的數據修改都被無視掉),你無須手動創建只讀事務。但多條查詢時我們就必須手動創建只讀事務。


        本文出自:億恩科技【www.endtimedelusion.com】

        服務器租用/服務器托管中國五強!虛擬主機域名注冊頂級提供商!15年品質保障!--億恩科技[ENKJ.COM]

      1. 您可能在找
      2. 億恩北京公司:
      3. 經營性ICP/ISP證:京B2-20150015
      4. 億恩鄭州公司:
      5. 經營性ICP/ISP/IDC證:豫B1.B2-20060070
      6. 億恩南昌公司:
      7. 經營性ICP/ISP證:贛B2-20080012
      8. 服務器/云主機 24小時售后服務電話:0371-60135900
      9. 虛擬主機/智能建站 24小時售后服務電話:0371-60135900
      10. 專注服務器托管17年
        掃掃關注-微信公眾號
        0371-60135900
        Copyright© 1999-2019 ENKJ All Rights Reserved 億恩科技 版權所有  地址:鄭州市高新區翠竹街1號總部企業基地億恩大廈  法律顧問:河南亞太人律師事務所郝建鋒、杜慧月律師   京公網安備41019702002023號
          0
         
         
         
         

        0371-60135900
        7*24小時客服服務熱線

         
         
        av不卡不卡在线观看_最近2018年中文字幕_亚洲欧美一区二区三区_一级A爱做片免费观看国产_日韩在线中文天天更新_伊人中文无码在线