亚洲综合社区欧美综合色-欧美逼逼一区二区三区-国产老熟女高潮精品网站-国产日韩最新视频在线看

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

談?wù)剬?duì)Oracle處理DDL和DML語(yǔ)句的事務(wù)管理

發(fā)布時(shí)間:  2012/8/26 15:43:26

一、先說(shuō)問(wèn)題

在開(kāi)發(fā)過(guò)程中,遇到了Oracle DDL語(yǔ)句和DML語(yǔ)句需要在一個(gè)事務(wù)中一塊處理的情況,該方法要么成功,要么失敗。對(duì)于這個(gè)問(wèn)題,sql server等數(shù)據(jù)庫(kù)是可以解決的,因?yàn)槠淠軐?duì)DDL語(yǔ)句做回滾,而oracle在執(zhí)行ddl語(yǔ)句時(shí)會(huì)先執(zhí)行commit,所以就不能對(duì)DDL語(yǔ)句回滾了。

二、事務(wù)相關(guān)概念
-
 

1、 首先,說(shuō)說(shuō)數(shù)據(jù)庫(kù)對(duì)事務(wù)的相關(guān)定義:

在數(shù)據(jù)庫(kù)中事務(wù)是工作的邏輯單元 , 一個(gè)事務(wù)是由一個(gè)或多個(gè)完成一組的相關(guān)行為的 SQL 語(yǔ)句組成 , 通過(guò)事務(wù)機(jī)制確保這一組 SQL 語(yǔ)句所作的操作要么完全成功執(zhí)行 , 完成整個(gè)工作單元操作 , 要么一點(diǎn)也不執(zhí)行。  事務(wù)具有ACID特性(即:原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation,又稱獨(dú)立性)、持久性(Durability)),ACID的概念在ISO/IEC 10026-1:1992文件的第四段內(nèi)有所說(shuō)明(我找了半天也沒(méi)下載到這個(gè)標(biāo)準(zhǔn),誰(shuí)有的送我一份啊,呵呵)。

2、我機(jī)器的Oracle版本為10g,10g對(duì)應(yīng)的jdbc版本為3?匆幌翵DBC3有關(guān)事務(wù)概念:

JDBC3提到了事務(wù)和分布式事務(wù)。對(duì)于大家經(jīng)常說(shuō)的嵌套事務(wù),沒(méi)有提及。數(shù)據(jù)庫(kù)本質(zhì)上從來(lái)沒(méi)有過(guò)嵌套事務(wù)的概念,只是應(yīng)用程序?yàn)榱瞬煌哪康膶?duì)事務(wù)的操作過(guò)程嵌套起來(lái),即使是Oracle的自治事務(wù)也可劃為應(yīng)用程序(存儲(chǔ)過(guò)程或是觸發(fā)器什么的), 從應(yīng)用角度講,嵌套事務(wù)處理就是應(yīng)用程序如何將應(yīng)用層面的嵌套轉(zhuǎn)變?yōu)閿?shù)據(jù)庫(kù)層面的單事務(wù)操作, 這方面Java領(lǐng)域的EJB,Spring提供了解決方案,另外提一下JTA,它提供了事務(wù)的suspend,resume功能,實(shí)質(zhì)上其實(shí)數(shù)據(jù)庫(kù)事務(wù)那里有什么掛起什么的概念,其僅僅是換了一個(gè)數(shù)據(jù)庫(kù)連接,這樣新的數(shù)據(jù)庫(kù)事務(wù)開(kāi)始了,老的數(shù)據(jù)庫(kù)事務(wù)便不再操作,直接其被resume。)。

那么接下來(lái)我們看看JDBC3中對(duì)事務(wù)的定義:

Transactions are used to provide data integrity, correct application semantics, and a consistent view of data during concurrent access. All JDBC compliant drivers are required to provide transaction support. Transaction management in the JDBC API mirrors the SQL99 specification and includes these concepts:
 Auto-commit mode
 Transaction isolation levels
 Savepoints

三、解決方法

要想解決一個(gè)問(wèn)題,找到問(wèn)題的關(guān)鍵所在,就等于成功了一半。如上所述,該問(wèn)題的關(guān)鍵所在又是什么呢?

Oracle在執(zhí)行ddl語(yǔ)句時(shí)會(huì)先執(zhí)行commit,所以就不能對(duì)DDL語(yǔ)句進(jìn)行回滾。jdbc事務(wù)也不提供相關(guān)方法來(lái)進(jìn)行回滾(spring、ejb或許可以,但沒(méi)測(cè)試過(guò),不好說(shuō))。

既然應(yīng)用的一些框架不能提供該功能,就只能自己想辦法解決了,怎么解決?反向操作!或許感覺(jué)有些麻煩,但不這么做又如何呢,在操作SQL語(yǔ)句成功后,后邊跟著反向操作的定義(內(nèi)部類派上用場(chǎng)了),在一個(gè)大的事務(wù)中,如果出現(xiàn)異常,在異常的地方把反向操作執(zhí)行一把即可。再進(jìn)一步,如果讓所有的DDL語(yǔ)句能和DML語(yǔ)句用不同的數(shù)據(jù)庫(kù)連接,那么DML語(yǔ)句就不用反向操作了,節(jié)省了很多工作量,DML語(yǔ)句用事務(wù)的回滾多好!當(dāng)然這樣做的前提是,在DDL執(zhí)行時(shí),不能和DML操作的資源引起沖突,即鎖的問(wèn)題。


本文出自:億恩科技【1tcdy.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èn):河南亞太人律師事務(wù)所郝建鋒、杜慧月律師   京公網(wǎng)安備41019702002023號(hào)
      1
     
     
     
     

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