国产福利在线播放|久久精品福利网站免费|国产呻吟视频在线观看|日韩一区二区三区免费高清|久996视频精品免费观看|欧美日本在线一区二区三区|在线最新无码经典无码免費資訊|国产午夜亚洲精品国产成人最大

始創(chuàng)于2000年 股票代碼:831685
咨詢熱線:0371-60135900 注冊(cè)有禮 登錄
  • 掛牌上市企業(yè)
  • 60秒人工響應(yīng)
  • 99.99%連通率
  • 7*24h人工
  • 故障100倍補(bǔ)償
全部產(chǎn)品
您的位置: 網(wǎng)站首頁(yè) > 幫助中心>文章內(nèi)容

Oracle 事務(wù)總結(jié)

發(fā)布時(shí)間:  2012/8/21 16:55:07

1、事務(wù)概念:  
 概念:在數(shù)據(jù)庫(kù)中事務(wù)是工作的邏輯單元,一個(gè)事務(wù)是由一個(gè)或多個(gè)完成一組的相關(guān)行為的SQL語(yǔ)句組成,通過事務(wù)機(jī)制確保這一組SQL語(yǔ)句所作的操作要么完全成功執(zhí)行,完成整個(gè)工作單元操作,要么一點(diǎn)也不執(zhí)行。  
  主要特性:確保數(shù)據(jù)庫(kù)的完整性。  
2、事務(wù)的ACID特性  
-
 

  對(duì)一組SQL語(yǔ)句操作構(gòu)成事務(wù),數(shù)據(jù)庫(kù)操作系統(tǒng)必須確保這些操作的原子性,一致性,隔離性,持久性.  
1、  原子性(Atomicity)  
    事務(wù)的原子性是指事務(wù)中包含的所有操作要么全做,要么不做,也就是說所有的活動(dòng)在數(shù)據(jù)庫(kù)中要么全部反映,要么全部不反映,以保證數(shù)據(jù)庫(kù)的一致性。  
2、  一致性(Consistency)  
    事務(wù)的一致性是指數(shù)據(jù)庫(kù)在事務(wù)操作前和事務(wù)處理后,其中數(shù)據(jù)必須滿足業(yè)務(wù)的規(guī)則約束。  
3、  隔離性(Isolation)  
   隔離性是指數(shù)據(jù)庫(kù)允許多個(gè)并發(fā)的事務(wù)同時(shí)對(duì)其中的數(shù)據(jù)進(jìn)行讀寫或修改的能力,隔離性可以防止多個(gè)事務(wù)的并發(fā)執(zhí)行時(shí),由于它們的操作命令交叉執(zhí)行而導(dǎo)致數(shù)據(jù)的不一致性。  
4、  持久性(durability)  
    事務(wù)的持久性是指在事務(wù)處理結(jié)束后,它對(duì)數(shù)據(jù)的修改應(yīng)該是永久的。即便是系統(tǒng)在遇到故障的情況下也不會(huì)丟失,這是數(shù)據(jù)的重要性決定的。  
 
 
3、事務(wù)的控制語(yǔ)句  
   在Oracle數(shù)據(jù)庫(kù)中,沒有提供開始事務(wù)處理語(yǔ)句,所有的事務(wù)都是隱式開始的,也就是說在oracle中,用戶不可以顯示使用命令來開始一個(gè)事務(wù).oracle任務(wù)第一條修改數(shù)據(jù)庫(kù)的語(yǔ)句,或者一些要求事務(wù)處理的場(chǎng)合都是事務(wù)的隱式開始。但是當(dāng)用戶想要終止一個(gè)事務(wù)處理時(shí),必須顯示使用commit和rollback語(yǔ)句結(jié)束。  
  根據(jù)事務(wù)ACID屬性,Oracle提供了如下的事務(wù)控制語(yǔ)句:  
   Set transaction 設(shè)置事物屬性  
   Set constrains  設(shè)置事物的約束模式  
   約束模式是指:在事務(wù)中修改數(shù)據(jù)時(shí),數(shù)據(jù)庫(kù)中的約束立即應(yīng)用于數(shù)據(jù),還是將約束推遲到當(dāng)前事務(wù)結(jié)束后應(yīng)用。  
   Savepoint 在事務(wù)中建立一個(gè)存儲(chǔ)的點(diǎn).當(dāng)事務(wù)處理發(fā)生異常而回滾事務(wù)時(shí),可指定事務(wù)回滾到某存儲(chǔ)點(diǎn).然后從該存儲(chǔ)點(diǎn)重新執(zhí)行。  
   Release  savepoint  刪除存儲(chǔ)點(diǎn)  
   Rollback 回滾事務(wù) 取消對(duì)數(shù)據(jù)庫(kù)所作的任何操作  
   Commit 提交事務(wù) 對(duì)數(shù)據(jù)庫(kù)的操作做持久的保存。  
 
 
  3、1設(shè)置事物的屬性:  
  set transaction語(yǔ)句可用來設(shè)置事物的各種屬性。該語(yǔ)句必須放在事務(wù)處理的第一個(gè)語(yǔ)句.  
也就是說,必須在任何insert、update 、delete語(yǔ)句以及其他的事務(wù)處理。  
  Set transaction的語(yǔ)句可以讓用戶對(duì)事務(wù)的以下屬性進(jìn)行設(shè)置  
    指定事務(wù)的隔離層  
    規(guī)定回滾事務(wù)所使用的存儲(chǔ)空間  
    命名事務(wù)  
 備注:在使用set transaction語(yǔ)句設(shè)置屬性時(shí),對(duì)于規(guī)定回滾事務(wù)所使用的存儲(chǔ)空間的設(shè)置很少使用.對(duì)于命名事務(wù)也非常簡(jiǎn)單,只有在分布式事務(wù)處理中才會(huì)體現(xiàn)出命名事務(wù)的用途.  
 
 注意:set transaction只對(duì)當(dāng)前事務(wù)有效,事務(wù)終止,事務(wù)當(dāng)前的設(shè)置將會(huì)失效。  
 
1、  數(shù)據(jù)異常  
事務(wù)的隔離性定義了一個(gè)事務(wù)與其它事務(wù)的隔離程度.為了更好的理解隔離層,首先討論一下并發(fā)事務(wù)對(duì)同一個(gè)數(shù)據(jù)庫(kù)進(jìn)行訪問可能發(fā)生的情況.在并發(fā)事務(wù)中總體來說會(huì)發(fā)生如下3種情況  
    錯(cuò)讀 |臟讀  
    非重復(fù)讀取|不可重復(fù)讀  
    假讀|幻讀  
 
    錯(cuò)讀|臟讀:當(dāng)一個(gè)事務(wù)修改數(shù)據(jù)時(shí),另一事務(wù)讀取了該數(shù)據(jù),但是第一事務(wù)由于某種原因取消對(duì)數(shù)據(jù)修改,使數(shù)據(jù)返回了原狀態(tài),這是第二個(gè)事務(wù)讀取的數(shù)據(jù)與數(shù)據(jù)庫(kù)中數(shù)據(jù)不一致.這就叫錯(cuò)讀。  
 
   非重復(fù)讀。菏侵敢粋(gè)事務(wù)讀取數(shù)據(jù)庫(kù)中的數(shù)據(jù)后,另一個(gè)事務(wù)則更新了數(shù)據(jù),當(dāng)?shù)谝粋(gè)事務(wù)再次讀取其中的數(shù)據(jù)時(shí),就會(huì)發(fā)現(xiàn)數(shù)據(jù)已經(jīng)發(fā)生了改變,這就是非重復(fù)讀取。非重復(fù)讀取所導(dǎo)致的結(jié)果就是一個(gè)事務(wù)前后兩次讀取的數(shù)據(jù)不相同。  
 
   假讀:如果一個(gè)事務(wù)基于某個(gè)條件讀取數(shù)據(jù)后,另一個(gè)事務(wù)則更新了同一個(gè)表中的數(shù)據(jù),這時(shí)第一個(gè)事務(wù)再次讀取數(shù)據(jù)時(shí),根據(jù)搜索的條件返回了不同的行,這就是假讀。  
 
    事務(wù)中遇到的這些異常與事務(wù)的隔離性設(shè)置有關(guān),事務(wù)的隔離性設(shè)置越多,異常就出現(xiàn)的越少,但并發(fā)效果就越低,事務(wù)的隔離性設(shè)置越少,異常出現(xiàn)的越多,并發(fā)效果越高。  
2、  選擇隔離層  
   針對(duì)3中讀取的數(shù)據(jù)時(shí)產(chǎn)生的不一致現(xiàn)象,在ANSI SQL標(biāo)準(zhǔn)92中定義了4個(gè)事務(wù)的隔離級(jí)別.如下圖所示:  
隔離層 錯(cuò)讀|臟讀   非重復(fù)讀取|不可重復(fù)讀 假讀|幻讀  
READ UNCOMMITTED(非提交讀)  是   是   是  
READ COMMITTED(提交讀) 否   是   是  
Repeatable READ(可重復(fù)讀)   否   否   是  
Serializable(串行讀)   否   否   否  
 
Oracle支持上述四種隔離層中的兩種:read committed 和serializable。除此之外oralce中還定義read only 和 read write隔離層。  
 Read committed 這是Oracle默認(rèn)的隔離層。  
Serializable:設(shè)置事物的隔離層位它時(shí),事務(wù)與事務(wù)之間完全隔開,事務(wù)以串行的方式執(zhí)行,這并不是說一個(gè)事務(wù)必須結(jié)束才能啟動(dòng)另外一個(gè)事務(wù),而是說這些事務(wù)的執(zhí)行的結(jié)果于一次執(zhí)行的事務(wù)的結(jié)果一致。  
 
Read only和 read write 當(dāng)使用read only時(shí),事務(wù)中不能有任何修改數(shù)據(jù)庫(kù)中數(shù)據(jù)的操作語(yǔ)句,這包括 insert、update、delete、create語(yǔ)句。Read only是serializable的一個(gè)子集,區(qū)別是read only 只讀,而serialzable可以執(zhí)行DML操作。Read write它是默認(rèn)設(shè)置,該選項(xiàng)表示在事務(wù)中可以有訪問語(yǔ)句、修改語(yǔ)句.但不經(jīng)常使用.  
 
 
 
3、  建立set transaction的語(yǔ)句  
 列舉如下:  
  Set transaction read only  
  Set transaction read write  
  Set transaction isolation level read committed  
  Set transaction isolation level serializable  
 
注意:這些語(yǔ)句是互斥的.即不能夠同時(shí)設(shè)置兩個(gè)或者兩個(gè)以上的選項(xiàng)。  
 
 
4、  結(jié)束事務(wù):  
什么情況下代表事務(wù)的結(jié)束呢?  
     
1、  Commit 提交事務(wù)  
2、  rollback 回滾事務(wù)    
 
//只讀的案例  
SQL> set transaction read only;  
   
Transaction set  
   
SQL> select * from users where username='mj';  
   
USERNAME      PASSWORD      NAME             ADDRESS             ZIP  
-------------------- -------------------- -------------------- -------------------- -------  
mj                  redarmy          陳紅軍                                   
   
SQL> update users set password='123' where username='mj';  
   
update users set password='123' where username='mj' 
   
ORA-01456: 不能在 READ ONLY 事務(wù)處理中執(zhí)行插入/刪除/更新操作  
 
//臟讀的案例  
SQL> set transaction isolation level read committed;  
   
Transaction set  
   
SQL> select * from users where username='mj';  
   
USERNAME      PASSWORD      NAME             ADDRESS             ZIP  
-------------------- -------------------- -------------------- -------------------- -------  
mj                  redarmy          陳紅軍                                   
   
SQL> update users set password='123' where username='mj';  
   
1 row updated  
   
SQL> select * from users where username='mj';  
   
USERNAME      PASSWORD      NAME             ADDRESS             ZIP  
-------------------- -------------------- -------------------- -------------------- -------  
mj                  123                 陳紅軍                                   
   
SQL> rollback;   
  
 
 


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

服務(wù)器租用/服務(wù)器托管中國(guó)五強(qiáng)!虛擬主機(jī)域名注冊(cè)頂級(jí)提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM]

  • 您可能在找
  • 億恩北京公司:
  • 經(jīng)營(yíng)性ICP/ISP證:京B2-20150015
  • 億恩鄭州公司:
  • 經(jīng)營(yíng)性ICP/ISP/IDC證:豫B1.B2-20060070
  • 億恩南昌公司:
  • 經(jīng)營(yíng)性ICP/ISP證:贛B2-20080012
  • 服務(wù)器/云主機(jī) 24小時(shí)售后服務(wù)電話:0371-60135900
  • 虛擬主機(jī)/智能建站 24小時(shí)售后服務(wù)電話:0371-60135900
  • 專注服務(wù)器托管17年
    掃掃關(guān)注-微信公眾號(hào)
    0371-60135900
    Copyright© 1999-2019 ENKJ All Rights Reserved 億恩科技 版權(quán)所有  地址:鄭州市高新區(qū)翠竹街1號(hào)總部企業(yè)基地億恩大廈  法律顧問:河南亞太人律師事務(wù)所郝建鋒、杜慧月律師   京公網(wǎng)安備41019702002023號(hào)
      0
     
     
     
     

    0371-60135900
    7*24小時(shí)客服服務(wù)熱線