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

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

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

    posts - 0, comments - 77, trackbacks - 0, articles - 356
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    oracle10g中的事務

    Posted on 2008-02-24 17:20 semovy 閱讀(649) 評論(0)  編輯  收藏 所屬分類: Oracle數據庫方面

    ----------------------------------------------事務特性------------------------------------------------------------

    1.原子性(atomicity)  --事務處理要么全部進行,要么不進行。

    2.一致性(consistency) –事務處理要將數據庫從一種狀態轉變為另        一種狀態。

    3.隔離性(isolation) –在事務處理提交之前,事務處理的效果不能由系統中的其他事務看到。

    4.持久性(durability) –一旦提交了事務,他就永遠生效。

    5set autocommit on--設置數據庫系統環境為自動提交事務:

    SQL> set autocommit on;

    SQL> insert into t values(1,'2','2');

    已創建 1 行。

    提交完成。

    SQL> set autocommit off;

    SQL> insert into t values(1,'2','2');

    已創建 1 行。

    SQL> commit;

    提交完成。

    6.鎖:(防止進程之間因為搶占資源,產生死鎖而設定一種預防死鎖產生的機制)

    允許或者拒絕資源訪問的一種機制

    為了防止用戶在同一時間內并發的訪問和修改數據庫資源,orcale中使用不同類型的鎖控制對數據的并發訪問,以防止用戶之間出現破壞性的操作。

    鎖定的類型:

    1)行級鎖:行被排他鎖定

    2)表級鎖:共享鎖,共享更新鎖,排他鎖

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

    行級鎖:

    行被排他鎖定,在某行的鎖被釋放之前,其他用戶不能修改此行,使用 commit rollback 命令釋放鎖

    Oracle 通過使用 INSERTUPDATE SELECTFOR UPDATE 語句自動獲取行級鎖

    SELECTFOR UPDATE 子句

    在表的一行或多行上放置排他鎖,用于防止其他用戶更新該行,可以執行除更新之外的其他操作,只有該用戶提交事務,其他用戶才能夠更新gname

    select * from goods where gid=1001

    for update of gname;

    server1                                            server2

    create table goods (gid int );               

    insert into goods values(1)  

    insert into goods values(2)  

    別的進程訪問該表時,可以執行除更新之外的其他操作    

    select * from goods where gid=1 for update of gid    訪問server1時,可以對goods表進行添加,刪除,查詢,但不能修改

    FOR UPDATE WAIT 子句是Oracle9i 中的新增功能:

    為了防止無限期地等待鎖定的行,等待間隔必須指定為數值文字,等待間隔不能是表達式、賦值變量或 PL/SQL
    變量

    select * from goods where gid=1001 for update of gname wait  3

    等待用戶釋放更新鎖的時間為3秒,否則超時。

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

    表級鎖:

    保護表的數據

    在多個用戶同時訪問數據時確保數據的完整性

    可以設置為三種模式:共享、共享更新和排他

    語法:

            Lock table < table_name> in  <mode>;

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

    共享鎖:僅允許其他用戶執行查詢操作,不能插入、更新和刪除,多個用戶可以同時在同一表中放置此鎖

    Lock  table  table_name

    in share  mode   [nowait];

    rollback   commit命令釋放鎖

    Nowait  關鍵字告訴其他用戶不用等待

    lock table<tabale_name>[,<table_name>,....]

    in share mode[nowait]

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

    共享更新鎖:

    鎖定要被更新的行

    允許其他用戶同時查詢、插入、更新未被鎖定的行

    SELECT 語句中使用“FOR UPDATE”子句,可以強制使用共享更新鎖

    允許多個用戶同時鎖定表的不同行

    加鎖的兩種方法

    (1)lock table tab_name in share update mode;

    (2)Select column1, column2 From  goods Where gid=1001  For update of column1, column2

    lock table<tabale_name>[,<table_name>,....] in share update mode [nowait]

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

    排他鎖:

    與其他兩種鎖相比,排他鎖是限制性最強的表鎖,僅允許其他用戶查詢數據,不允許執行插入、刪除和更新操作,在同一時間僅允許一位用戶在表上放置排他鎖

    共享鎖與此相反

    lock table<tabale_name>[,<table_name>,....]

    in exclusive mode [nowait]

    主站蜘蛛池模板: 日本不卡视频免费| 免费a级毛片大学生免费观看| 亚洲国产亚洲片在线观看播放| 91在线视频免费播放| 国产亚洲综合一区二区三区| 国产亚洲综合久久系列| 手机看黄av免费网址| 羞羞视频在线观看免费| 91在线亚洲精品专区| 国产一区二区三区无码免费| 久久久高清日本道免费观看| 亚洲一区二区三区写真 | 亚洲欧洲日产国码高潮αv| 91青青青国产在观免费影视| 亚洲av综合日韩| 亚洲精品无码久久久久久久| 国产精品xxxx国产喷水亚洲国产精品无码久久一区| 久久综合国产乱子伦精品免费| 日韩精品亚洲专区在线影视| 亚洲色偷偷偷网站色偷一区| 亚洲午夜精品久久久久久浪潮| av免费不卡国产观看| 怡红院免费全部视频在线视频| 亚洲精品无码高潮喷水A片软| 亚洲专区在线视频| 精品国产人成亚洲区| 日韩成人免费视频播放| 亚洲啪啪免费视频| 在线看片免费人成视频久网下载 | 亚洲一区免费在线观看| 一区二区三区免费看| 亚洲色偷偷综合亚洲AV伊人蜜桃| 亚洲成av人影院| 亚洲国产婷婷香蕉久久久久久| 久久不见久久见中文字幕免费| 久久99精品视免费看| 亚洲国产免费综合| 国产成人久久精品亚洲小说| 亚洲一区AV无码少妇电影| 亚洲综合激情视频| 亚洲成人在线电影|